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

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


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


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

Выпуск № 189
от 15.07.2003, 12:00

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


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

baldr
Статус: Профессиональный
Общий рейтинг: 112.19
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
valter
Статус: Начальный
Общий рейтинг: 101.98
[Подробней >>]
Andy
Статус: Начальный
Общий рейтинг: 108.05
[Подробней >>]
 
ART_43
Статус: Доверительный
Общий рейтинг: 122.42
[Подробней >>]
URiS
Статус: Опытный
Общий рейтинг: 156.48
URL: Бесплатный любительский софт, игры
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.01
URL: Программирование
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.94
URL: Пристанище неодинокого программиста
[Подробней >>]


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

Вопрос № 773. Здр-те эксперты. Не могу понять как юзать TThread. Мне всего - лишь надо запустить бесконеч. поток (... (ответов: 4)
Вопрос № 774. Уважаемые эксперты, подскажите пожалуйста, как можно удалить все подкаталоги (с файлами) внутри зада... (ответов: 4)
Вопрос № 775. Всем привет! Вот решил сделать оболочку типа NetCaptor'а для IExplorer'a на основе TWebBrowser или з... (ответов: 1)
Вопрос № 776. хайте, эксперты! тема вируса;). Возможно ли в дельфи "приклеиться" к другому файлу, т.е. з... (ответов: 1)
Вопрос № 777. Здравствуйте, эксперты. 1) Тут такое дело: у пунктов меню есть свои картинки Bitmap и быстрый запус... (ответов: 2)
Вопрос № 778. Здравствуйте, эксперты. 1) Делаю процедуру запуска HTML-файла (содержимого Memo1), перед запуском со... (ответов: 3)
Вопрос № 779. Всем привет! Столкнулся с слегка непонятной для меня ситуацией: После того как создал и отослал п... (ответов: 1)

Вопросов: 7, ответов: 16


 Вопрос № 773

Здр-те эксперты.
Не могу понять как юзать TThread. Мне всего - лишь надо запустить бесконеч. поток (ну иногда его терминатить).
Вот добавляю в проект File\New\Other-->Thread Object, обзываю его нехорошими словами, появл. модуль этого потока, в кот. функция Execute.
Так вот: подскажите плз как запустить его на выполнение и как убить его.
Спасибо.



Вопрос отправлен: 10.07.2003, 13:37
Отправитель: Alexander (serious_alex@mail.ru)

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

Отвечает baldr

Приветствую Вас, Alexander!
Ну вот, ты получил шаблон класса. Теперь тебе надо перегрузить его метод Execute - обязательно. Можно еще и Create, если ты хочешь его как-то инициализировать.
В Execute ты делаешь цикл, который и будет выполняться. Как только Execute возвратится - поток прервется. Кстати, в цикле надо проверять свойство Terminated (кажется) и если оно True - выходить.

Ответ отправлен: 10.07.2003, 17:01
Отправитель: baldr


Отвечает valter

Добрый день, Alexander!
Для создания потока следует наследовать класс от TThread:
type
TMyThread = class(TThread)
protected
procedure Execute; override; // здесь и будет выполняться цикл
public
constructor Create; reintroduce;
destructor Destroy; override;
end;
В перекрытом методе Execute следует выполнять цикл:
procedure TMyThread.Execute;
begin
while true do
begin
// ... тело цикла
end;
end;
И объявить конструктор:
constructor TMyThread.Create;
begin
inherited Create(false);
FreeOnTerminate:=true; // это освободит поток при остановке
// здесь поместить код инициализации
end;
и деструктор:
destructor TMyThread.Destroy;
begin
// здесь поместить код финализации
inherited Destroy;
end;
Теперь нужно объявить глобальную переменную:
MyThread: TMyThread;
Она нам нужна, если мы принудительно захотим завершить поток.
Для запуска потока достаточно выполнить:
MyThread:=TMyThread.Create;
Если наш поток нужно прервать и освободить, то достаточно выполнить:
MyThread.Terminate;
После этой команды наш поток сам освободится, то есть не нужно вызывать метод Free.
В пакете Delphi (в том числе и в справке) есть хорошие примеры по использованию потоков.

Ответ отправлен: 10.07.2003, 18:08
Отправитель: valter


Отвечает Andy

Приветствую Вас, Alexander!
Thread.Create(false); // Запустить
Thread.Termitate; // Остановить
А в Thread.Execute расположен код "нити"...
А вообще смотри хелп ибо он рулез...

