![]() |
Listview und Ini
Hallöchen!
Ich habe ein Listview1 mit Report Style! Jetzt mache ich einige einträge in der Laufzeit.. Wenn ich auf Speichern drücke dann speichert er mir die Einträge in einer Ini Datei!
Delphi-Quellcode:
In der Ini sieht dann das halt alles so aus:
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+
'Configs\Settings\mainsettings.ini'); for i := 0 to Listview1.Items.Count - 1 do TheFiles:= TheFiles + ' ' + Listview1.Items[i].Caption; ini.WriteString('Listview','Data', TheFiles); ini.Free; TheFiles=Eintrag1 Eintrag2 Eintrag3[usw..] Nun will ich aber über ini.readstring diese Daten wieder korrekt einlesen! Wie mache ich das, dass für jedes Leerzeichen ein neuer Eintrag entsteht? (Mir ist es allerdings egal, wie es in der Ini steht oder ob man das anders macht, ich will nur dass das Listview wieder so wie vorher ist!) Hat jemand eine Idee? |
Re: Listview und Ini
1. Ini-Datei ist meines Erachtens hier ungeeignet.
2. Speichern im Programmordner ist in der Regel "böse" (Seit Windows 2000) Eine mögliche Lösung findest du bei ![]() |
Re: Listview und Ini
Hallo,
Du musst auf jeden Fall Deinen "Bezeichner", hier Data ändern, da sonst bei jedem Schleifendurchlauf Dein Wert "The Files" wieder auf den Bezeichner "Data" geschrieben wird. So kannst Du die Einträge nicht auseinender halten.
Delphi-Quellcode:
so erhältst Du eine Ini-datei, die ungefähr so aussieht :
var
The Files : String; Data : String; .... ini := TIniFile.Create(Extract File ....... for i := 0 to ListView1.Items.Count -1 do begin The Files := ListView1.Items[i].Caption; Data := 'Data'+IntToStr(i); ini.WriteString('ListView', Data, The Files); end; Ini.Free; [ListView] Data0=TheFiles Data1=.... Data2=.... jetzt kannst Du wiederum per Schleife auf die Einträge zugreifen. Möglichweise ist es sinnvoll, die Anzahl der Einträge auch in der Ini-datei zu speichern. z.B. [delphi] ... ini.WriteInteger('ListView', 'Items', ListView1.Items.Count -1); ... [delphi] |
Re: Listview und Ini
@markus5766h
Wie bereits in meinem vorherigen Posting gesagt, eignet sich eine Ini-Datei nicht bzw nur sehr beschränkt um den Inhalt eines Listviews zu speichern. Dein Vorschlag mag zwar hier vielleicht funktionieren, was machst Du aber wenn Subitems vorhanden sind? @DarkItachi Ein etwas anderer Vorschlag: Savelistview Pseudocode(ungetestet)
Delphi-Quellcode:
Openlistview Pseudocode(ungetestet)
procedure SaveListViewToFile(AListView: TListView; sFileName: string);
var st : TFileStream; begin st := TFileStream.Create( sFileName, fmCreate ); try st.WriteComponent(AListView); finally st.free; end; end;
Delphi-Quellcode:
Achtung: gilt nur als Denkanstoss, benötigt noch einige Arbeiten!
procedure OpenListViewToFile(AListView: TListView; sFileName: string);
var st : TFileStream; begin st := TFileStream.Create( sFileName, fmOpenRead ); try st.ReadComponent(AListView); finally st.free; end; end; |
Re: Listview und Ini
@fatalerror
... war ja auch nur eine Möglichkeit von vielen. Es ging mir primär nur darum, aufzuzeigen, wie man die Einträge lesen - schreiben kann, da "DarkItachi" seine Daten immer auf den Bezeichner "DATA" geschrieben hat. Selbstverständlich gibt es andere / bessere Möglichkieten : Stream speichern, XML-Datei .... Wenn ich Ini-Dateien benutze, lasse ich von Anwender bestimmen, wo die Datei gespeichert wird (App-Data-Verzeichnis/se, Programm-Verzeichnis ...) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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