![]() |
Probleme mit Records in DLL's
Hallo Leute,
ich bin mal wieder dabei was in Delphi zu machen und bin etwas aus der Übung... Ich versuche mit Dynamisch eingebundenen DLL's per Records zu kommunizieren. Hier ein bisl Code: Die DLL:
Delphi-Quellcode:
Und nun der Teil der Anwendung
library tbDemo;
{...} type TIRCMessage = record channel: PChar; username: PChar; content: PChar; accesslevel: integer; msgtype: integer; end; {...} function hallo(msg: TIRCMessage): Pointer; var res: TIRCMessage; begin if msg.msgtype = 0 then begin res.channel := msg.channel; res.msgtype := 0; res.content := pchar('Hallo, '+msg.username); end; result := @res; end; {...}
Delphi-Quellcode:
Der zu sendene Record kommt vollständig und ohne Probleme an.
type TIRCMessage = record
channel: PChar; username: PChar; content: PChar; accesslevel: integer; msgtype: integer; end; {...} type dllModuleExecute = function(msg: Pointer): Pointer; implementation {...} function TBotModule.execute(msg: TIRCMessage; remoteFunc: string): TIRCMessage; var func: dllModuleExecute; msgBuffer: ^TIRCMessage; begin result := emptyIRCMessage(); func := GetProcAddress(dllHandle, pchar(remoteFunc)); msgBuffer := func(@msg); showmessage(msgbuffer.content); result := msgBuffer^; end; Der Code in der DLL modifiziert das ganze Ordentlich und wird beim showmessage richtig ausgegeben. Wie man sieht, soll das Ergebnis der DLL funktion zurückgegeben werden. Wenn ich jetzt aber ausserhalb der Funktion mit dem Ergebnis arbeiten möchte, bekomm ich immer einen Zugriffsverletzung. Ich denke mal, ich muss irgendwie den Record auf dem Speicher kopieren? Habt ihr ne Idee? |
AW: Probleme mit Records in DLL's
Pchar sind ja nur Zeiger auf die wirklichen Inhalte
|
AW: Probleme mit Records in DLL's
Oh das ist mir entflohen :)
Wie löse ich das am Besten? |
AW: Probleme mit Records in DLL's
Char-Arrays oder WideStrings
|
AW: Probleme mit Records in DLL's
Ich ralls gerade echt nicht :(
Ne Codehilfe wär ganz nett... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz