AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FreePascal Listview speichern und laden
Thema durchsuchen
Ansicht
Themen-Optionen

Listview speichern und laden

Offene Frage von "smmahaup"
Ein Thema von LordGinn · begonnen am 25. Okt 2014 · letzter Beitrag vom 19. Okt 2016
Antwort Antwort
LordGinn

Registriert seit: 13. Okt 2014
16 Beiträge
 
FreePascal / Lazarus
 
#1

Listview speichern und laden

  Alt 25. Okt 2014, 22:21
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 http://www.entwickler-ecke.de/viewto...&postorder=asc
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Listview speichern und laden

  Alt 25. Okt 2014, 22:24
vielleicht funktioniert das hier:

http://www.swissdelphicenter.ch/de/showcode.php?id=729
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Listview speichern und laden

  Alt 25. Okt 2014, 22:29
  • Welche einfache Variante funktioniert denn nur mit TSaveDialog.Execute ?
  • Und willst du wirklich die ListViews abspeichern, oder eventuell die Daten?
  • Die ListView zeigt ja nur Text an und somit eine interpretierte Version der Daten oder sollen doch die Daten selber gespeichert werden?
  • In welchem Format möchtest du denn speichern? Soll das ein human readable sein (XML, JSON, ...) oder ...
Und wenn du das hier umgesetzt hättest, dann wäre es dir jetzt schnurzpiepe ob es sich um ListViews, ComboBoxen, Memos, TreeViews, Edits, etc. handeln würde. Aber da nicht, fragst du heute nach ListView speichern, morgen nach TreeView speichern usw.

Du kannst ruhig fragen, aber du würdest dir dein Programmiererleben erleichtern, wenn du Daten, Logik und Anzeige trennst.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (25. Okt 2014 um 22:36 Uhr)
  Mit Zitat antworten Zitat
LordGinn

Registriert seit: 13. Okt 2014
16 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Listview speichern und laden

  Alt 26. Okt 2014, 09:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Listview speichern und laden

  Alt 26. Okt 2014, 09:47
Es ist definitiv kein Sarkasmus (sonst hättest du den 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.:
NameAlter
Peter Lustig24
Diese Interpretation erfolgt aus den Daten
NameVornameGeburtsdatum
LustigPeter17.03.1990
Du hast jetzt im Prinzip 3 Möglichkeiten die ListView zu speichern:
  • Als Bild (Screenshot der ListView)
  • Die angezeigten (interpretierten) Werte in der ListeView
  • Die zugrundeliegenden Daten
Überlege dir, womit du am meisten anfangen könntest. Alleine das Datum sagt nichts aus, aber im Zusammenhang mit der Information Geburtstag (Kontext) bekommt es eine aussagekräftige Bedeutung.

Darüber hast du dir eben keine Gedanken gemacht. Wenn ich also darauf hinweise, wie kommst du da auf Sarkasmus?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Listview speichern und laden

  Alt 26. Okt 2014, 10:50
, schön ausgedrückt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#7

AW: Listview speichern und laden

  Alt 26. Okt 2014, 12:04
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;

Geändert von hathor (26. Okt 2014 um 12:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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