Hallo.
Ich versuche gerade etwas mit Callbacks zu machen, erhalte aber eine
AV...
Delphi-Quellcode:
type
TDownloadCallBackStatus = procedure(FilesDownloaded: Integer) of object;
PDownloadCallBackStatus = ^TDownloadCallBackStatus;
Txxx = class(T...)
private
{...}
public
{...}
procedure DownloadOrSynchronize(SearchString: string; OnlySync: boolean;
CallBackStatus: PDownloadCallBackStatus);
end;
procedure Txxx.DownloadOrSynchronize(SearchString: string;
OnlySync: boolean; CallBackStatus: PDownloadCallBackStatus);
var
begin
{...}
if Assigned(CallBackStatus) then
begin
CallBackStatus^(j); // <-- EACCESSVIOLATION
end;
{...}
end;
procedure CallBack(FilesDownloaded: Integer);
begin
MainForm.label_x.Caption := inttostr(FilesDownloaded);
end;
procedure TMainForm.btn_download_click(Sender: TObject);
begin
{...}
AOBJ.DownloadOrSynchronize(edt_tags.Text, chk_nodownload.Checked, @CallBack);
{...}
end;
(Hintergrund: DownloadOrSynchronize ist eine Funktion, die in einer gemeinsam genutzten
PAS-Datei steht. Die einzelnen Projekte, die auf diese Funktion zurückgreifen, haben jeweils ihre eigene Art, dem Benutzer den aktuellen Status in Labels zu vermitteln. Daher Callback)
Ich habe jetzt schon relativ viele Varianten zu Callbacks gesehen, aber nicht alle Funktionieren bei mir. Dieser Code ist nun der erste, den ich Kompilieren konnte.
Hat jemand eine Idee, wie das geht?
Gruß
blackdrake