(Gast)
n/a Beiträge
|
Re: ListView Items in einer TextDatei speichern
10. Mär 2004, 21:05
Wie beim TV-Koch:
Ich habe da mal was vorbereitet...
Happy
Speichern:
Delphi-Quellcode:
Var
SaveList: TStrings;
i, j: Integer;
TempStr: String;
// Den kannst du auch global definieren, du kannst dafür nehmen was du willst
Const
Delimitter = #14;
Begin
If Not SaveDialog1.Execute Then Exit;
SaveList := TStringList.create;
Try
// Dein ListView
With ListView1 Do
Begin
// Laufe durch alle Items
For i := 0 To pred(Items.Count) Do
Begin
TempStr := '';
With Items[i] Do
// Laufe 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;
Laden:
Delphi-Quellcode:
Var
LoadList: TStrings;
i, ActPos, PrevPos: Integer;
// siehe oben...
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;
Finally
// Freigeben...
FreeAndNil(LoadList);
End;
End;
|
|
Zitat
|