![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с Excel в потоке [D7, 2003]
Вася567 © (2006-05-06 10:02:00)Проблема вот в чем: создаю поток.
type
TMyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
procedure TMyThread.Execute;
var
Excel: Variant;
begin
Excel := CreateOleObject('Excel.Application');
end;
Вот так его вызываю:
procedure TForm1.Button2Click(Sender: TObject);
var
MyThread: TMyThread;
begin
MyThread := TMyThread.Create(True);
MyThread.Resume;
end;
Не работает строка Excel := CreateOleObject('Excel.Application');
Причем никаких ошибок не выдает. Просто выходит из процедуры.
Хотя безо всяких поток все отлично работает:
procedure TForm1.Button1Click(Sender: TObject);
var
Excel: Variant;
begin
Excel := CreateOleObject('Excel.Application');
end;
Можно ли работать с Excel'ем в потоке?
balepa (2006-05-06 12:59:00) [1]
> Вася567 (06.05.06 12:03) [4]
> Рано я обрадовался.
> Возникли еще две проблемы
> 1. В потоке не работает функция ShowMessage.
Пользуйся MessageBox
> 2. Если включены строки CoInitialize и CoUninitialize, то
> не запускаются другие медоты потока с помощью Synchronize.
Поясните плз. А лучше кусок кода
Вася567 (2006-05-06 12:03:00) [2]Рано я обрадовался.
Возникли еще две проблемы
1. В потоке не работает функция ShowMessage.
2. Если включены строки CoInitialize и CoUninitialize, то не запускаются другие медоты потока с помощью Synchronize.
Вася567 (2006-05-06 10:52:00) [3]Здорово! Работает! Спасибо.
А еще я нашел теорию по этому вопросу, если кому надо
http://podgoretsky.com/ftp/Docs/Delphi/DX/COMmodel.html
balepa (2006-05-06 10:25:00) [4]Поправлюся
CoInitialize;
CoUninitialize
balepa (2006-05-06 10:21:00) [5]CoInitialization в ActivX
CoUnitialization после завершения работы с Excel