Entwickler-Ecke

Dateizugriff - Seltsames Phänomen bei DLL Zugriff


SchelmVomElm - Fr 07.11.08 12:18
Titel: Seltsames Phänomen bei DLL Zugriff
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; //Hier setze ich Haltepunkt und schau mir TmpStr an
      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"

:nixweiss:

An was könnte das liegen?
Ein Bug in Delphi 2005?


Delete - Fr 07.11.08 12:32

Lies dir das mal durch: http://www.michael-puff.de/Artikel/StringDLL.shtml