Zitat von
DevilsCamp:
und würde gerne wissen, wieviel Speicher das ganze verbraucht um evtl. eine Optimierung vornehmen zu können...
Length(stlarr) * SizeOf(Pointer) + 8
Wobei aber der von TStringList reservierte Speicher nicht eingerechnet ist, da dein Array bis jetzt nur "NIL" enthält.
Zitat:
in der StringList werden immer nur Strings vom Typ String[12] gespeichert...
Das interessiert die StringList nicht. Die hält ihre Daten in einem AnsiString und der ist dynamisch. AnsiString braucht immer 4 Byte (Zeiger) und dann je nach Inhalt zusätzlich 0 Byte (Leerstring) oder 9 Byte (1 Zeichen) bis 2GB (Userspace-Adressraum-Ende).
Um den benötigten Speicher zu ermitteln könnte man so vorgehen:
Delphi-Quellcode:
Size := List.InstanceSize;
Inc(Size, List.Capacity * 8) // record für jedes Item (Objects[] + Strings[])
for i := 0 to List.Count - 1 do
if List[i] <> '' then
Inc(Size, 8 + Length(List[i]));
Das muss aber nicht vollständig sein.