Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unbegrenzte Arrays (https://www.delphipraxis.net/19772-unbegrenzte-arrays.html)

Nicolai1234 8. Apr 2004 17:41


Unbegrenzte Arrays
 
ich habe eine Variable wie folgt definiert:
Delphi-Quellcode:
s: Array[1..5] of String;
Nun weiß ich aber nicht, wie viele arrays ich brauche! Wie kann ich die zweite Zahl (in diesem Fall 5) nach oben offen lassen.

Wenn ich
Delphi-Quellcode:
s: Array of String;
eingebe passiert nichts;

Tortus 8. Apr 2004 17:46

Re: Unbegrenzte Arrays
 
Klick

Nicolai1234 8. Apr 2004 17:52

Re: Unbegrenzte Arrays
 
thx

S - tefano 8. Apr 2004 17:55

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:
var
  meinDynamischerArray: array of {irgendein Typ};
Die Größe des Arrays bekommst du mit
Delphi-Quellcode:
length(meinDynamischerArray); //gibt Integer
Die Größe _setzt_ du mit
Delphi-Quellcode:
SetLength(meinDynamischerArray, {ganzzahliger Wert für die neue Anzahl von Elementen});

Hoffe geholfen zu haben,

S - tefano

dizzy 9. Apr 2004 04:11

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

himitsu 9. Apr 2004 07:47

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.

jbg 9. Apr 2004 10:30

Re: Unbegrenzte Arrays
 
Zitat:

Zitat von himitsu
Also der Speicherverbrauch steigt dadurch nicht

Der steigt sehr wohl an, wenn man sich das von Windows's Seite anschaut. Betrachtet man es von Delphi's Seite, dann hast du recht, denn dem Delphi-Programm steht der Speicher zur (freien) Verfügung. Windows gehen bei
Delphi-Quellcode:
for i := 0 to 100000 do
  SetLength(a, Length(a) + 1);
n=100000
mem=n*(n+1)/2 Bytes an Speicher verlohren, da diese vom Delphi-Programm reserviert sind.

Christian Seehase 9. Apr 2004 12:52

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.

Hansa 9. Apr 2004 13:23

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.

Chewie 9. Apr 2004 13:51

Re: Unbegrenzte Arrays
 
Zitat:

Zitat von Hansa
Das schnellste und effektivste sind immer noch verkettete Listen / Bäume,

Nicht immer. Will man oft auf das n-te Element einer Liste zugreifen, dann iteriert man sich mit seinem Baum zu Tode. Bäume sind dann gut geeignet, wenn man die Liste ohnehin ganz durchrattert oder oft zwischendrin Elemente einfügen muss.
Außerdem frisst eine verkettete Struktur mehr Speicherplatz als eine sequenzielle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.
Seite 1 von 2  1 2      

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