Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IniFiles - ReadString (https://www.delphipraxis.net/18962-inifiles-readstring.html)

-homer- 26. Mär 2004 17:22


IniFiles - ReadString
 
hi,

wie lade ich strings aus inis???? Ich dachte, dass das so gehen würde:
Delphi-Quellcode:
begin
  user_name := ini.readstring('userinformationen', 'username', '')
end;
aber dann ist mein user_name immer leer. Was habe ich da für ein fehler gemacht??




-homer-

Markus K. 26. Mär 2004 17:25

Re: IniFiles - ReadString
 
Hallo -homer-,
so müsste es eigentlich gehen. Hast du die ini-Datei auch geladen bzw erstellt?

Tschüß Markus

Benedikt 26. Mär 2004 17:26

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.

alcaeus 26. Mär 2004 17:26

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.

ronbrand 21. Apr 2004 12:29

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:

Default is the string value to return if the:

Section does not exist.
key does not exist.
Data value for the key is not assigned.
Der 3. Fall trifft in meinem Prog. zu, ich möchte einen Default-Wert "localhost" definieren.
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:
if myIni.Hostname=''then ....
Dieser Tag ist für mich gelaufen. :wall: :wall:
Ron

roderich 21. Apr 2004 12:53

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:
  user_name := ini.readstring('userinformationen', 'username', '');
2 Fragen:
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

ronbrand 21. Apr 2004 14:46

Re: IniFiles - ReadString
 
Delphi-Quellcode:
  user_name := ini.readstring('userinformationen', 'username', 'LocalHost');
bei aller Liebe, aber genau DAS tue ich doch, hier Auszug meiner Ini Datei.

Code:
[settings]
Port1=4711
ServerHost=192.168.1.2
Port2=4712
mySQLHost=
mySQLPort=
dazu passender Code zum Einlesen des Eintrags "mySQLHost"

Code:
meinHost:=myIni.ReadString('settings','mySQLHost','localHost');
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
Code:
myini.readInteger
einlesen will und definiere als default 6969 klappts doch auch!
P.S. selbstverständlich wird anschliessend auch korrekt
Code:
myIni.free;
aufgerufen.

Pseudemys Nelsoni 21. Apr 2004 15:02

Re: IniFiles - ReadString
 
jo scheint wirklich n bug zu sein, wirst du wohl nicht um eine if anweisung drumrumkommen

The-X 21. Apr 2004 15:35

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

xineohp 21. Apr 2004 15:51

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 ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz