![]() |
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? |
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. |
Re: dyn. Array of String gegen perfomance-schonenderes tausc
Zitat:
|
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 |
Re: dyn. Array of String gegen perfomance-schonenderes tausc
Zitat:
|
Re: dyn. Array of String gegen perfomance-schonenderes tausc
jupp
|
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:
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.
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; 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 09:20 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