Ich möchte TStringList.Objects einen Datensatz zuweisen

8

Ich möchte ein Playlist-Steuerelement erstellen. Ich habe viele Informationen in einer TStringList anzuzeigen. Ich möchte TStringGrid.Objects anstelle von einem Objekt einen Datensatz zuweisen, da so viele Objekte eine Weile dauern können, um zu erstellen / zu zerstören. Es braucht auch viel RAM.

Eine Aufnahme wird viel schneller und schlanker sein. Wie kann ich das tun?

%Vor%     
Sahara 14.12.2008, 23:06
quelle

5 Antworten

6

Sie können eine TList für einen Zeiger Ihres Datensatzes verwenden.

ZB:

%Vor%

Verwendung

%Vor%

usw.

{Meine Liste ist eine Liste, die Sie anderswo erstellt haben}

%Vor%

Sie müssen mit der Entsorgung von Artikeln aus der Liste umgehen, zB

Dispose(PMyRec(MyList[Index]));

Um ein Element aus der Liste zu verwenden:

%Vor%

usw.

    
JamesSugrue 14.12.2008 23:32
quelle
1

Sind Sie sicher, dass Sie alle diese Objekte zuweisen möchten? Durch das Aussehen der Datensatzstruktur sieht es so aus, als ob Sie ein Objekt pro Zeile wünschen - nicht pro Zelle. Dafür hast du mindestens 2 Optionen:

  1. (Mein Favorit wegen der Freiheit, die es gibt) Sie verwenden stattdessen TDrawGrid und zeichnen den Inhalt Ihrer Zelle manuell. Es ist wirklich nicht so schwer!
  2. Sie erstellen ein Objekt, das diesen Datensatz einkapselt. Es ist auch einfach, wie zum Beispiel:
%Vor%

Wenn Sie jetzt Ihre Daten mit dem Raster verbinden möchten, packen Sie sie einfach in das Objekt und Sie können dann die Objekt-Sammlung verwenden.

Erstellen Sie nun anstelle von all dem Ärger einfach einen Event-Handler für TDrawGrid.DrawCell wie

%Vor%

Verwenden Sie GrdPaths.Canvas.Handle mit DrawText oder wenn Unicode benötigt wird, verwenden Sie DrawTextW (beide kommen von Windows API, es gibt Tonnen von Beispielen, wie man es benutzt), und Sie sparen Ihnen und Ihrem Klienten viel Frustration, Gedächtnis und vor allem - Zeit.

    
Matthias Hryniszak 30.12.2008 20:47
quelle
1

Sie können den Record Pointer verwenden.

%Vor%     
Cesar Romero 14.12.2008 23:21
quelle
1

Gelöst
Ich habe jetzt so etwas versucht (basierend auf dem Beispiel von KiwiBastard):

%Vor%
Sahara 14.12.2008 23:38
quelle
0

den Speicher für die Datensätze reservieren braucht auch Zeit.

Erstellen Sie Ihren Datensatz und setzen Sie den Zeiger auf die Objekte in der Stringliste.

    
Bernd Ott 14.12.2008 23:23
quelle

Tags und Links