eine Kurze Einleitung:
Im Internet habe ich folgenden Code von Mattias Gärtner gefunden, der das Programm Exiftool als Unterprozess startet um unter anderem Tags von Bildern auszulesen.
Kompletter Code:
http://free-pascal-general.1045716.n5.n ... 11423.html
Das Problem:
Der Code arbeitet mit Threads und ruft eine Callback Funktion auf um ein Ergebnis der Abfrage zu übergeben.
Das funktioniert im Grunde auch, bis auf die Tatsache, dass die Übergabe mit einer StringList erfolgt.
Erstmal der Quelltext:
Code: Alles auswählen
procedure TExifKeywordsParseJob.Execute;
var
Tags: TStringList;
...
begin
...
Tags:= TStringList.Create;
...
//Füllen von Tags mit Informationen
...
Application.QueueAsyncCall(Callback, LongInt(@Tags)); // Aufrufen von CallBack und Übergabe der Tags
// @ von mir eingefügt, da es sich sonst nicht kompilieren liess
end;
Code: Alles auswählen
procedure TForm1.TagCallBack(Data: PtrInt);
var
S: TStringList;
begin
S:= TStringList( Data );
Memo1.Lines.Assign( S );
S.Free;
end;
Ich hoffe ich habe mich nicht zu umständlich ausgedrückt...