Hallo,
wie man dem beigefügtn Programmcode entnehmen kann, besteht mein Programmrumpf aus 3 Komponenten:
dem
VCL-Hauptprogramm, einem Bild-Container und einem Thread, der die Bilder komprimieren soll (PNG und JPEG). Das ganze gibt es als Arbeitsentwurf auch "in groß" zum verarbeiten der Bilder direkt aus dem Scanner. Da das nicht funktioniert und ich nicht mit zig Zeilen Code nerven will, habe ich das ganze klein nachgebaut.
Beim Click auf Button1 wird ein Bild geladen, im Bild-Container (dieser wiederum in einer Liste) abgelegt und an einen Thread zum Rechnen übergeben. Wenn der Thread fertig ist, löst er ein Ereignis aus. In der entsprechenden Procedure wollte ich die Bilder speichern. Beim Speichern wiederum hängt er sich auf. Der gesamte Code ist als zip-Datei (mit und ohne Bild)angehängt. Der Code im Event selbst sieht wie folgt aus:
Delphi-Quellcode:
procedure TForm1.ThreadEnde(ID: Integer);
begin
Memo1.Lines.Append('Event for ID ' + IntToStr(ID) + ' received');
if ID > 2 then
begin
TMyObject(fObjectList[ID]).PNGStream.SaveToFile('bild.png');
TMyObject(fObjectList[ID]).JPGStream.SaveToFile('bild.jpg');
end;
// Bei ID < 3 läuft alles durch. Es muss also Probleme beim Speichern geben.
Button1.Enabled:=true;
Memo1.Lines.Append('... all done - object ID is ' + IntToStr(ID));
end;
Kann mir jemand sagen, was das Problem ist und wie man es löst?
Gruß, Alex
[edit]
Sowas von schief gegangen!
Ich habe weiter getestet und gleichzeitig hier geschrieben. Sehe erst jetzt, dass das Thema nicht (mehr) passt. Das Ereignis wird ausgelöst, dann aber nicht weiter abgearbeitet. Evtl. kann das bitte ein Moderatoer oder so für mich ändern. Danke
[/edit]