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

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


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

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

Выпуск № 376
от 26.08.2004, 22:20

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


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

Slider
Статус: Доверительный
Общий рейтинг: 127.85
[Подробней >>]
CrackLab
Статус: Опытный
Общий рейтинг: 121.98
[Подробней >>]


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

Вопрос № 1761. как запустить процедуру в отдельном потоке? необходимо чтобы отдельная процедура программы (архивиро... (ответов: 2)
Вопрос № 1762. Здравствуйте. Я уже посылал Вам вопрос об отправке письма через NMSMTP. Я понял как отослать HTML-пи... (ответов: 1)
Вопрос № 1763. Здравствуйте. Как можно выполнить авторизацию и вход на почтовый ящик через компонент NMSMTP, чтобы ... (ответов: 1)
Вопрос № 1764. Здравствуйте Эксперты. Помогите пожалуйста со следующим вопросом по Delphi: Как сохранить элементы д... (ответов: 1)

Вопросов: 4, ответов: 5


 Вопрос № 1761

как запустить процедуру в отдельном потоке?
необходимо чтобы отдельная процедура программы (архивирование) выполнялась в отдельном потоке, для того чтобы не мешать выполнению самой программы. если Вас не затруднит приведите пример кода. Заранее благодарен.


Приложение:


Вопрос отправлен: 22.08.2004, 22:14
Отправитель: Renard

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

Отвечает Slider

Доброе время суток, Renard!


Ответ отправлен: 26.08.2004, 10:16
Отправитель: Slider


Отвечает CrackLab

Доброе время суток, Renard!
Используйте класс TThread. Вот я отвечал на похожий вопрос и приводил объяснения и пример на BCB. Думаю переведете на D6:
"Поробую объяснить как можно короче и понятнее.
Когда вы пытаетесь создать объект класса TThread, вы наверно пишете:
TThread *trd = new TThread();
В этом случае компилятор выдаст вам 2 ошибки, сказав, что во-первых, невозможно создать образец абстрактного класса TThread, и во во-вторых, что класс является абстрактным, потому что есть функция, определенная как:
__fastcall TThread::Execute() = 0;
Функция TThread::Execute() является чистой виртуальной функцией, т.е. не имеет тела (кода) внутри класса TThread.
Чистая виртуальная функция объявляется как:
ClassName::FuncName(params) = 0;
Если в классе есть хотя бы одна виртуальная функция, то такой класс называется абстрактным.
Невозможно создавать объекты абстрактного класса. Необходимо наследовать абстрактный класс, объяв ить в нем ту функцию, которая в родительском классе является виртуальной, и при необходимости добавить конструктор, передающий параметры конструктору родительского класса.
Поэтому мы должны унаследовать свой класс от TThread.
В .h файле создадим такой класс:
class TDerivedThread : public TThread
{
void __fastcall Execute();
};
и попытаемся динамически создать объект этого класса:
TDerivedThread *trd = new TDerivedThread();
Увидим сообщение об ошибке, что компилятор не может сгенерировать конструктор по умолчанию для объекта класса TDerivedThread
Создадим конструктор:
class TDerivedThread : public TThread
{
void __fastcall Execute();
public:
TDerivedThread() {};
};
Увидим сообщение об ошибке, что невозможно инициализировать базовый класс TThread. Это происходит потому, что при наследовании и создании объекта, будут вызываться конструкторы всех базовых классов, начиная со старшего. Т.е. в нашем случае при создании объекта клас са TDerivedThread будет вызван конструктор классса TThread.
Конструктор класса TThread определен как:
__fastcall TThread(bool CreateSuspended);
Т.е. проблема в том, что он требует параметр bool CreateSuspended. Но при создании класса TDerivedThread мы этот параметр не передаем.
Принято соглашение о том, как поступать в этой ситуации.
Конструктору "самого дочернего" класса передаются все параметры, необходимые для передачи конструкторам базовых классах, и эти параметры передаются конструкторам базовых классов в такой форме (на примере TThread):
TDerivedThread(bool CreateSuspended):TThread(CreateSuspended)
{
};
Т.е. ставится двоеточие, потом имя базового класса (оно же - имя конструктора базового класса) и в скобках необходимые параметры для передачи, которые берутся из параметров конструктора дочернего класса. После такого объявления конструктора класса TDerivedThread и динимического создания объекта этого класса:
TDerivedThread *trd = new TDerivedThread(false);
Останется только реализовать тело функции Execute(), иначе мы получим ошибку (Linker Error)
В теле функции Execute() и напишем код, который будет вызываться конструктором класса TThread (автоматически) и будет выполняться в отдельном потоке.
Т.е. остается дописать:
void __fastcall TDerivedThread::Execute()
{
// Наши действия
}
И программа будет работать. Надеюсь объяснил понятно =)"

