AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

INI File Schreiben und auslesen

Ein Thema von floppybe · begonnen am 13. Mär 2014 · letzter Beitrag vom 24. Mär 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: INI File Schreiben und auslesen

  Alt 14. Mär 2014, 10:44
@floppybe

Wenn du dem Nachbarn Meier (Ident) im Haus zu deiner Linken (Sektion) einen Apfel gibts (Value)
Delphi-Quellcode:
begin
  Ini.WriteString( 'HausLinks', 'Meier', 'Apfel' );
end;
und dann den Nachbarn Müller (Ident) im Haus zu deiner Rechten (Sektion) fragst, was du ihm gegeben hast
Delphi-Quellcode:
if Ini.ReadString( 'HausRechts', 'Müller', 'normal nix' ) = 'Apfelthen
  ShowMessage( 'Juhu, Apfel essen :-)' )
else
  ShowMessage( 'In die Röhre schauen :-(' );
erwartest du dann den Apfel (Value)?

Nö, du musst schon genau den fragen, dem du den Apfel gegeben hast
Delphi-Quellcode:
if Ini.ReadString( 'HausLinks', 'Meier', 'normal nix' ) = 'Apfelthen
  ShowMessage( 'Juhu, Apfel essen :-)' )
else
  ShowMessage( 'In die Röhre schauen :-(' );
Es ist auch immer hilfreich sich die Dokumentation durchzulesen (anschauen reicht nicht)
Delphi-Referenz durchsuchenTCustumIniFile.WriteString und Delphi-Referenz durchsuchenTCustomIniFile.ReadString
dann siehst du auch, wann bei ReadString der Default-Wert zurückgeliefert wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: INI File Schreiben und auslesen

  Alt 14. Mär 2014, 11:32
@floppybe

Nochmal zum Aufbau einer Ini-Datei
Code:
[Sektion1]
Itent1=Value1
Ident2=Value2
Ident3=Value3

[Sektion2]
Itent1=Value1
Ident2=Value2
Ident3=Value3

[SektionN]
Itent1=Value1
Ident2=Value2
Ident3=Value3
Wie du siehst ist die Ini in Sektionen unterteilt. Dadurch ist es möglich drei Mal den Ident mit dem gleichen Namen "Ident1" zu verwenden, ohne dass es zu Komplikationen kommt. Ohne Sektionen müsste man für jeden Ident einen anderen Namen nehmen.

Nun keine Gesetze, aber Regeln die das Leben erleichtern:

Es empfiehlt sich die Namen für Sektionen und Idents als Konstanten global zu nutzen. Grund: man kann sich immer leicht verschreiben. Ohne Konstanten fällt der Fehler nicht auf IniFile.ReadInteger('Sprachen', 'AktueleSprache', 0); . Hier fällt dem Compiler nicht auf, dass in 'AktueleSprache' ein L fehlt. Wenn man bei IniFile.ReadInteger(IniLangSection, IniCurrLang, 0); ein Fehler macht, fällt es auf, dass "IniCurrLang" mit zwei R geschrieben wurde, denn IniCurLang ist eine Konstante.

Das Gleiche gilt für den IniPfad. Wer den Pfad immer wieder aufs neue zusammensetzt, dem unterläuft garantiert irgendwann ein Fehler. Am besten den Namen übe reine Funktion holen.

Nun zu deiner Frage:
Code:
Ich habe nochmals gelesen im TUT, Edit1.Text:=Ini.ReadString('Section', 'Schlüssel1', 'kein Wert'); "Kein Wert" ist ja ein direkter Eintrag und nicht der Wert aus der INI oder verstehe ich das Falsch ?
'kein Wert' ist ein Defaultwert bei Read Methoden und kommt immer dann zum Einsatz wenn ein Fehler vorliegt. Ein Fehler kann immer dann vorliegen, wenn es z. B. keinen Eintrag gibt. Entweder fehlt die Sektion oder Ident, so dass an der Stelle keine Information vorliegt. Statt aber mit einer Fehlermeldung abzubrechen, wird ersatzweise der Defautwert genommen, in dem Fall 'kein Wert'. Ein weitere Grund für einen Fehler kann sein, dass zwar alles da ist, also Sektion und Ident, aber man einen Integer laden will und die Funktion erkennt, dass in der Ini als Wert ein String vorliegt (Selbst wenn es "1.0" ist).

Der Defaultwert ist also der Ersatz-Wert im Fall, dass ein Fehler vorkommt und der Wert nicht korrekt gelesen werden kann.
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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