Ответ отправлен: 11.07.2003, 08:46
Отправитель: Andy


Отвечает ART_43

Приветствую Вас, Alexander!
Смотри "C:Program FilesBorlandDelphi6DemosThreads"

Ответ отправлен: 11.07.2003, 09:35
Отправитель: ART_43


 Вопрос № 774

Уважаемые эксперты, подскажите пожалуйста, как можно
удалить все подкаталоги (с файлами) внутри заданного
каталога.



Вопрос отправлен: 10.07.2003, 19:42
Отправитель: Сергей

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

Отвечает URiS

Доброе время суток, Сергей!
Нужно сначала сделать эти каталоги пустыми(т.е. удалить из них все файлы и папки). А затем удаляешь... :)

*EMan1.4 © Bob Johnson | Expert: URiS (newff.narod.ru)


Ответ отправлен: 11.07.2003, 12:34
Отправитель: URiS


Отвечает Bob Johnson

Здравствуйте, Сергей!
Программно? Только самому, последовательным поиском и удалением.
Не программно? В Windows XP можно так: rd /S /Q имя подкаталога.

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 10.07.2003, 23:11
Отправитель: Bob Johnson


Отвечает Andy

Добрый день, Сергей!
Например так:
if NOT MyRemoveDir('C:TestDir') then
ShowMessage('Не могу удалить эту директорию');

Приложение:

Ответ отправлен: 11.07.2003, 09:18
Отправитель: Andy


Отвечает ART_43

Приветствую Вас, Сергей!
Пример взят с какого-то сайта, сейчас уже не помню с какого.

Приложение:

Ответ отправлен: 11.07.2003, 09:47
Отправитель: ART_43


 Вопрос № 775

Всем привет!
Вот решил сделать оболочку типа NetCaptor'а для IExplorer'a на основе TWebBrowser или заполняльщик форм на основе тоже какихнибудь и-нет компонентов. Не знаю куда копать. Или исходники толковые нужны. Помогите кто чем может.
{Delphi}



Вопрос отправлен: 10.07.2003, 22:18
Отправитель: KODer (koder@hotmail.ru)

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

Отвечает URiS

Здравствуйте, KODer!
Если тебе нужны для этого исходники, тогда, IMHO, ты замахнулся слишком далеко.

*EMan1.4 © Bob Johnson | Expert: URiS (newff.narod.ru)


Ответ отправлен: 11.07.2003, 21:08
Отправитель: URiS


 Вопрос № 776

хайте, эксперты!
тема вируса;).
Возможно ли в дельфи "приклеиться" к другому файлу,
т.е. записаться в его начало, запускать себя, потом тот,
который записан после него? Раньше у меня был компонент
какой-то для этого, только я название забыл:(, всётаки,
как приклииться?



Вопрос отправлен: 11.07.2003, 12:25
Отправитель: Zensor (zasm@mail.ru)

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

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

Приветствую Вас, Zensor!

Конечно, можно - за примерами далеко ходить не нужно - те же упаковщики и протекторы делают такое. Кроме того, можно модифицировать сам код, тем более, что в секции .text, как правило, места остаётся вагон - туда и можно вписаться, заменив точку входа (или, по крайней мере, перенести часть оригинального кода из точки входа).

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


 Вопрос № 777

Здравствуйте, эксперты.
1) Тут такое дело: у пунктов меню есть свои картинки
Bitmap и быстрый запуск ShortCut. Но если у какого-либо
пункта меню картинка отсутствует, то запись, например,
Ctrl+A у ShortCutа съезжает в сторону, что очень не
красиво. Как можно это исправить ???
2) А как можно файл JPG в BMP переделать ? Я нашел процедуру
как преобразовать наоборот BMP в JPG, но подстроить ее так
и не могу, постоянные ошибки.
Всем заранее спасибо !!!



Вопрос отправлен: 11.07.2003, 13:39
Отправитель: SATAN aka NAPALM

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

Отвечает Bob Johnson

Доброе время суток, SATAN aka NAPALM!
1. Сделай пустую картинку и установи ее для всех остальных пунктов меню (но я как-то не замечал, чтобы что-то уезжало при отсутствии картинки). Еще можешь скачать коммпоненты TToolBar97 или TToolBar2000 и использовать их вместо меню.
2. В Delphi, начиная с 4-го (кажется) есть класс TJpegImage, который позволяет делать именно то, что тебе нужно. Вот пример его использования (для С++ билдера):

TResourceStream *rs = new TResourceStream (0, 1, RT_RCDATA);
TJPEGImage *jp = new TJPEGImage;
jp->LoadFromStream (rs);
i1->Picture->Assign (jp);
delete rs;
delete jp;

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 11.07.2003, 16:33
Отправитель: Bob Johnson


Отвечает URiS

Доброе время суток, SATAN aka NAPALM!
2) Пользуйся сторонними компонентами.

*EMan1.4 © Bob Johnson | Expert: URiS (newff.narod.ru)


Ответ отправлен: 11.07.2003, 21:08
Отправитель: URiS


 Вопрос № 778

Здравствуйте, эксперты.
1) Делаю процедуру запуска HTML-файла (содержимого Memo1),
перед запуском содержимое сохраняется во временный файл c
расширением .tmp, потом файл переменовывается и должен
запускается, но этого не происходит. Почему ?
procedure TfHTML.mnuFileDoHTMLClick(Sender: TObject);
Var S: String;
begin
Memo1.Lines.SaveToFile('TmpHTML.tmp');
S:=ChangeFileExt('TmpHTML.tmp', '.htm');
ShellExecute(Handle, 'Open', pChar(S),'','',SW_SHOWNORMAL);
end;
2) И как можно удалить установленные дополнительные
библиотеки или компоненты (в частности RXLib и EhLIB)
чтобы их компонентов не было видно на палитре, без
перестановки Delphi ???
Всем заранее спасибо !!!



Вопрос отправлен: 11.07.2003, 13:39
Отправитель: SATAN aka NAPALM

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

Отвечает ART_43

Доброе время суток, SATAN aka NAPALM!
1. А где RenameFile() ?
ChangeFileExt() просто выдает имя файла с измененным расширением, а самого файла она не касается
2. Component->Install Packages...

Ответ отправлен: 11.07.2003, 15:11
Отправитель: ART_43


Отвечает URiS

Добрый день, SATAN aka NAPALM!
1) Ну и намудрил ты!
Функция ChangeFileExt переименовывает только строчку(S), а не файл!
Вот как надо:
Var S: String;
begin
s:='c:TmpHTML.htm';
Memo1.Lines.SaveToFile(s);
ShellExecute(Handle, 'Open','explorer.exe',pchar(s),'c:',SW_SHOWNORMAL);
end;
2) Через Панель управления. Если там нет, то отключаешь и удаляешь сам.
Пожалуйста!

*EMan1.4 © Bob Johnson | Expert: URiS (newff.narod.ru)


Ответ отправлен: 11.07.2003, 21:08
Отправитель: URiS


Отвечает Bob Johnson

Доброе время суток, SATAN aka NAPALM!
1. Если у тебя нормально создается и переименовывается файл (кстати, а почему бы тебе не создавать его сразу с расширением html?), то попробуй запускать вот так:
ShellExecute (Handle, 0, PChar (S), 0, 0, SW_SHOWDEFAULT);
2. Запускаешь delphi, меню "component", "install packages", выбираешь из списка тот (те), в котором содержится компонент для удаления и нажимаешь кнопку "remove". Все.

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 12.07.2003, 00:40
Отправитель: Bob Johnson


 Вопрос № 779

Всем привет!
Столкнулся с слегка непонятной для меня ситуацией:
После того как создал и отослал письмо используя MApiSendMail(...) оно(письмо) появляется в "Microsoft Outlook" в папке "Исходящие" и там и висит не изьясняя никакого желания отправлятся, а вот через "Outlook Express" все чудненько бегает...
Не подскажете в чем проблема?



Вопрос отправлен: 11.07.2003, 21:57
Отправитель: Savich

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

Отвечает URiS

Приветствую Вас, Savich!
MApiSendMail использует почтовый клиент для отправки писем.
Чтобы самому отсылать письма используй TnmSMTP во вкладке Internet.

*EMan1.4 © Bob Johnson | Expert: URiS (newff.narod.ru)


Ответ отправлен: 12.07.2003, 17:32
Отправитель: URiS



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (34)
C / C++ (22)
Perl (5)
Builder / Delphi (16)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (11)
PHP (9)
MySQL / MSSQL (8)
Криптография (6)
WinAPI (8)
Пользователю
Windows 95/98/Me (33)
Windows NT/2000/XP (27)
"Железо" (24)
Поиск информации (17)
Администратору
Windows NT/2000/XP (15)
Linux / Unix (5)
Юристу
Гражданское право (10)
Семейное право (5)
Трудовое право (9)
КоАП (5)

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




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


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

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

В избранное