![]() |
Auslesen aus Ini
Guten Tag!
Ich bin dabei eine persönliche Adressbuch-Software zu erstellen, habe jedoch Probleme beim Auslesen. Ich speichere die Eingaben wie Name, Nummer etc. in einer Ini-Datei, was soweit auch gut funktioniert. Doch wenn ich sie wieder auslesen möchte, bekomme ich erstmal einen Fehler der mir sagt ich benutze den falschen Typ, was schonmal nicht stimmt und wenn ich den Typ dann umwandle bekomme ich nur eine "0" als Ausgabe.
Delphi-Quellcode:
Die Ini-Datei sieht folgendermaßen aus:
procedure TForm1.btnSucheClick(Sender: TObject);
var ini : TIniFile; name, vorname : string; begin ini := TIniFile.Create('liste.ini'); try labelVorname.Caption := edtSucheVorname.Text; labelName.Caption := edtSucheNachname.Text; labelMSN.Caption := IntToStr(ini.ReadInteger(name+', '+vorname, 'MSN', 0)); finally ini.free; end; end;
Delphi-Quellcode:
Das Label allerdings verwandelt sich nur in eine 0 .. Woran könnte das liegen
[Mustermann, Max]
Geburtstag=12.07.1980 Telefon=081555 Handy=081508150815 E-Mail=Mustermann@gmx.de ICQ=0815 MSN=Mustermann@gmx.de |
Re: Auslesen aus Ini
Hallo,
also der erste Fehler der mir auffällt ist die Variable "Name". Dieser Name ist schon von Delphi reserviert, Du kannst ihn also nich als Variable benutzen. Zitat:
mfg Whatever |
Re: Auslesen aus Ini
Das mit dem 'Name' wusste ich nicht, danke, kann allerdings hier nicht die Fehlerquelle sein.
Und
Delphi-Quellcode:
in dieser Zeile ist schon alles ok, wenn du dir ma bitte die Section der Ini anschaust.
ini.ReadInteger(name+', '+vorname, 'MSN', 0)
|
Re: Auslesen aus Ini
Hallo,
dein MSN-Eintrag in der INI-Datei ist ein String - du versuchst aber einen Integer aus der INI-Datei zu lesen So müsst es heissen:
Delphi-Quellcode:
labelMSN.Caption := ini.ReadString(name+', '+vorname, 'MSN', ''));
|
Re: Auslesen aus Ini
Oh tut mir leid hab ich übersehn :oops:
Aber lieg ich richtig das Du mit der besagten Zeile das hier auslesen willst? Zitat:
Delphi-Quellcode:
ReadString da Mustermann@gmx.de ein String und kein Integer ist. Damit hätte sich der Fehler mit dem falschen Typ geklärt.
labelMSN.Caption := IntToStr(ini.[u]ReadString[/u](name+', '+vorname, 'MSN', 0));
mfg Whatever |
Re: Auslesen aus Ini
Wie schon im ersten Post erwähnt, erzeugt das seltsamerweise einen Fehler.
Mit der Zeile
Delphi-Quellcode:
erhalte ich
labelMSN.Caption := ini.ReadString(nachname+', '+vorname, 'MSN', 0);
Zitat:
Edith sagt: jegliche variablen 'name' bereits in 'nachname' geändert. ;) |
Re: Auslesen aus Ini
Delphi-Quellcode:
so sollte es klappen.... denk ich
labelMSN.Caption := ini.ReadString(nachname+', '+vorname, 'MSN', '');
|
Re: Auslesen aus Ini
So erfolgt leider überhaupt keine Ausgabe mehr. :(
|
Re: Auslesen aus Ini
Zitat:
Dann prüf doch mal ob die Section, die zu mittels nachname + vorname zusammenbaust auch wirklich gibt, denn der Code von Whatever funktioniert für dein Ini-Beispiel [Edit] Habs grad mal in meinem Projekt ausprobiert: Auslesen aus der Ini-Datei:
Delphi-Quellcode:
Ini-Datei:
Label1.Caption := ReadString('Mustermann, Max', 'MSN', 'geht nicht');
[Mustermann, Max] MSN=test Und "test" wird im Label angezeigt |
Re: Auslesen aus Ini
Mach doch zum Testen mal
Delphi-Quellcode:
Das muss funktionieren :gruebel:
labelMSN.Caption := ini.ReadString('Mustermann, Max', 'MSN', '');
|
Re: Auslesen aus Ini
Ja, den Eintrag gibt es.
Hier einmal die komplette Ini-Datei mit nur einer Section: Zitat:
Delphi-Quellcode:
procedure datenSpeichern(var nachname, vorname, geb, nummer, handy, email, icq, msn : string; ini : TIniFile);
begin ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'liste.ini'); ini.WriteString(nachname+', '+vorname, 'Geburtstag', geb); ini.WriteString(nachname+', '+vorname, 'Telefon', nummer); ini.WriteString(nachname+', '+vorname, 'Handy', handy); ini.WriteString(nachname+', '+vorname, 'E-Mail', email); ini.WriteString(nachname+', '+vorname, 'ICQ', icq); ini.WriteString(nachname+', '+vorname, 'MSN', msn); ini.Free; end; Zum auslesen benutze ich:
Delphi-Quellcode:
procedure TForm1.btnSucheClick(Sender: TObject);
var ini : TIniFile; nachname, vorname : string; begin ini := TIniFile.Create('liste.ini'); try labelVorname.Caption := edtSucheVorname.Text; labelName.Caption := edtSucheNachname.Text; labelMSN.Caption := ini.ReadString(nachname+', '+vorname, 'MSN', ''); finally ini.free; end; end; P.S.: Tatsächlich, das Auslesen funktioniert generell nicht, da muss es einen massiven Fehler geben, den ich allerdings nicht ausfindig machen kann. Das arbeiten mit Ini Dateien hab ich mir von dsdt abgeschaut. |
Re: Auslesen aus Ini
Hallo,
das kann auch nicht gehen:
Delphi-Quellcode:
Denn die Variablen "nachname" und "vorname" sind nicht definiert.
procedure TForm1.btnSucheClick(Sender: TObject);
var ini : TIniFile; nachname, vorname : string; begin ini := TIniFile.Create('liste.ini'); try labelVorname.Caption := edtSucheVorname.Text; labelName.Caption := edtSucheNachname.Text; labelMSN.Caption := ini.ReadString(nachname+', '+vorname, 'MSN', ''); finally ini.free; end; end; Du müsstest es wie folgt schreiben:
Delphi-Quellcode:
[Edit]
begin
//Variablen definieren nachname := 'Mustermann'; vorname := 'Max'; ini := TIniFile.Create('liste.ini'); try oder wenn du deine Edits verwenden willst:
Delphi-Quellcode:
procedure TForm1.btnSucheClick(Sender: TObject);
var ini : TIniFile; nachname, vorname : string; begin ini := TIniFile.Create('liste.ini'); try vorname := edtSucheVorname.Text; nachname := edtSucheNachname.Text; labelVorname.Caption := vorname; labelName.Caption := nachname; labelMSN.Caption := ini.ReadString(nachname+', '+vorname, 'MSN', ''); finally ini.free; end; end; |
Re: Auslesen aus Ini
Natürlich ein peinlicher Fehler, dass ich die Zuweisung vergessen haben, allerdings noch immer keine bzw. die Falsche Ausgabe.
Delphi-Quellcode:
Und oh Wunder: Das label wird zu "geht nicht" :D
procedure TForm1.btnSucheClick(Sender: TObject);
var ini : TIniFile; nachname, vorname : string; begin nachname := edtSucheNachname.Text; vorname := edtSucheVorname.Text; ini := TIniFile.Create('liste.ini'); try labelVorname.Caption := edtSucheVorname.Text; labelName.Caption := edtSucheNachname.Text; labelMSN.Caption := ini.ReadString(nachname+', '+vorname, 'MSN', 'geht nicht'); finally ini.free; end; end; |
Re: Auslesen aus Ini
jetzt mach mal nen test und schreib direkt
Delphi-Quellcode:
labelMSN.Caption := ini.ReadString('Mustermann, Max', 'MSN', 'geht nicht');
|
Re: Auslesen aus Ini
Exakt das gleiche Resultat ..
|
Re: Auslesen aus Ini
Und wenn Du mal einen absoluten Pfad verwendest?
|
Re: Auslesen aus Ini
Existiert die Ini-Datei?
Gib hier mal einen absoluten Pfad an:
Delphi-Quellcode:
Also so z. b.:
ini := TIniFile.Create('liste.ini');
Delphi-Quellcode:
beziehungsweise den Pfad, in dem die Datei wirklich liegt...
ini := TIniFile.Create('c:\liste.ini');
|
Re: Auslesen aus Ini
Aber natürlich, der Pfad war einfach nur falsch!
Mit
Delphi-Quellcode:
funktioniert es einwandfrei, vielen Dank!
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'liste.ini');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 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