Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 239
от 01.11.2003, 20:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1076
Отправлено ответов: 2235
Активность: 207.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Cybernetic Creature
Статус: Профессиональный
Общий рейтинг: 132.41
URL: В разработке
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.67
URL: Пристанище неодинокого программиста
[Подробней >>]
sir henry
Статус: Опытный
Общий рейтинг: 159.28
[Подробней >>]
 
THE_PRO
Статус: Опытный
Общий рейтинг: 140.76
URL: THE_PRO
[Подробней >>]
CJ
Статус: Доверительный
Общий рейтинг: 124.81
[Подробней >>]
Boriss
Статус: Доверительный
Общий рейтинг: 137
[Подробней >>]
 
samum2000
Статус: Доверительный
Общий рейтинг: 129.48
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1068. Здравствуйте! Подскажите пожалуста как можно сделать компонент на основе TCustomEdit, что-бы в нем б... (ответов: 4)
Вопрос № 1069. Уважаемые эксперты, здравствуйте. У меня есть несколько вопросов: 1) Как удалить все файлы и папки (... (ответов: 5)
Вопрос № 1070. Уважаемые ЭКСперты! Здрасте... :) Подскажите плз как получть список всех папок в дирректории програм... (ответов: 4)
Вопрос № 1071. Уважаемые эксперты!! Огромное ВАм спасибо за помощь и терпение к таким чайникам как я.Если позволите... (ответов: 3)
Вопрос № 1072. Уважаемые эксперты!! Это опять я.Почему у бестолкового не рисуется линия. Спасибо.... (ответов: 4)
Вопрос № 1073. Может кто подскажет - при создании компонента, надо убедиться, что компонент создаваемого типа на ф... (ответов: 1)

Вопросов: 6, ответов: 21


 Вопрос № 1068

Здравствуйте! Подскажите пожалуста как можно сделать компонент на основе TCustomEdit, что-бы в нем была возможность отображения разноцветного текста (как например в TRichEdit). Может у кого есть готовый компонент?
Помогите Please!!! Заранее спасибо.



Вопрос отправлен: 28.10.2003, 08:14
Отправитель: Andrey

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Здравствуйте, Andrey!
в TCustomEdit это по моему не возможно
можно сделать при помощи TRichedit
отключаем кнопки вниз вверх ЕНТЕР
размеры делаем подобоющие
и все похож на Едит а на самом деле РичЕдит

Ответ отправлен: 29.10.2003, 20:28
Отправитель: Cybernetic Creature


Отвечает Артём Шегеда

Здравствуйте, Andrey!

Проблема раскраски текста, в принципе, решается использованием TRichEdit, однако, в ряде задач использование компоненты с возможностью редактирования текста не оправдано. Я сначала использовал ThtmlLite - мощная компонента для отображения HTML-текста, который можно загрузить как из файла, так и сгенерировать динамически. Позже попробовал TRichView - очень удобная компонента для отображения статического текста (со вставками изображений) с использованием стилей. Обе компоненты freeware. Взять можно на Torry.NET

Ответ отправлен: 28.10.2003, 13:14
Отправитель: Артём Шегеда


Отвечает sir henry

Приветствую Вас, Andrey!
Нужно заглянуть на:
www.torry.net
www.delphimaster.ru
www.delphikingdom.com
там самые большие сборники компонентов.

Ответ отправлен: 28.10.2003, 09:29
Отправитель: sir henry


Отвечает THE_PRO

Здравствуйте, Andrey!
Takoy komponent yest v http://programmersheaven.com

Ответ отправлен: 28.10.2003, 09:08
Отправитель: THE_PRO


 Вопрос № 1069

Уважаемые эксперты, здравствуйте.
У меня есть несколько вопросов:
1) Как удалить все файлы и папки (включая вложенные) с диска "А", т.е. флоппика?
2) Как скопировать и удалить файл с любой директории?
3) Как обнулить кэш флоппика? (Этот вопрос я уже задавал, но ответ так и не получил).



