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