Autor Beitrag
Experience1986
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Sa 20.03.04 13:38 
Hi,

Ich hab ein Programm, das Daten (Autostart-EInträge) in eine INI Datei sepichert. Über meine Funktion
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function _MyInIStrR(IniFile,IniSection,IniName:String):PChar;
var ini: TIniFile;
begin
  ini:=TIniFile.Create(IniFile);
  try
    Result:=PChar(ini.ReadString(IniSection,IniName,'Error0'));
  finally
    ini.free;
  end;
end;


Lade ich diese Dateien wieder ein. Ich muss den Wert über PChar zurücknehmen, weil die Funktion in einer DLL steckt, und ich keine Lust hab, die DLL mit ShareMem und CO umzubasteln. Also konvertiere ich die Daten lieber.

Hier nun eine INI Datei:
Zitat:
[aae]
Root=HKEY_LOCAL_MACHINE
Path=SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Name=ATIPTA
Value=C:\Programme\ATI Technologies\ATI Control Panel\atiptaxx.exe


Wenn ich nun mit meiner Funktion den Wert von "Root" AUslese (F=INI Datei):
ausblenden Delphi-Quelltext
1:
vRegRootStr:=String(_MyInIStrR(F,'aae','Root'));					


Dann liefert mir die Funktion nur den String
HKEY_LOCAL_MACHI

zurück, das selbe passiert auch bei anderen INI Datein unter dem Value Punkt, wenn dieser zum Beispiel:
Value=C:\Programme\Trillian\trillian.exe
lautet, dann liefert mir meine Funktion C:\Programme\Trillian\trillian.e0 zurück.

Woran liegt, das?
Ich kenne mich mit der Konvertierung von PChar auf String und umgekehrt nit wirklich aus, hatte einfach mal rumgetestet und bin dann auf die Funktionen PChar() und String gestoßen, was bisher auch immer funktioniert hatte. Mache ich etwas falsch oder woran liegt es, ich bastel da nun schon seit 3 stunden und mehr rum, ich verzweifel bald.
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Sa 20.03.04 16:13 
Ich habe das mal genau so gemacht wie du und bei mir kommt das alles richtig raus. An der Funktion liegt es nicht und die Konvertierung von String in PChar und umgekehrt machst du richtig.

Mir ist klar, dass dir das jetzt nicht weiterhilft, aber daran liegt es nicht. Ich würde dir vorschlagen dich mal mit Brakepoints durch deine Funktion zu debuggen, vielleicht verliert sie die fehlenden 2 Buchstaben ja irgendwo.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
Experience1986 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 192

Win XP Pro SP2
Delphi 7
BeitragVerfasst: Sa 20.03.04 16:40 
Also es ist ja nicht nur ein Verlusst, sondern es wird ja auch ein Zeichen ersetzt, siehe bei dem 2. Beispiel mit trillian.exe.

Gibt es denn noch andere konvertierungsfunktionen für PChar und String?