AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Problem mit speichern und laden von .ini einträgen
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit speichern und laden von .ini einträgen

Ein Thema von Newcomer91 · begonnen am 24. Dez 2010 · letzter Beitrag vom 24. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
Newcomer91

Registriert seit: 9. Mär 2010
66 Beiträge
 
Delphi 2010 Professional
 
#1

Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 10:50
Guten Morgen,

ich beschäftige mich seit kurzem mit ini dateien. Um ein bisschen verständnis zu bekommen schaute ich mir das tutorial bei Delphi treff an.

Nun wollte ich eine Anwendung schreiben welche auf einem form eine Combobox und ein Editfeld enthält.Ganz einfach eigentlich. nun gebe ich ins Editfeld etwas ein und es soll in der ini datei gespeichert werden. Es geht um Benutzer. Wenn Diese einträge dann gespeichert worden sind soll man sie in der Combobox auswählen können.

1. Problem: Ich kann nur einen Eintrag speichern.
Delphi-Quellcode:
var
  ini: TIniFile;
begin
  ini:= TIniFile.create(ExtractFilePath(ParamStr(0))+ 'Settings.ini');

  if edtWriter.Text <> 'then
    begin
      ComboBox1.Items.Add(edtWriter.Text);
      ini.WriteString('Verfasser','Name',edtWriter.Text);
      ini.free;
    end;
end;]
2. Problem: Es wird nicht in die Combobox geladen..
Delphi-Quellcode:
  ini: TIniFile;
begin
  ini:= TIniFile.create('Settings.ini');
  try
    Combobox1.ItemIndex := ComboBox1.Items.IndexOf(Ini.ReadString('Verfasser', 'Name', ''));
  finally
    ini.free;
  end;
end;
Was ist der dritte Parameter? würd am liebsten einfach ALL reinschreiben.. : /

Vielen dank im voraus,

New
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 10:55
Wo lädst du denn was in die ComboBox?
[add] oder sind die Texte in der ComboBox fest?
Wenn ja, dann zerlege doch mal die verschachtelten Befehle und schau nach (Debuggen), was die einzelen Befehle machen/zurückliefern und vergleich das mit dem, was du erwartest, das sie machen sollten.

Du sagst nur Lade den einen Namen ( ReadString ),
suche diesen in der ComboBox ( IndexOf )
und zeige diesen an, falls er gefunden wurde ( ItemIndex:= ).

PS: In der OH steht drin, was der dritte Parameter macht > Delphi-Referenz durchsuchenTIniFile.ReadString

PSS: Wenn edtWriter.Text leer ist, dann gibst du, beim Schreiben, die INI nicht mehr frei.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Dez 2010 um 10:59 Uhr)
  Mit Zitat antworten Zitat
Newcomer91

Registriert seit: 9. Mär 2010
66 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 11:06
zu PS: hab mich da durchgelesen, aber das kann doch nicht sein dass man jeden Comboboxeintrag angeben muss im quelltext, also dass man nicht einfach alles laden kann, unbestimmte menge sondern vorab sagen muss wie z.B. hier
Delphi-Quellcode:
    Top := SettingsFile.ReadInteger(Name, 'Top', Top );
    Left := SettingsFile.ReadInteger(Name, 'Left', Left );
    Width := SettingsFile.ReadInteger(Name, 'Width', Width );
    Height := SettingsFile.ReadInteger(Name, 'Height', Height );
    Caption := SettingsFile.ReadString (Name, 'Caption', Caption);
Das man jedes Item angeben muss.

zu PPS: also muss ich der ini an einer anderen stelle zusätzlich die möglichkeit geben free zu werden?

Danke für die schnelle antwort
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 11:13
Hast Du richtig verstanden - man muß immer den genauen Namen mit angeben. Das bekommst Du mit einer Zeile ReadString in einer Ini also so nicht hin. Ich baue mir für solche Fälle immer einen Count in die Sektion mit ein und der enthält die Anzahl die ich lesen muss. Sieht dann in der Ini z.B. so aus
Code:
[Abschnitt]
Count=3
Wert1=abc
Wert2=def
Wert3=ghi
Man muss dazu dann den Count auswerten und sich in einer Schleife die Werte holen
ReadString('Abschnitt', 'Wert'+IntToStr(i), '');
Und noch zu dem Free - er kommt bei Dir nicht in jedem Fall dorthin, obwohl Du die ini jedesmal am Anfang erzeugst. Besser wäre es so:
Delphi-Quellcode:
  ini:= TIniFile.create(ExtractFilePath(ParamStr(0))+ 'Settings.ini');
  try
    if edtWriter.Text <> 'then
    begin
      ComboBox1.Items.Add(edtWriter.Text);
      ini.WriteString('Verfasser','Name',edtWriter.Text);
    end;
  finally
    ini.free;
  end;
Carsten
  Mit Zitat antworten Zitat
Newcomer91

Registriert seit: 9. Mär 2010
66 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 11:20
Danke ich verstehe

Werds gleich mal alles ausprobieren.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 12:21
Nun ja ganz so schlimm ist es ja nun auch nicht.

Schließlich gibt TIniFile ja auch noch die Methode ReadSection und ReadSectionValues her.

Damit kann man schon die Inhalte einer ComboBox füllen.

Code:
[Verfasser]
Peter=1
Walter=1
Hans=1
ini.ReadSection( 'Verfasser', ComboBox1.Items ); In der ComboBox sind jetzt folgende Einträge
Code:
Peter
Walter
Hans
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
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 12:40
Verwende generell absolute Pfade. Beim Speichern machst du das, beim Laden nicht. Du weißt daher nicht, in welchem Verzeichnis die Datei gesucht wird (im Arbeitsverzeichnis, was aber nicht dem Programmverzeichnis entsprechen muss).
Also immer absolute Pfade angeben.

Dass man im Programmverzeichnis nicht unbedingt Schreibrechte hat, ist dir hoffentlich klar (für portable Programme auf USB-Sticks ist das Verzeichnis jedoch sinnvoll). Daher möchte ich diese immer wiederkehrende Belehrung, wo man (nicht) speichern soll, nicht erneut starten.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#8

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 12:45
INI-Dateien ohne Prad, werden im Windows-Verzeichnis gesucht.
(oder entsprechend in der Virtualisierung des UAC)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 12:51
INI-Dateien ohne Prad, werden im Windows-Verzeichnis gesucht.
(oder entsprechend in der Virtualisierung des UAC)
Sicher? Bis XP wurde es im Arbeitsverzeichnis gesucht, was das Programmverzeichnis sein kann (und oft ist) oder auch ein ganz anderes. Wurde das mit Vista/Win7 geändert?
Meiner Meinung nach ist es Quatsch, wenn sich relative Pfade auf das Windowsverzeichnis beziehen ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#10

AW: Problem mit speichern und laden von .ini einträgen

  Alt 24. Dez 2010, 12:55
MSDN-Library durchsuchenWritePrivateProfileString
Zitat:
If the lpFileName parameter does not contain a full path and file name for the file, WritePrivateProfileString searches the Windows directory for the file. If the file does not exist, this function creates the file in the Windows directory.
Man wollte damals wohl auch schon einen zentralen Ort für solche Einstellungen haben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:09 Uhr.
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