Вопрос отправлен: 28.10.2003, 22:02
Отправитель: Стафеев Сергей

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Здравствуйте, Стафеев Сергей!
{
Здесь я привожу немного сокращенный код, который я создавал для Borland
Pascal 5.5 под DOS (оригинальный код не делал rmDir, поэтому вы можете
поэкспериментировать с этим, передав указатель на каталог функции rmDir
в конце этого кода). Я подозреваю, что Delphi-версия может быть или
идентичной, или иметь некоторые различии в написании имен функций
(рекомендую ознакомиться с электронной документацией по Delphi, с темой,
где описаны функции для работы с файлами). Данный код не предусматривает
проверку атрибутов файлов, которые могут быть установлены для
предотвращения удаления файла. (В Pascal 5.5 вам необходимо между парой
{$I-}{$I+} {поместить функцию, которая вызывает проблему, не знаю,
делаете ли вы это в Delphi.)
}
procedure removeTree(DirName: string);
var
FileSearch: SearchRec;
begin
{ для начала пробегаемся, и удаляем все файлы }
chDir(DirName);
FindFirst('*.*', Directory, FileSearch);
while (DosError = 0) do
begin
if (FileSearch.name <> '.') and (FileSearch.name <> '..') and
((FileSearch.attr and Directory) <> 0) then
begin
if DirName[length(DirName)] = '' then
removeTree(DirName + FileSearch.Name)
else
removeTree(DirName + '' + FileSearch.Name);
ChDir(DirName);
end;
FindNext(FileSearch)
end;
{ затем пробегаемся, и удаляем все каталоги }
FindFirst('*.*', AnyFile, FileSearch);
while (DosError = 0) do
begin
if (FileSearch.name <> '.') and (FileSearch.name <> '..') then
Remove(workdir);
end;
FindNext(FileSearch)
end;
rmDir(DirName)
end;

Ответ отправлен: 29.10.2003, 20:32
Отправитель: Cybernetic Creature


Отвечает CJ

Добрый день, Стафеев Сергей!
Используй простые процедуры удаления файлов!
Чтобы скопировать-CopyFile!
А про кэш тебе уже отвечали, что надо использовать API-функцию!

Ответ отправлен: 28.10.2003, 22:16
Отправитель: CJ


Отвечает Boriss

Доброе время суток, Стафеев Сергей!
1) Два варианта: а) создайте текстовый файл, напишите в нем
format a:, или del a:*.*, сохраните как .bat файл и запустите хотя бы WinExec. Второй смотри в приложении
2) Находить файлы и MoveFile также, как в предыдущем
3) Кэш флопика? Зачем?

Приложение:

Ответ отправлен: 29.10.2003, 09:32
Отправитель: Boriss


Отвечает samum2000

Здравствуйте, Стафеев Сергей!
1. Чтобы очистить диск, можно использовать процедуру deletedir (см. приложение)
2. Для копирования файла я предлагаю воспользоваться процедурами windows (не забудь указать в Uses модуль ShellApi)


Приложение:

Ответ отправлен: 30.10.2003, 11:05
Отправитель: samum2000


Отвечает sir henry

Добрый день, Стафеев Сергей!
В модуле WinAPI есть хорошая функция для файловых операций:
SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer;
Структура TSHFileOpStruct довольно большая, ленюсь его описывать :), самые главные в данном случае поле:
wFunc - тип производимой операции:
FO_COPY копировать файл.
FO_MOVE переместить файл.
FO_DELETE удалить файл.
FO_RENAME переименовать файл.
pFrom - указатель на строку с именем исходного файла.

Ответ отправлен: 29.10.2003, 07:22
Отправитель: sir henry


 Вопрос № 1070

Уважаемые ЭКСперты!
Здрасте... :)
Подскажите плз как получть список всех папок в дирректории программы. Заранее спасиобо..



Вопрос отправлен: 29.10.2003, 06:19
Отправитель: D.M. (m2dm@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Добрый день, D.M.!
var
F: TSearchRec;
Path: string;
Attr: Integer;
begin
Path := 'e:audio';
Attr := faDirectory;
FindFirst(Path, Attr, F);

if F.name <> '' then
begin
ListBox1.Items.Add(F.name);
while FindNext(F) = 0 do
ListBox1.Items.Add(F.name);
end;
FindClose(F);
end.


Ответ отправлен: 29.10.2003, 20:32
Отправитель: Cybernetic Creature


Отвечает sir henry

Доброе время суток, D.M.!
С помощью функций:
FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;
FindNext(var F: TSearchRec): Integer;
FindClose(var F: TSearchRec);
TSearchRec - это запись сведения о файле,
attr - набор аттрибутов файла,
path - путь с шаблоном поиска.
Первая функция ищет первый файл по заданному шаблону, фторая функция продолжает поиск, третья - поиск завершает.

Приложение:

Ответ отправлен: 29.10.2003, 06:53
Отправитель: sir henry


Отвечает samum2000

Здрасьте, D.M.! :)
Во-первых, вам надо определить путь к папке вашего приложения. Это делается при помощи функции paramstr(0).
Во-вторых, используя функции findfirst и findnext с аттрибутами faDirectory получаете список всех папок в дирректории программы.


Ответ отправлен: 30.10.2003, 11:02
Отправитель: samum2000


Отвечает Boriss

Приветствую Вас, D.M.!
Сначала узнаем, откуда запущена программа. Можно:
1) GetDir(0, S); S - string
2) S:=ExtractFileDir(ParamStr(0));
Затем S:=S+'*.*'; и sr: TSearchRec;
и как описано в примере для FindFirst, но со вторым параметром faDirectory.
В конце не забудьте FindClose(sr);


Приложение:

Ответ отправлен: 30.10.2003, 16:53
Отправитель: Boriss


 Вопрос № 1071

Уважаемые эксперты!!
Огромное ВАм спасибо за помощь и терпение к таким чайникам как я.Если позволите задам еще вопрос.Есть идея сделать термометр но чтобы температура отображалась как на самописце
т.е. рисовался некий график и возможно ли это сделать не слишком углубляясь в дебри языка т.к. я много еще не понимаю(в голове опилки и длинные слова меня только растраивают).И если не трудно киньте ссылку на кокой нибудь электронный учебник для чайников.
С уважением Антон.



