![]() |
IniFiles - ReadString
hi,
wie lade ich strings aus inis???? Ich dachte, dass das so gehen würde:
Delphi-Quellcode:
aber dann ist mein user_name immer leer. Was habe ich da für ein fehler gemacht??
begin
user_name := ini.readstring('userinformationen', 'username', '') end; -homer- |
Re: IniFiles - ReadString
Hallo -homer-,
so müsste es eigentlich gehen. Hast du die ini-Datei auch geladen bzw erstellt? Tschüß Markus |
Re: IniFiles - ReadString
Hi,
an sich ist da alles richtig an deinem Code, daher vermute ich, der Wert steht einfach nicht in der Ini drin, und in diesem Falle gibt ReadString den dritten Parameter, in deinem Falle also einen leeren String, zurück. |
Re: IniFiles - ReadString
Existieren in der INI-Datei die Sektion "userinformationen" und der wert "username"? Falls einer dieser beiden nicht existiert, so wird der Default-Wert zurückgegeben, welcher der dritte Parameter ist.
|
Re: IniFiles - ReadString
exakt an der gleichen Stelle ärgere ich mich soeben grün, blau und schwarz. Das darf doch alles nicht mehr wahr sein, ich zitiere mal OH von Delphi 7 Enterprise.
Zitat:
ich wundere mich und suche wie blöd an meinem QuellText weil das Program abschmiert und stelle dann fest, dass die Default Sektion sauber einen Leerstring zurückgibt, wenn die Definition in der Ini-file nicht zugewiesen wurde. (Für alle Besserwisser und solche die es werden wollen, mit einem vorhandenen String klappts) Wozu hab ich dann diese Default Sektion ?!?!?!?! :wall: einer von vielen Katastrohen-Bugs in Delphi :wall: jetzt muss ich doch tatsächlich so schreiben
Code:
Dieser Tag ist für mich gelaufen. :wall: :wall:
if myIni.Hostname=''then ....
Ron |
Re: IniFiles - ReadString
nun mal langsam....
ich nehme mal an, deine INI-Datei sieht so aus: [userinformationen] username= und dann bekommst du einen Leerstring zurück mit
Delphi-Quellcode:
2 Fragen:
user_name := ini.readstring('userinformationen', 'username', '');
a) Was erwartest du anderes ? b) was soll daran ein Bug sein ? wenn du einen Default-string "LocalHost" willst, dann schreib doch einfach
Delphi-Quellcode:
user_name := ini.readstring('userinformationen', 'username', 'LocalHost');
Roderich |
Re: IniFiles - ReadString
Delphi-Quellcode:
bei aller Liebe, aber genau DAS tue ich doch, hier Auszug meiner Ini Datei.
user_name := ini.readstring('userinformationen', 'username', 'LocalHost');
Code:
dazu passender Code zum Einlesen des Eintrags "mySQLHost"
[settings]
Port1=4711 ServerHost=192.168.1.2 Port2=4712 mySQLHost= mySQLPort=
Code:
Erwartungsgemäss müsste/sollte nun in der String-Variable meinHost der Eintrag 'localHost' zu finden sein, soweit korrekt? Dies ist aber nicht der Fall. Stattdessen enthält die Variable meinHost nämlich nix ---> '' <---- und DAS ist ja wohl der tollste Bug seitdem ich Delphi kenne. Wenn ich beispielsweise mySQLPort als
meinHost:=myIni.ReadString('settings','mySQLHost','localHost');
Code:
einlesen will und definiere als default 6969 klappts doch auch!
myini.readInteger
P.S. selbstverständlich wird anschliessend auch korrekt
Code:
aufgerufen.
myIni.free;
|
Re: IniFiles - ReadString
jo scheint wirklich n bug zu sein, wirst du wohl nicht um eine if anweisung drumrumkommen
|
Re: IniFiles - ReadString
Das es ein Bug ist würd ich nicht sagen,
es kann doch sein, dass jemand auch mal für einen Schlüssel nichts speichern will und dann beim wieder-einlesen nicht den Default-Wert haben will ? solange der Wert in der Ini existiert, hat er auch den Wert, der hinter dem = steht |
Re: IniFiles - ReadString
moin,
Delphi macht exakt das was es soll! Die Variable "mySQLHost" existiert schließlich in der ini-Datei ... nur ist ihr Wert halt ''. und genau das gibt Delphi ja auch zurück! Der Default-Parameter kommt nur zum Einsatz, wenn die Variable, auf die zugegriffen werden soll nicht existiert!. EDIT: Zugegeben, die OH ist da nicht ganz korrekt ... |
Re: IniFiles - ReadString
Moin Zusammen,
das ist ein Fehler in der Dokumentation. ReadString liegt die API Funktion GetPrivateProfileString zugrunde, und die benutzt den Defaultwert nur, wenn der Key (Ident) nicht gefunden wurde. |
Re: IniFiles - ReadString
sorry ronbrand, jetzt kapiere ich langsam.....
hatte schnell gelesen und dich für den Urheber des ersten Postings gehalten. jo, da ist wirklich die Onlinehilfe fehlerhaft. Die Implementierung ist jedoch so wie sie sein sollte. gruß Roderich |
Re: IniFiles - ReadString
aber keine Ursache roderich :angle: Du bist ja nicht der Übeltäter, ich bin halt nur stinkig auf Borland, denn jetzt läufts mir eiskalt über den Rücken...bei der Autoindustrie würde man eine "Rückrufaktion" starten, mit entsprechend schlechter Presse als Ergebnis.
Wenn ich mir vorstell, dass ich diese Funktion bereits früher exzessiv benutzt habe, und mich drauf verlassen hab, dass ich 'nen Default Wert habe :coder: Gruss Ron |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz