Hallo. Mal wieder habe ich ein Problem.
Ich habe ein Programm, welches bislang eine
Dll besitzt und mit der recht oft Daten austauscht.
Zu diesem Zweck habe ich zwei Records geschrieben. Eines, welches das Haupt-Programm benutzt, um Daten an die
Dll zu senden und ein anderes, welche die
Dll benutzt etc.
Das senden an die
Dll scheint wunderbar zu klappen.
Allerdings die Rückgabe nicht, sobald das dynamische Array ins Spiel kommt:
DllType.pas (Records für Programm und
Dll, sind beide eingebunden)
Delphi-Quellcode:
...
type
TBotType = record
Cmd: PChar;
Msg: Array of PChar;
end;
TDllType = record
Cmd: Array of PChar;
Status: Integer;
end;
...
Dll-Code
Delphi-Quellcode:
function DllNotify(DllType: TDllType): TBotType;
begin
Result.Cmd := 'PONG';
SetLength(Result.Msg,1);
Result.Msg[0] := 'DSADGFASDJKE';
end;
Hautprogramm
Delphi-Quellcode:
BotType := dllFunc[i](DllType); //Hiermit wird DllType an die DllFunction DllNotify gesendet
WriteLn(BotType.Cmd); //Ausgabe von BotType.Cmd (klappt prolemlos)
WriteLn(BotType.Msg[0]); //FEHLER
Ich denke, es liegt daran, dass man entweder gar keine dynamischen Arrays so übergeben kann (wenn ja, wie kann cih es sonst realisieren).
edit: Das Komische ist, dass WriteLn(BotType.Msg[0]); noch korrekt ausgegeben wird und dann der Fehler kommt (invalid Pointer).