![]() |
Listview speichern und laden
Hallo.
Ich möchte 12 Listviewen speichern und laden. Wie kann ich das schaffen? Die einfache Variante mit Savedialoge.execute funktioniert nicht und PosEx kennt mein Lazarus v.1.2.4 nicht. Ich habe auch versucht aus anderen Forenbeiträgen schlau zu werden, aber leider erfolglos. Crosspost ![]() |
AW: Listview speichern und laden
|
AW: Listview speichern und laden
![]() Du kannst ruhig fragen, aber du würdest dir dein Programmiererleben erleichtern, wenn du Daten, Logik und Anzeige trennst. |
AW: Listview speichern und laden
Das Trennen von Daten, Logik und Anzeige finde ich richtig, doch bin ich nicht durch deinen Code gestiegen.
Vieles davon habe ich nachgelesen, doch war danach auch nicht schlauer und wusste auch nicht wie ich deinen Code meinem Programm anpasse. Das hört sich sehr stark nach Sarkasmus an, ob ich die Listview oder die Daten speichern möchte. Interpretierte Daten? Das versteh ich leider nicht. Das gespeicherte Format ist mir egal. Für die späteren Anwender wäre ein menschliches lesbares Format sinnvoll. Außerdem möchte ich alle 12 Listviewen oder Daten in einer Datei speichern. |
AW: Listview speichern und laden
Es ist definitiv kein Sarkasmus (sonst hättest du den :mrgreen: gesehen, ich bin da sehr pingelig).
Da du nicht verraten hast, was denn da wirklich in den ListVies drin steht, muss ich irgendwie alles annehmen. So z.B.:
Darüber hast du dir eben keine Gedanken gemacht. Wenn ich also darauf hinweise, wie kommst du da auf Sarkasmus? |
AW: Listview speichern und laden
:thumb:, schön ausgedrückt.
|
AW: Listview speichern und laden
Ich weiss nicht, was in FREEPASCAL vorhanden ist (ComCtrls, Types, StrUtils) -
in DELPHI XE2 funktioniert es so:
Delphi-Quellcode:
uses ..., Vcl.ComCtrls, System.Types, System.StrUtils;
procedure ListViewSaveToFile(ListView: TListView; const FileName: string); procedure AddTextToLine(var Line: string; const Text: string); begin Line := Line + Text + #9; end; procedure MoveCompletedLineToList(const Strings: TStringList; var Line: string); begin Strings.Add(System.Copy(Line, 1, Length(Line)-1)); //remove trailing tab Line := ''; end; var Strings: TStringList; LatestLine: string; i, j: Integer; begin LatestLine := ''; Strings := TStringList.Create; try for i := 0 to ListView.Items.Count-1 do begin AddTextToLine(LatestLine, ListView.Items[i].Caption); for j := 0 to ListView.Items[i].SubItems.Count-1 do begin AddTextToLine(LatestLine, ListView.Items[i].SubItems[j]); end; MoveCompletedLineToList(Strings, LatestLine); end; Strings.SaveToFile(FileName, TEncoding.UTF8); finally Strings.Free; end; end; procedure ListViewLoadFromFile(ListView: TListView; const FileName: string); var Strings: TStringList; i, j: Integer; Fields: TStringDynArray; Item: TListItem; begin Strings := TStringList.Create; try Strings.LoadFromFile(FileName); ListView.Clear; for i := 0 to Strings.Count-1 do begin Fields := SplitString(Strings[i], #9); Item := ListView.Items.Add; Item.Caption := Fields[0]; for j := 1 to high(Fields) do begin Item.SubItems.Add(Fields[j]); end; end; finally Strings.Free; end; end; procedure TForm1.Button3Click(Sender: TObject); begin ListViewSaveToFile(ListView1,'D:\LV1.txt'); end; procedure TForm1.Button4Click(Sender: TObject); begin ListViewLoadFromFile(ListView1,'D:\LV1.txt'); end; |
AW: Listview speichern und laden
@Sir Rufo
Screenshot bringt mir nichts, da ich die Listviewen mit der gespeicherten Datei wieder füllen möchte. Danke für das Beispiel. Interpretierte Daten gibt es bei mir nicht. Listviewen sehen zb so aus: Filme // verliehen an // für diesen Zeitraum Ich habe mir Gedanken gemacht. Ich muss nur lernen, die richtigen Worte zu wählen und mich exakt auszudrücken damit Programmierer mich verstehen. In der gespeicherten Datei muss der Kontext nicht berücksichtigt werden, wer dahinter steigt kann sich freuen und eventuell in der gespeicherten Datei etwas verändern und die anderen laden die Datei durch das Programm und sehen wieder alles in den Listviewen. @hathor Danke für den Code. Ich werde ihn bei Gelegenheit testen. @Sir Rufo Wie bei hathor am Ende nur mit savedialog.execute hatte ich im Internet gefunden, aber ohne das ganze vorangestellte und da dachte ich, das wäre dann integriert.
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin ListViewSaveToFile(ListView1,'D:\LV1.txt'); end; procedure TForm1.Button4Click(Sender: TObject); begin ListViewLoadFromFile(ListView1,'D:\LV1.txt'); end; |
AW: Listview speichern und laden
Zitat:
|
AW: Listview speichern und laden
@ hathor
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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-2025 by Thomas Breitkreuz