Ответ отправлен: 22.08.2004, 22:25
Отправитель: CrackLab


 Вопрос № 1762

Здравствуйте.
Я уже посылал Вам вопрос об отправке письма через NMSMTP.
Я понял как отослать HTML-письмо(в виде HTML), но как сделать так, чтобы gif-рисунки в HTML тоже отправлялись?
Ведь отправляется только текст в поле NMSMTP1->PostMessage->Body->Text, куда я записываю текст HTML-странички, а как быть с рисунками?
Заранее спасибо.
Компилятор BuilderC++.



Вопрос отправлен: 23.08.2004, 10:30
Отправитель: der

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

Отвечает Slider

Приветствую Вас, der!
попробуй в тексте тегами сделать ссылочки на рисунки....

Ответ отправлен: 26.08.2004, 10:18
Отправитель: Slider


 Вопрос № 1763

Здравствуйте.
Как можно выполнить авторизацию и вход на почтовый ящик через компонент NMSMTP, чтобы после этого работать с почтовым ящиком(удалять, посылать письма), например на mail.ru?
Спасибо.



Вопрос отправлен: 23.08.2004, 15:18
Отправитель: swed

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

Отвечает Slider

Добрый день, swed!
ХЕЛП ПОЧИТАЙ!


Ответ отправлен: 26.08.2004, 10:23
Отправитель: Slider


 Вопрос № 1764

Здравствуйте Эксперты.
Помогите пожалуйста со следующим вопросом по Delphi:
Как сохранить элементы двух TreeView в одном файле через FileStream, а потом считать?
Я пытался сделать это сам, но не получилось, выдается ошибка.
Посмотрите приложение:
function TMainForm.TreeLoad(Name: String): Boolean;
var fs: TFileStream;
begin
fs := TFileStream.Create(Name, fmOpenRead);
TreeView1.LoadFromStream(fs);
TreeView2.LoadFromStream(fs);
fs.Free;
TreeView1.Items.Item[0].Selected:= true;
TreeView1.Items.Item[0].Expand(false);
ShowMessage('OK');
end;
function TMainForm.TreeSave(Name: String): Boolean;
var fs: TFileStream;
begin
fs := TFileStream.Create(Name, fmcreate);
TreeView1.SaveToStream(fs);
TreeView1.SaveToStream(fs);
fs.Free;
end;
Основная цель - сохранить все в один поток.
И если можно, как в конец еще добавить считывание и загрузку строки (например S : Stream)?



Вопрос отправлен: 23.08.2004, 22:15
Отправитель: Trubler (Stafeev@ok.kz)

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

Отвечает Slider

Здравствуйте, Trubler!
fmOpenRead....ты для чтения открываешь файло...

Ответ отправлен: 26.08.2004, 10:30
Отправитель: Slider



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (24)
C / C++ (15)
Perl (6)
Builder / Delphi (14)
Pascal (25)
Basic / VBA (5)
Java / JavaScript (6)
PHP (11)
Криптография (7)
WinAPI (11)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (60)
"Железо" (41)
Поиск информации (19)
Администратору
Windows NT/2000/XP (41)
Linux / Unix (17)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (5)

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




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


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

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное