Hallo.
Ich bin an ein "Problem" gestossen und finde keine passende Info im Net.
Ich verwalte in einem zweidimensionalen Array Strings unterschiedlicher Länge, auch der Länge > 256. Da gibs auch die Funktion, um eine neue Zeile einzufügen.
Ich frage mich, soll ich am besten mit jedem Einfügen einer neuen Zeile die Zeilenanzahl einfach um 1 vergrößern (SetLength(Array, AltLength + 1)), oder besser ein Buffer verwenden, also immer eine "größere" Menge an Speicher anlegen, und dann einfach die Zeilen benutzen..?
Hier ergeben sich für mich zwei grundsätzliche Fragen:
1) Wann ist es schneller und zugleich Speicherplatzsparender,
a) ein einziges mal viel Speicherplatz zu reservieren und davon weniger zu benutzen oder
b) öfter reservieren, dabei aber nur soviel anlegen wie man braucht.
Vielleicht weiß der eine oder andere, wie der Faktor ist, um wieviel man den Speicherplatz bei Bedarf vergrößern muss, um im Durschnitt als beste Lösung zu sein.
2) Wie werden die Strings verwaltet?
Wenn ich also in meinem Feld für eine Zelle den Wert vergebe, wird da irgendwie der ganze Speicher, also das ganze Feld, neu aktualisisert? Oder verwaltet mein String-Array in Wirklichkeit nur Zeiger auf die Zeichenketten, die von Delphi automatisch verwaltet werden?
Zur Erinnrung: Datentyp ist "String".
Al Fazit stellt sich die Frage: lohnt sich überhaupt eine "Bufferizierung" mit 'String's in Delphi beim öfteren Anfügen neuer Zeilen?
Danke euch für eure Tipps.
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.