AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller Suche
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller Suche

Ein Thema von juergen · begonnen am 4. Jul 2015 · letzter Beitrag vom 12. Jul 2015
 
Perlsau
(Gast)

n/a Beiträge
 
#31

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 6. Jul 2015, 17:05
Besteht mit diesem Konzept auch die Möglichkeit die Daten zu speichern und beim Starten des Programms wieder zu laden? Und WIE genau fülle ich die TObjectList mit den Daten?
Eine Objektliste füllt man mit Daten, indem man ein Objekt erzeugt und der Objektliste hinzufügt (Add). Zurück erhält man den Index des neu hinzugefügten Objekts. Steht übrigens alles in der Online-Hilfe zu TObjectList ...
Da es sich beim Inhalt des Objekts um reinen Text handelt (auch Datumse kann man als String abspeichern), genügt z.B. eine CSV-Datei (Comma Separated Values), die man via Stringliste einliest und die einzelnen Strings via DelimitedText voneinander trennt. Eine solche Speichermethode könnte z.B. so aussehen:
Delphi-Quellcode:
Procedure FormMain.Speichern(Const Dateiname : String);
Const
  K = ';';
Var
  i,z : Integer;
  Liste : TStringList;
Begin
  Liste := TStringList.Create;

  Try
    z := MyObjectList.Count;
    If z > 0 Then
    For i := 0 To z-1 Do
      Liste.Append(MyObjectList.Dateiname + K + DateTimeToStr(MyObjectList.Datum));

    Liste.SaveToFile(Dateiname);
  Finally
    Liste.Free;
  End;
End;
Ähnlich würde dann das Einlesen erfolgen:
Delphi-Quellcode:
Procedure FormMain.Einlesen(Const Dateiname : String);
Const
  K = ';';
Var
  DList,
  Liste : TStringList;
  Id,
  i,z : Integer;
  Obj : TMyObjekt;

Begin
  Liste := TStringList.Create;
  DList := TStringList.Create;

  Try
    Anzahl := 0;
    DList.Delimiter := K;
    DList.StrictDelimiter := True;
    Liste.LoadFromFile(Dateiname);
    z := Liste.Count;
    If z > 0 Then
    For i := 0 To z-1 Do
    Begin
      DList.DelimitedText := Liste[i];
      If DList.Count = 2 Then
      Begin
        Obj := TMyObjekt.Create;
        Obj.Dateiname := DList[0];
        Obj.Datum := StrToDateTime(DList[1]);
        Id := MyObjectList.Add(Obj);
        If Id < 0 Then Obj.Free; // dann ist nämlich das Add mißlungen und das Objekt muß freigegeben werden
      End;
    End;
  Finally
    DList.Free;
    Liste.Free;
  End;
  ShowMessage('Es wurden ' + IntToStr(MyObjectList.Count) + 'Objekte eingelesen ...');
End;
Alles ohne Gewähr, da frei in den Editor getippt und daher ungetestet.
  Mit Zitat antworten Zitat
 


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 01:32 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