Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamischer Array (https://www.delphipraxis.net/85088-dynamischer-array.html)

Blackheart 25. Jan 2007 19:37


Dynamischer Array
 
Hallo Leute
Hab noch nichts mit Dynamischen Arrays gemacht deshalb meine Frage.
Und zwar möchte Ich folgendes, Ich hab einen Array of Integer [0..5]
Nun möchte Ich je nachdem daraus einen Array [0..2] oder [0..4]
machen.
Also er geht nie höher als 5 aber könnte auch 1,2,3 oder 4 annehmen.
Hätte da Jemand von Euch einen Tipp für Mich.
Ich hoffe Ich hab mich einigermaßen verständlich ausgedrückt.

3_of_8 25. Jan 2007 19:38

Re: Dynamischer Array
 
Du deklarierst einfach ein array of Integer und setzt dann je nach Bedarf die Länge mit Delphi-Referenz durchsuchensetlength().

Blackheart 25. Jan 2007 20:02

Re: Dynamischer Array
 
Danke erst mal für deine Antwort, also bin Ich mit dem hier auf dem richtigem Weg hoff Ich.

Delphi-Quellcode:
var
 MyArray: Array of Integer;
 Groesse:Integer;
begin
 Groesse:=6;
 SetLength(MyArray,Groesse);
end;

3_of_8 25. Jan 2007 20:09

Re: Dynamischer Array
 
Wieso nicht SetLength(MyArray, 6);?

Blackheart 25. Jan 2007 20:16

Re: Dynamischer Array
 
Ich muss ja Irgenwie die Größe je nachdem beeinflussen können

Delphi-Quellcode:
var
MyArray: Array of Integer;
Groesse:Integer;
begin
Groesse:=6;
SetLength(MyArray,Groesse); //Zum Anfang
//Je nach dem 1,2,3,4
Groesse:=4;
SetLength(MyArray,Groesse);
end;

3_of_8 25. Jan 2007 20:20

Re: Dynamischer Array
 
Delphi-Quellcode:
var
MyArray: Array of Integer;
begin
  SetLength(MyArray,6);
  SetLength(MyArray,4);
end;
Macht genau das gleiche.

Blackheart 25. Jan 2007 20:32

Re: Dynamischer Array
 
Ja das Ist klar nur brauche Ich ja eine Variable, weil Ich ja nicht von vorn herein weiss wie groß der Array sein wird.

mkinzler 25. Jan 2007 20:46

Re: Dynamischer Array
 
Zitat:

Zitat von Blackheart
Ja das Ist klar nur brauche Ich ja eine Variable, weil Ich ja nicht von vorn herein weiss wie groß der Array sein wird.

Warum brauchst du dann ne Variable?

inherited 25. Jan 2007 20:48

Re: Dynamischer Array
 
Beachte auch, dass der erste valide Index eines Arrays dann 0 ist.

Blackheart 25. Jan 2007 21:13

Re: Dynamischer Array
 
Zitat:

Zitat von inherited
Beachte auch, dass der erste valide Index eines Arrays dann 0 ist.

Das ist klar Danke.



Zitat:

Zitat von mkinzler
Zitat:

Zitat von Blackheart
Ja das Ist klar nur brauche Ich ja eine Variable, weil Ich ja nicht von vorn herein weiss wie groß der Array sein wird.

Warum brauchst du dann ne Variable?

Zum Anfang brauche Ich einen Array[0..5] dann wird etwas gerechnet und einige Zahlen fliegen "eventuell" raus,
und dann brauche Ich einen Kleineren Array deswegen die Variable die kann Ich ja verändern wie Ich sie brauch.
Danke für die vielen Antworten.

mkinzler 25. Jan 2007 21:17

Re: Dynamischer Array
 
Zitat:

Ich einen Kleineren Array deswegen die Variable die kann Ich ja verändern wie Ich sie brauch.
Du kannst aber auch gleich die Größe des dyn. Arrays ändern.
BTW. Wenn die Größe des Arrays sich öfters ändert, ist es ratsamer die Größe nicht gleich anzupassen, da bei jeder Größenänderung ein neuer Array mit der neuen Größeangelegt wird und dann die Daten dorthin kopiert werden.

3_of_8 25. Jan 2007 21:38

Re: Dynamischer Array
 
Eigentlich wäre ein array[0..5] effizienter, wenn man die Länge unbedingt braucht, kann man sie ja extra in einer Variable speichern. So spart man sich das Speicher-Umschichten.

Jelly 25. Jan 2007 21:43

Re: Dynamischer Array
 
Bei 5 Werten in einem Array sollte man sich keine Sorgen um den Speicher machen müssen.

Mein persönlicher Tipp: Nutze TObjectList anstatt arrays, und du bist den ganzen Ärger mit setlength los.

mkinzler 25. Jan 2007 21:46

Re: Dynamischer Array
 
Zitat:

Bei 5 Werten in einem Array sollte man sich keine Sorgen um den Speicher machen müssen.
Bei 5 natürlich nicht. Wenn es aber mehr sind/werden schon. Meine Randbemerkung ging auch eher ums Prinzip.

3_of_8 25. Jan 2007 21:46

Re: Dynamischer Array
 
Bei einem array of Integer mit 6 Elementen gleich eine Containerklasse zu schreiben ist doch etwas oversized, oder etwa nicht?

Jelly 25. Jan 2007 21:47

Re: Dynamischer Array
 
Zitat:

Zitat von 3_of_8
Bei einem array of Integer mit 6 Elementen gleich eine Containerklasse zu schreiben ist doch etwas oversized, oder etwa nicht?

1:1 :zwinker:

Aber Objektlisten find ich einfacher in der Handhabung.

3_of_8 25. Jan 2007 22:01

Re: Dynamischer Array
 
Man könnte auch die Integer in einen Pointer casten und dann in eine TList packen.

OK, einen Schönheitswettbewerb gewinnt man damit nicht und man hat auch etwas Overhead mit der TList, aber gehen würde es. :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz