Mam taki problem, potrzebuje eksportować dane do Excela. Danych jest dość sporo a nie chciał bym żeby w tym czasie aplikacja była zablokowana dlatego chciałbym aby eksport odbywał się w tle.
Wcześnie eksport odbywał się bez wątku, trzeba było czekać ale wszystko działało bez problemu. Dorzuciłem do programu wątek i wszystko się sypie. Oczywiście kiedy zadam wątkowi wykonywanie innych czynność niż wypełnianie excel'a wszystko działa poprawianie.
Oto źródło(program zawiera tylko przycisk Button1):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math, Excel2000, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TExpExcel = class(TThread)
private
Excel: Variant;
protected
procedure Execute; override;
public
end;
var
Form1: TForm1;
ExpExcel: TExpExcel;
implementation
procedure TExpExcel.Execute;
begin
FreeOnTerminate := true;
begin
Excel:=CreateOleObject('Excel.Application');
Excel.SheetsInNewWorkbook := 1;
Excel.application.workbooks.ADD;
Excel.Visible:=true;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExpExcel:=TExpExcel.Create(false);
end;
end.
Po kliknięciu przycisku Button1 wyskakuje komunikat o błędzie: Project Project2.exe raised exception class EOleSysError with message 'Funkcja CoInitialize' nie została wywołana'. Process stoped. Use Step or Run to continue'
Proszę o pomoc, szukałem w googlach i na forum ale nic niestety nie znalazłem.
Z góry dzięki