Ich habe ein ziemliches Problem mit PChars die aus einer
Dll in irgendeine Anwendung oder
dll übergeben werden.
In einer
dll gibt eine funktion einen String als PChar an die Anwendung zurück, die Anwendung ließt den PChar einfach auf einen String und benutzt den weiter. Funktioniert an sich relativ gut, nur ist das Problem das total zufällig und nur für manche User am Ende der PChars noch die 0 stehen bleibt.
Gibt die
DLL den String 'C:\SharpE\Settings' zurück kommt bei einigen wenigen Usern 'C:\SharpE\Settings0' an. Das seltsame ist das es im normalfall ohne Probleme geht und nur ganz selten diese Strings mit der 0 am Ende ankommen. Das ganze betrifft auch nicht nur eine funktion der
dll, sondern ausnahmslos alle die einen PChar zurück geben.
der Code sieht folgendermaßen aus:
Beispiel für eine function aus der
dll:
Delphi-Quellcode:
function GetCurrentSkinFile : PChar;
var
SkinDir : String;
SkinName : String;
stemp:String;
begin
SkinDir := GetSkinDirectory;
SkinName := GetSkinName;
stemp := SkinDir +
IncludeTrailingBackslash(SkinName) +
'Skin.xml';
result := PChar(stemp);
end;
Ich habe es auch bereits so probiert das stemp eine globale variable in der
dll ist... hat auch keinen großen Unterschied gemacht.
in der Anwendung werden die funktionen meisten direkt benutzt oder auf Strings eingelesen.
also z.b. direkt:
XML.LoadFromFile(SharpApi.GetCurrentSkinFile);
Ich geh einfach mal schwer davon aus das irgendwas mit der PChar Handhabung in der
dll nicht stimmt,
die Frage ist nur was genau?