![]() |
DLL-Callback-Funktion PChar übergeben=>Daten kaputt
Hallo,
ich rufe von einem Programm aus eine DLL auf, auf die ich in der Regel keinen Einfluss habe, da das Plugins sind. Die DLLs werden dynamisch geladen, von der DLL wird dann die Callback-Funktion im Programm aufgerufen - soweit kein Problem. Die Callback-Funktion soll nun einen PChar an die DLL zurückgeben, was eigentlich auch gut funktioniert. Wenn ich jetzt aber einen PChar wie z.B. '001' übergebe, und mir das ganze dann testeweise aus der DLL mit Showmessage anzeigen lasse, dann sehe ich nur noch ein kleines Rechteck, keine '001' mehr. Das gleiche passiert z.B. mit dem Dateinamen: 'Unbenannt [1]' Wird dieser zurückgegeben steht in der DLL in dem PChar statt [1] ein Rechteck, also wohl ein nicht darstellbares Zeichen. Woher kommt dieses Problem und wie lässt es sich beheben, das in der Anwendungen noch das richtige drinsteht, sobald der Wert aber an die DLL zurückgegeben wurde, einige Zeichen falsch sind? Danke im Vorraus MfG Benedikt |
Re: DLL-Callback-Funktion PChar übergeben=>Daten kaputt
2 Möglichkeiten:
1. Falsche Funktionsdeklaration verwendet 2. Funktion erwartet Unicode statt Ansi ... o.ä. Ansonsten mehr Input! |
Re: DLL-Callback-Funktion PChar übergeben=>Daten kaputt
Ich denke mal das die Funktions-Deklaration richtig ist, aber wenn ich probiere das ganze zu Unicode zu konvertieren, dann hab ich ja einen PWideChar, wie bekomm ich den denn wieder zu PChar um das Ganze zu übergeben?
Und woran lässt sich erkennen dass das Plugin einen anderen Zeichensatz erwartet? Ich habe mir in der DLL sofort nachdem der Wert vom Programm zurückkommt ihn mir ausgeben lassen. MfG Benedikt |
Re: DLL-Callback-Funktion PChar übergeben=>Daten kaputt
Wie, du denkst die Funktionsdeklaration ist okay? Ist sie okay oder nicht? Hast du die C-Dekl da?
|
Re: DLL-Callback-Funktion PChar übergeben=>Daten kaputt
Blöde Formulierung - die Funktions-Deklaration ist klar.
Ich habe das Beispiel-Plugin, also die DLL, mit zugehörigem Delphi-Code, und da wird die Funktion natürlich definiert. Genauso wird die Funktion auf aufgerufen und so ist sie auch im Programm implementiert. Es funktioniert ja auch alles wie gewünscht, die Funktion führt die korrekten Sachen aus, gibt Sie auch richtig zurück, nur bei einigen Zeichen, besonders so Sachen wie '001', da klappts halt wie beschrieben nicht. MfG Benedikt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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