Hallo,
ich habe hier ein Problem, zu dem mir aber auch garnichts einfällt.
Ich habe ein Programm geschrieben, dass mit PlugIns auf Dll- Basis arbeitet.
Das Programm lief die ganze Zeit gut und wurde auch schon ausgiebig getestet.
Nun habe ich lediglich das Programm auf Englisch übersetzt (also string
Konstanten geändert) und plötzlich taucht ein Problem mit einer Prozedur
die ich dabei garnicht angefasst habe und die auch nicht auf diese
string konstanten zugreift.
Es passiert folgendes: Diese DLL Funktion
Delphi-Quelltext
1: 2: 3: 4:
| function ChannelInfo(index: integer): PChar; begin Result := PChar(InstName + ';Pt1000;-99.9;550;0;0;4;4;°C;0.0'); end; |
sendet immer korrekt : "Gerätename;Pt1000;-99.9;550;0;0;4;4;°C;0.0"
Die Funktion im Hauptprogramm:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type TInfoIndexFunction = function(index: integer): PChar;
procedure TMainForm.ChannelInfo(index: integer); var DllFx: TInfoIndexFunction; TmpStr: string; SplitList: TStrings; RegIni: TRegIniFile; const FxName = 'ChannelInfo'; begin if PlugHandle <> 0 then begin @DllFx := GetProcAddress(PlugHandle, PChar(FxName)); if @DllFx <> nil then begin TmpStr := string(DllFx(index)); SplitList := TStringList.Create; SplitStr(TmpStr,';',SplitList); ... Liste abklappern end; |
Diese Funktion empfängt, läuft das Programm auf Deutsch den PChar korrekt und
läuft das Programm auf Englisch empfängt sie:
"Gerätename;Pt1000;-99.9;550;0;0;4;4;°C;
8"
ändere ich die DLL Funktion so:
Delphi-Quelltext
1: 2: 3: 4:
| function ChannelInfo(index: integer): PChar; begin Result := PChar(InstName + ';Pt1000;-99.9;550;0;0;4;4;°C;0.0;BugFix'); end; |
wird immer empfangen:
"Gerätename;Pt1000;-99.9;550;0;0;4;4;°C;0.0;BugFix"
An was könnte das liegen?
Ein Bug in Delphi 2005?