Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller Suche (https://www.delphipraxis.net/185758-konzeptfrage-datenhaltung-vieler-datei-infos-und-deren-darstellg-mit-schneller-suche.html)

juergen 6. Jul 2015 16:08

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S
 
@SirRufo,
DAS sieht sehr interessant aus! :-D (deinen letzten Post habe ich erst nach dem Abschicken gesehen...)
Vielen Dank für deine Geduld. Im Moment habe ich kein Zugriff auf Delphi. Bevor ich versuche das heute Abend zu verstehen eine wichtige Frage vorab: 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?

@freimatz,
ich gebe dir zum Teil Recht. Ich nutze Delphi hobbymäßig und habe schon einiges gelernt, aber bei weitem nicht die "komplzierteren Sachen". Das eigentliche Konzept wird wohl bleiben. Eine angepasste StringList für die reine Suche der Dateinamen mit "Referenzzeiger" auf die "Master"-StringList, Ich habe bis jetzt keine Alternativen erkannt (Schnelligkeit der Suche).
Wo du Recht hast ist natürlich die Datenhaltung in der "Master"-StringList. Da hat Sir Rufo gerade eine sehr interessante Alternative aufgezeigt. Wenn sich das ganze auch abspeichern und neu laden lässt wäre ich ja weg von der "einfachen" StringList. 8-)
Ich muss aber auch abwägen: Mit welchem für mich VERTRETBAREN Aufwand kann ich WAS umsetzen...:oops:


Edit Roter Kasten: Oh Mann, vielen Dank für deine Mühe. Ich werde mir das heute Abend anschauen und freu mich schon drauf.:)

Perlsau 6. Jul 2015 17:05

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

Zitat von juergen (Beitrag 1307833)
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.

juergen 6. Jul 2015 20:25

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S
 
@Sir Rufo,
dein Projekt habe ich mir angesehen. Was soll ich sagen...außer Danke für etliche Denkanstöße. Aber ehrlich gesagt verstehe ich auch vieles nicht. Ich habe aber wieder einiges dazugelernt. Interessant ist aber auch die IOUtils-Unit mit den vielen Eigenschaften wie z.B. Predicate und das verwenden von mehreren Directories.

Ich werde nun erst mal klein anfangen und meine Master-StringList umstellen auf TObjectList! Mit den ganzen Beispielen bekomme ich das hin, denke ich.

@Perlsau,
auch dir danke ich für die Denkanstöße. TObjectList scheint mir nun immer sympatischer und vom Gefühl her denke ich dass es das richtige ist.
:-D

Perlsau 6. Jul 2015 21:17

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

Zitat von juergen (Beitrag 1307890)
@Perlsau,
auch dir danke ich für die Denkanstöße. TObjectList scheint mir nun immer sympatischer und vom Gefühl her denke ich dass es das richtige ist.:-D

Dann hat sich der Aufwand also gelohnt: Man konnte dich von einem besseren Konzept überzeugen, denn das war ja auch dein eigentliches Anliegen :thumb:

Die Welt ist schön :-D

Bentissimo 7. Jul 2015 10:23

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S
 
Wenn ohnehin schon das QuantumGrid im Einsatz ist, wäre der Einsatz der TdxMemData Komponente in Verbindung mit der Property Options.IncSearch für ausgewählte Spalten vielleicht eine Überlegung wert.

Das Speichern und Laden beherrscht diese Komponente bereits und die Suche wäre ebenfalls zumindest schon zum Teil abgedeckt.

Erfüllt die Anforderung vielleicht noch nicht zu 100%, aber dafür lässt sich ein Prototyp vermutlich in einer Stunde zusammen bauen.

striderx 10. Jul 2015 18:06

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

In der ersten TStringList werden Dateipfad+Name (und jetzt neu) das Datum gespeichert (getrennt durch 5 Doppelpunkte).
Vielleicht verstehe ich ja etwas grundsätzlich nicht, aber warum nimmst Du nicht einfach ein dynamisches Array? Und fünf Doppelpunkte als Feldtrenner sollten nicht ernsthaft eine Lösung sein.

Delbor 12. Jul 2015 12:13

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

Vielleicht verstehe ich ja etwas grundsätzlich nicht, aber warum nimmst Du nicht einfach ein dynamisches Array?
Weil TObjectlist mit weniger eigenem Aufwand viel flexibler ist? Ausserdem braucht ein dynamisches Array bei jeder Grössenänderung zusätzlich Rechenzeit.

Gruss
Delbor

Dejan Vu 12. Jul 2015 12:57

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S
 
Soweit ich mich erinnere wird eine TObjectList intern auch nur über ein dynamisches Array (PPointerList) abgebildet. Der Speicherverbrauch ist auch nicht gerade optimal.

Aber man will ja schließlich die Listenverwaltung kapseln. Ergo wäre es ziemlich blöd, ein Array zu verwenden, und den ganzen Verwaltungsgedöns selbst zu programmieren. Aber wer's mag...

striderx 12. Jul 2015 16:29

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

Ausserdem braucht ein dynamisches Array bei jeder Grössenänderung zusätzlich Rechenzeit.
Und bei einer Object-Liste passiert das in Nullzeit? Siehe auch Hinweis von Dejan Vu.

Zitat:

Ergo wäre es ziemlich blöd, ein Array zu verwenden, und den ganzen Verwaltungsgedöns selbst zu programmieren. Aber wer's mag...
Wenn du mit 'Verwaltungsgedöns' das einfügen und Löschen von Einträgen meinst, dann hast du grundsätzlich recht. Im Moment sehe ich aber nur, dass der TE einen String und ein Datum speichern und in der Liste suchen will. Und mir ging es vor allem darum, dass eine StringList und fünf Doppelpunkte als Feldtrenner nun gar keinen Sinn macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz