![]() |
Listview Items in eine Ini-Datei schreiben
Hoi! :hi:
Ich hab eine Listview die sieht so aus:
Code:
Unter jedem dieser Columens gibt es Einträge. Diese möchte ich in eine Ini-Datei schreiben. Ich stelle mir das ungefähr so vor:
Datei Größe Kommentar
Code:
Also Groesse1 und Kommentar1 gehören zu Datei1, usw.
[Dateien]
Datei1=... Datei2=... [Groesse] Groesse1=... Groesse2=... [Kommentar] Kom1=... Kom2=... Wie kann man das verwirklcihen? |
Re: Listview Items in eine Ini-Datei schreiben
Warum so kompliziert?
Code:
[ListView]
Datei1.dat=24;Hallo Welt K1 Datei2.dat=34;Hallo Welt K222 Datei3.dat=0;Hallo Welt 231 |
Re: Listview Items in eine Ini-Datei schreiben
Wie schon gesagt ich stellte mir das so ungefähr aus.
Wenn du mir jetzt noch verräts wies geht dann machst du jemanden sehr glücklitsch. |
Re: Listview Items in eine Ini-Datei schreiben
Zitat:
:angle:, sCrAPt |
Re: Listview Items in eine Ini-Datei schreiben
Das allgemeine Speichern müsste so funktionieren.
Code:
hoffe das ich helfen konnte
Var
SaveList: TStrings; i, j: Integer; TempStr: String; Const Delimitter = #14; Begin If Not SaveDialog1.Execute Then Exit; SaveList := TStringList.create; Try // ListView With ListView1 Do Begin // durch alle Items laufen For i := 0 To pred(Items.Count) Do Begin TempStr := ''; With Items[i] Do // und durch alle SubItems For j := 0 To pred(SubItems.Count) Do TempStr := TempStr + Delimitter + SubItems[j]; SaveList.Add(Items[i].Caption + TempStr); End; End; // Speichern SaveList.SaveToFile(SaveDialog1.FileName); Finally // Freigeben ... FreeAndNil(SaveList); End; End; mfg alanblack |
Re: Listview Items in eine Ini-Datei schreiben
So könnte man schreiben
Delphi-Quellcode:
var sTmp : String;
i, j : Integer; for i := 0 to lst.Count - 1 do begin sTmp := ''; for j := 0 to lst.Items[i].SubItems.Count - 1 do sTmp := sTmp + ';' + lst.Items[i].SubItems[j]; ini.WriteString('ListView', lst.Items[i].Caption, sTmp); end; |
Re: Listview Items in eine Ini-Datei schreiben
So könnte man lesen
Delphi-Quellcode:
var lst : TStringList;
ini.GetValueList('ListView', lst); // hole alle Values einer Section soll das heißen for i := 0 to lst.Count - 1 do with lst.Items.Add do begin Caption := lst[i]; sTmp := ini.ReadString('ListView', lst[i], ''); while Length(sTmp) > 0 do begin iPos := Pos(';', sTmp); if iPos = 0 then iPos = Length(sTmp) + 1; SubItems.Add(Copy(sTmp, 1, iPos - 1); sTmp := Copy(sTmp, iPos + 1, MaxInt); end; end; |
Re: Listview Items in eine Ini-Datei schreiben
Ach, einen kleinen Haken hat das ganze noch!
Wenn in deinem Kommentar ein ; Vorkommt läuft der Leseprozess gegen den Boum. Dies verhintere ich durch Quotierung ("") der einzelnen Daten! Einfacher währe es eve. das ; durch ein Zeichen zu ersetzen, was nicht geschrieben werden kann. Macht aber die Möglichkeit zu nicht,e den Inhalt der INI per Hand zu ändern. |
Re: Listview Items in eine Ini-Datei schreiben
oder so:
Code:
Mfg alanblack
Var
LoadList: TStrings; i, ActPos, PrevPos: Integer; Const Delimitter = #14; Begin If Not OpenDialog1.Execute Then Exit; LoadList := TStringList.create; Try //Laden... LoadList.LoadFromFile(OpenDialog1.FileName); // Lösche den ListView ListView1.Items.Clear; //Laufe durch Zeilen der StringList For i := 0 To pred(LoadList.Count) Do Begin PrevPos := 1; ActPos := 1; //Erste Position des Delimitters ActPos := PosEx(Delimitter, LoadList[i], succ(ActPos)); // Erstelle Item With ListView1.Items.Add Do Begin //setze Caption des neuen Items Caption := Copy(LoadList[i], PrevPos, (ActPos - PrevPos)); PrevPos := succ(ActPos); //erzeuge für jeden gefundenen Delimitter ein SubItem Repeat ActPos := PosEx(Delimitter, LoadList[i], succ(ActPos)); If ActPos <> 0 Then SubItems.Add(Copy(LoadList[i], PrevPos, (ActPos - PrevPos))) Else SubItems.Add(Copy(LoadList[i], PrevPos, Length(LoadList[i]))); PrevPos := succ(ActPos); //Wenn ActPos = 0 (kein Delimitter gefunden) -> fertig Until ActPos = 0; End; End; |
Re: Listview Items in eine Ini-Datei schreiben
@Alan
:gruebel: ... Woher kenne ich den Code bloß... :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 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 by Thomas Breitkreuz