Thema: Delphi PChars und Dll

Einzelnen Beitrag anzeigen

Billi Berserker
(Gast)

n/a Beiträge
 
#1

PChars und Dll

  Alt 13. Aug 2006, 10:43
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?
  Mit Zitat antworten Zitat