Moin !
Muss mich korrigieren. So gehts:
Delphi-Quellcode:
TTestThread = class(TThread)
private
protected
procedure Execute; override;
public
Stream : TMemoryStream;
Pic : TBitmap;
constructor Create(const Picture : TBitmap);
destructor Destroy; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TTestThread.Create(const Picture : TBitmap);
begin
inherited Create(True);
FreeOnTerminate := True;
Stream := TMemoryStream.Create;
Pic := Picture;
end;
procedure TTestThread.Execute;
begin
Pic.SaveToStream(Stream);
Stream.Position := 0;
Stream.SaveToFile('Test.bmp');
end;
procedure TForm1.Button1Click(Sender: TObject);
var BlobThread : TTestThread;
begin
BlobThread := TTestThread.Create(Image1.Picture.Bitmap);
BlobThread.Priority := tpLower;
BlobThread.Resume;
end;
Aber ist das dann niicht im Endeffekt das gleiche als wenn ich schreiben würde (in Execute):
Image1.Picture.Bitmap.SaveToStream(Stream);
Das führt ja nachweislich zu einem Crash.
Wo ist dann jetzt der Unterschied?
Übergebe ich so dem Create dann einen Pointer?