Entwickler-Ecke
Sonstiges (Delphi) - Übergabe von 2 Pchar Werten an eine DLL Funktion
Bronstein - Di 20.11.07 11:54
Titel: Übergabe von 2 Pchar Werten an eine DLL Funktion
Hallo,
ich habe ein Problem, habe eine Funktion in einer DLL die zwei Pchar-Werte erwartet. Leider wird mir in der DLL ausgabe immer nur der LineName ausgegegben der SetupName ist leer, obwohl ich in meiner Anwendung wo ich diese Funktion aufrufe, beide Werte Zeichen enthalten.
Hier der Code meiner DLL:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure FehlerProtokoll(Meldung: ShortString); var t_Datei: TextFile; begin if Fileexists('log.txt') then AssignFile(t_Datei, 'log.txt') else begin AssignFile(t_Datei, 'log.txt'); Rewrite(t_Datei); end; ReSet(t_datei); Append(t_Datei); WriteLn(t_Datei, DateTimeToStr(now) + ';' + GetRechnerName() + ';' + Meldung); CloseFile(t_Datei); end;
function GetSetup(SetupName, LineName: Pchar): Pchar; begin Protokoll_Log(LineName + '____' + SetupName); end; |
Den Aufruf der Funktion mache ich folgendermaßen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| [...] function GetSetup(LineName, SetupName: Pchar): Pchar ; stdcall; external 'Check.dll'; [...] Var Line, Programme: WideString; Begin Linie := 'Linie 1'; Programm := '123456789'; tmpStr := GetSetup(pchar(string(Linie)), pchar(string(Programme))); end; |
Es steht in der Logdatei immer nur der Liniename.
Woran kann das liegen, bzw. was mache ich falsch?
Moderiert von
jasocul: Topic aus VCL (Visual Component Library) verschoben am Di 20.11.2007 um 11:00
Lossy eX - Di 20.11.07 13:25
Ich vermute mal stark, dass Line und Programm als WideString einen Grund haben ansonsten ist das was du da tust etwas überflüssig.
Aber du hast in der Anwendung ein STDCALL angeggeben aber in der DLL gar nichts. Das muss natürlich immer gleich sein.
Ansonten sehe ich so im Code keine weiteren Probleme. Evtl ist das pchar(string(Linie)) nicht ganz so glücklich. Da würde ich es evtl erst auf einen String zuweisen, denn nicht, dass der Kompiler mal auf die Idee es nur zu casten und nicht umzuwandeln.
gispos - Di 20.11.07 15:54
Poste mal den richtigen Code, der vorhandene kann so ja nicht funktionieren!
Programm > Programme?
GetSetup kann ja kein Result liefern!
Und ja, auch in der DLL ein Stdcall an die Function hängen.
Gruß gispos
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!