Вопрос отправлен: 29.10.2003, 06:40
Отправитель: антон (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Приветствую Вас, антон!
>возможно ли это сделать не cлишком углубляясь в дебри языка
Это зависит от того, насколько функциональным ты хочешь сделать свой термометр. В любом случае, если не найдешь подходящих компонент, придется освоить рисование на канве (TCanvas).
>И если не трудно киньте ссылку на кfкой нибудь электронный учебник
>для чайников
Не хотелось бы тебя огорчать, но лично я в I-net'e не всречал стоящих учебников :(

Ответ отправлен: 30.10.2003, 11:05
Отправитель: samum2000


Отвечает Boriss

Доброе время суток, антон!
На закладке Additional есть компонент Chart. Очен удобен для решения Вашей задачи. Как его применять, есть пример в Demos/TeeChart.
Насчет электронного чего-нибудь: много есть, например, www.delphimaster.ru


Ответ отправлен: 29.10.2003, 08:52
Отправитель: Boriss


Отвечает sir henry

Приветствую Вас, антон!
Если вопрос стоит в том, что необходимо накапливать данные с термометра, а потом показывать их в виде графика, то необходимо изучит работу с базами данных и рисование. Вот ссылки:
www.masterdelphi.ru - сборник статей и компонентов
www.delphikingdom.com - сборник статей и компонентов
www.delphiworld.narod.ru - сборник статей

Ответ отправлен: 29.10.2003, 08:55
Отправитель: sir henry


 Вопрос № 1072

Уважаемые эксперты!!
Это опять я.Почему у бестолкового не рисуется линия.
Спасибо.


Приложение:


Вопрос отправлен: 29.10.2003, 06:54
Отправитель: антон (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Здравствуйте, антон!
Это опять я. Наверное, надо было обрабатывать не OnCreate, а OnPaint. Во всяком случае в справке написано "Any special painting on the form should be done in this event" (т.е. все рисования должны проводится в обработчике этго события), хотя в обработчиках событий типа OnClick можешь спокойно рисовать.

Ответ отправлен: 30.10.2003, 10:59
Отправитель: samum2000


Отвечает Boriss

Приветствую Вас, антон!
Формы, как таковой еще нет. Нужно делать это, по крайней мере, в
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.LineTo(20,50);
end;

Ответ отправлен: 29.10.2003, 08:26
Отправитель: Boriss


Отвечает Cybernetic Creature

Приветствую Вас, антон!
MoveTo(20,50);
LineTo(80,80);

Ответ отправлен: 29.10.2003, 20:33
Отправитель: Cybernetic Creature


Отвечает sir henry

Добрый день, антон!
Наверно Вы ее слишком рано рисуете. Попробуйте ввести процедуру рисования не во время, а после создания формы :).

Ответ отправлен: 29.10.2003, 08:08
Отправитель: sir henry


 Вопрос № 1073


Может кто подскажет - при создании компонента, надо убедиться, что компонент создаваемого типа на форме в
единственном числе. Для этого:
constructor TMyComponen.Create( AOwner: TComponent );
var i: integer;
begin
for i := 0 to aOwner.ComponentCount - 1 do
if AOwner.Components[i] is TMyComponen then
raise Exception.Create( 'The form has already one ' + ClassName );
inherited;
...
//создание переменных
end;
Но при этом, в режиме csDesigning вместо моего сообщения об ошибке появляется абсолютно другое сообщение, а в runtime
режиме, выдаётся моё сообщение, а затем, минуя обработчик исключений(!), попадает в destructor.
Есть какой-нибудь более пристойный способ?

ps: пока остановился на том, что вместо вызова исключения, вызываю:
self:=AOwner.Components[i];
exit;



Вопрос отправлен: 29.10.2003, 15:41
Отправитель: Владимир

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Добрый день, Владимир!
1. Какое сообщение выдается во время разработки?
2. Ваше сообщение - это 'The form has already one '? Так у Вас нет никакого обработчика исключений. Raise создает исключение, а обрабатывает исключение блок try .. except или try .. finally. Raise Вам нужно использовать внутри одного из этих блоков, тогда пойдет в работу кусок кода который расположен между except .. end или finally .. end.
Разумнее было бы завести счетчик компонентов. И тогда, при создании нового компонента, проверять счетчик и, по результатам проверки, предпринимать то или иное действие :).

Ответ отправлен: 30.10.2003, 04:55
Отправитель: sir henry



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (31)
C / C++ (24)
Perl (3)
Builder / Delphi (22)
Pascal (20)
Basic / VBA (6)
Java / JavaScript (6)
PHP (11)
Криптография (8)
WinAPI (11)
Пользователю
Windows 95/98/Me (45)
Windows NT/2000/XP (59)
"Железо" (36)
Поиск информации (27)
Администратору
Windows NT/2000/XP (35)
Linux / Unix (13)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (6)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное