![]() |
Unbegrenzte Arrays
ich habe eine Variable wie folgt definiert:
Delphi-Quellcode:
Nun weiß ich aber nicht, wie viele arrays ich brauche! Wie kann ich die zweite Zahl (in diesem Fall 5) nach oben offen lassen.
s: Array[1..5] of String;
Wenn ich
Delphi-Quellcode:
eingebe passiert nichts;
s: Array of String;
|
Re: Unbegrenzte Arrays
|
Re: Unbegrenzte Arrays
thx
|
Re: Unbegrenzte Arrays
@Tortus
Sry, hab deinen Link jetzt nicht angesehen, weiß also nicht was da steht. Nur kurz schnell damit man die Lösung auch hier in der DP findet... Die Array- Deklaration hast du schon richtig gemacht:
Delphi-Quellcode:
Die Größe des Arrays bekommst du mit
var
meinDynamischerArray: array of {irgendein Typ};
Delphi-Quellcode:
Die Größe _setzt_ du mit
length(meinDynamischerArray); //gibt Integer
Delphi-Quellcode:
SetLength(meinDynamischerArray, {ganzzahliger Wert für die neue Anzahl von Elementen});
Hoffe geholfen zu haben, S - tefano |
Re: Unbegrenzte Arrays
Und um's der Vollständigkeit noch näher zu bringen:
Man sollte auf jeden Fall vermeiden das dynamische Array in Schleifen immer um eine kleine Anzahl an Elementen zu vergrößern, da dadurch der Speicherverbrauch deiner Anwendung ganz schnell ganz hoch wird! Also besser alle z.B. 100 Schleifendurchläufe das Array um 100 Elemente verlängern, als pro Durchlauf um 1. Warum das so ist, lässt sich bei einer Suche nach dynamischen Arrays hier recht oft und eingehend nachlesen ;). schönen Gruß, dizzy |
Re: Unbegrenzte Arrays
Also der Speicherverbrauch steigt dadurch nicht an, es dauert halt nur "sehr" lange die Speichergröße zu ändern und wenn man seltener die Größe des Arrays ändert, wird das Programm schneller.
|
Re: Unbegrenzte Arrays
Zitat:
Delphi-Quellcode:
n=100000
for i := 0 to 100000 do
SetLength(a, Length(a) + 1); mem=n*(n+1)/2 Bytes an Speicher verlohren, da diese vom Delphi-Programm reserviert sind. |
Re: Unbegrenzte Arrays
Moin Dizzy,
wenn man ein dynamisches Array vergrössert, wird i.d.R. Platz für die neue Grösse angefordert, und dann das Array umkopiert. Das ist es dann, was das Programm langsam macht, und weswegen, man ein Array nicht zu oft vergrössern sollte. |
Re: Unbegrenzte Arrays
Das schnellste und effektivste sind immer noch verkettete Listen / Bäume, da das wirklich dynamische Strukturen sind. Der Zugriff auf einzelne Elemente ist aber etwas schwieriger, als bei einem simplen Array.
|
Re: Unbegrenzte Arrays
Zitat:
Außerdem frisst eine verkettete Struktur mehr Speicherplatz als eine sequenzielle. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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 by Thomas Breitkreuz