Hallo Zusammen,
ich habe wieder ein Brett vor dem Kopf...
Ich muss Proceduren in einer bestimmten Reihenfolge aufrufen und muss daher mit CallBacks arbeiten...
Delphi-Quellcode:
type
TDataRecievedCallback = reference to procedure;
TDataRecieved_JSResult = reference to procedure(JSResult: string);
TDataRecieved_JSBoolean = reference to procedure(JSBoolean: Boolean);
procedure TMySQL.xData_Main_ConnectConnect(Sender: TObject);
var Design: TDesign_App;
begin
Design:= TDesign_App.create;
Try
Get_Sprachen(nil);
Get_Land(nil);
Get_Company_Details( //TDataRecievedCallback
@Get_CustProperties( //TDataRecievedCallback
@Check_login_code( //TDataRecieved_JSBoolean ......... Diese Zeile markiert der Compiler und meint wahrscheinlich @Design.Create_Form_TVApp
@Design.Create_Form_TVApp
)
)
);
Finally
Design.Free;
End;
end;
Beim Compilieren bekomme ich die Fehlermeldung:
Code:
[Fehler] TTVA_Data_ModuleUnit.pas(188): Incompatible type arg no. 1: Got "procedure(TDataRecieved_JSBoolean) of Object", expected "reference to procedure()"
Das sind die relvanten Procedure:
Delphi-Quellcode:
procedure TMySQL.Get_Company_Details(AOnDataRecieved: TDataRecievedCallback);
procedure OnResponse(Response: TXDataClientResponse);
begin
//Daten verarbeiten
if Assigned(AOnDataRecieved)
then begin
AOnDataRecieved();
end;
end;
begin
//Aufruf eines Service
end;
procedure TMySQL.Get_CustProperties(AOnDataRecieved: TDataRecievedCallback);
procedure OnResponse(Response: TXDataClientResponse);
begin
//Daten verarbeiten
if Assigned(AOnDataRecieved)
then begin
AOnDataRecieved();
end;
end;
begin
//Aufruf eines Services
end;
//Hier scheint etwas nicht zu stimmen - oder mit der angegebenen AOnDataRecieved Procedure, die danach folgt
procedure TMySQL.Check_login_code(AOnDataRecieved: TDataRecieved_JSBoolean);
procedure OnResponse(Response: TXDataClientResponse);
var JSObj: TJSObject;
Ergebnis: boolean;
begin
JSObj:=TJSJSON.parseObject(Response.ResponseText);
Ergebnis:= StrToBool(
String(JSObj['
value']));
if (Assigned(AOnDataRecieved))
then begin
AOnDataRecieved(Ergebnis);
end;
end;
begin
//Aufruf eines Services
end;
procedure TDesign_App.Create_Form_TVApp(login_valid: boolean);
begin
if login_valid=false
then
Create_LogIn;
if Assigned(Form_TheVisitApp)
then begin
Form_TheVisitApp.WIC_Logo.URL:=
MySQL.xWDS_Customerlogo_image.AsString;
end;
end;
Könnt ihr mir helfen, das Ding zum Fliegen zu bringen?
Vielen Dank
Patrick