Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dyn. Array of String gegen perfomance-schonenderes tauschen (https://www.delphipraxis.net/147714-dyn-array-string-gegen-perfomance-schonenderes-tauschen.html)

Helmi 14. Feb 2010 20:21


dyn. Array of String gegen perfomance-schonenderes tauschen
 
Hallo,

ich habe ein dynamisches Array of String dessen Länge (Anzahl der Elemente) mittels SetLength in einer Schleife (abhängig von bestimmten Bedingungen) vergrößert wird.
In das jeweilige Array-Element werden Strings eingefügt die an die bereits vorhandenen Strings mittels #10 getrennt werden.

Mir ist das ganze nicht perfomance-schonend.
Deswegen dacht ich mir, ich könnte ja ein Array of TStringList nehmen.
Aber das ist mir auch nicht sehr schön. Vor allem muss ich dabei ja extrem aufpassen, dass ich alles richtig wieder freigebe.

Weiss jemand vielleicht eine noch bessere Möglichkeit?

himitsu 14. Feb 2010 20:24

Re: dyn. Array of String gegen perfomance-schonenderes tausc
 
Eine TObjectList+TStringList ?


Die Unit Generics.Collections (aus neueren Delphis) mit TObjectList<TStringList> wird dir wohl nicht viel helfen.

Helmi 14. Feb 2010 20:26

Re: dyn. Array of String gegen perfomance-schonenderes tausc
 
Zitat:

Zitat von himitsu
Eine TObjectList+TStringList ?

kannst mir das etwas näher erklären?

himitsu 14. Feb 2010 20:28

Re: dyn. Array of String gegen perfomance-schonenderes tausc
 
Jetzt hast du ein Array mit vielen TStringList drinnen.

Damit hast du dann eine TObjectList, wo die vielen TStringList reinkommen.
Und die TObjectList läßt du auch gleich die TStringList löschen, wenn diese weg können.

> OwnsObjects oder so

Helmi 14. Feb 2010 20:30

Re: dyn. Array of String gegen perfomance-schonenderes tausc
 
Zitat:

Zitat von himitsu
Jetzt hast du ein Array mit vielen TStringList drinnen.

Damit hast du dann eine TObjectList, wo die vielen TStringList reinkommen.
Und die TObjectList läßt du auch gleich die TStringList löschen, wenn diese weg können.

> OwnsObjects oder so

Und immer wenn ich eine neue Stringliste brauche, dann einfach eine neue erzeugen und der Objectlist übergeben?

himitsu 14. Feb 2010 20:40

Re: dyn. Array of String gegen perfomance-schonenderes tausc
 
jupp

alzaimar 15. Feb 2010 05:52

Re: dyn. Array of String gegen perfomance-schonenderes tausc
 
Mich würde mal interessieren, was Du denn überhaupt machen willst.

Zunächst würde ich die Funktionalität in einer Klasse kapseln:
Delphi-Quellcode:
Type
  TStringMatrix = Class
  Public
     Constructor Create;
     Destructor Destroy; Override;
     Property Element [Row, Col : Integer] : String Read GetElement Write SetElement;
     Property RowCount : Integer Read fRowCount;
     Property ColCount[Row : Integer] : Integer Read GetColCount;
  End;
Der Setter der 'Element'-Eigenschaft kann z.B. dafür sorgen, das genügend Platz vorhanden ist. Wahlweilse führst Du einen Setter für die 'RowCount' und 'Colcount' Eigenschaften ein.

Nun kannst Du in Ruhe ans Implementieren gehen. Erstelle Dir eine Testumgebung, gegenüber der Du die Klasse testest.

Übrigens: Durch das Auslagern und Kapseln musst Du gar nicht mehr 'höllisch aufpassen', dass Du auch alles wieder freigibst: Das machst Du an einer einzigen Stelle: im Destruktor.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 Uhr.

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