Entwickler-Ecke
Dateizugriff - INI - ReadSections() und ListView
cl9wn - Sa 13.09.08 15:40
Titel: INI - ReadSections() und ListView
Hi, ich habe festgestellt, dass man per ini.ReadSections(ListBox1.Items); (wobei ini natürlich mein TIniFile ist) alle Sections der INI in eine Listbox schreiben kann. Kann ich das auch mit einer ListView machen? Irgendwie funktioniert das nämlich nicht weil das eine TListItem und das andere TStrings ist ...
Also ini.ReadSection(ListView1.Items); geht nicht ...
freak4fun - Sa 13.09.08 15:49
Nein, dirkt geht das nicht. Was erwartest du denn als Ergebnis?
Yogu - Sa 13.09.08 16:06
Du könntest den Inhalt der Sektion in eine StringListe laden ...
Delphi-Quelltext
1: 2: 3: 4: 5:
| var StringList: TStringList; i: Integer; begin StringList := TStringList.Create; try Ini.ReadSection(StringList); |
... und dann die StringList abklappern und Schritt für Schritt in das ListView laden.
Delphi-Quelltext
6: 7: 8: 9: 10: 11: 12: 13: 14:
| { ... } for i := 0 to StringList.Count-1 do with ListView1.Items.Add do begin Caption := StringList[i]; end; finally StringList.Free; end; end; |
Da du ein ListView verwendest, hast du sicherlich noch andere Eigenschaften (Symbol, Spalten etc.). Die kannst du auch im
with-Block setzen.
cl9wn - Sa 13.09.08 16:45
Vielen dank, ich denke das klappt, werde es mal ausprobieren.
---
Moderiert von
Narses: Beiträge zusammengefasst---
So, ausprobiert und Funktioniert. Aber schon das nächste Problem:
Meine ListView ist so aufgebaut: 2 Spalten, Links "Servername", rechts "ServerAdresse"
Hab jetzt folgenden Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TfrmLauncher.FormCreate(Sender: TObject); var i : Integer; Sections : TStringList; begin Sections := TStringList.Create(); ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'realmlist.ini'); AssignFile(realmlist, 'D:\Programme\World of Warcraft\realmlist.wtf'); if FileExists('D:\Programme\World of Warcraft\realmlist.wtf') then Reset(realmlist) else ReWrite(realmlist);
try ini.ReadSections(Sections); for i := 0 to Sections.Count-1 do with ListView.Items.Add do begin Caption := Sections[i]; end; finally Sections.Free; end; end; |
Wenn ich mein Programm starte lädt er alle verfügbaren Sections in die linke Spalte. Richtig so.
Frage: Wie bekomme ich jetzt die Werte (Also z.B. vom Abschnitt
[SERVER1] IP=WERT ... Also wie bekomme ich den Wert in meine rechte Spalte? Das gabs beim ausprobieren wieder probleme mit TStrings und String ... Habs mit ReadSectionValues versucht...
---
Moderiert von
Narses: Beiträge zusammengefasst---
Habs gelöst. Für alle, die eine Antwort suchen ...
Delphi-Quelltext
1:
| SubItems.Add(ini.ReadString(Sections[i], 'IP', '')); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!