Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Arrays zur Laufzeit erzeugen lassen (https://www.delphipraxis.net/41214-arrays-zur-laufzeit-erzeugen-lassen.html)

MCXSC 27. Feb 2005 22:56


Arrays zur Laufzeit erzeugen lassen
 
Arrays zur Laufzeit erzeugen lassen

Hallo,

ich habe ein kleines Problem mit Arrays, weiß allerdings nicht, ob es zu lösen ist.

Normalerweise werden Arrays doch fest als Konstante Werte gespeichert

Delphi-Quellcode:
const
BUCHSTABEN: array[0..3] of PWideChar = ('A','B','C','D');
Wie kann ich jedoch Arrays zur Laufzeit erzeugen lassen, indem ich Strings zu einem bereits erstellten Array hinzufüge?

Ein kleines Muster zur Erklärung:

FormCreate (oder FormShow, eigene Funktion, etc.)
|
Füllen der Variable "Var1"
|
Hinzufügen der Variable "Var1"
|
Speichern des aktuelles Arrays

Ich hoffe ihr versteht was ich meine... Habe mich leider noch nicht soweit mit Arrays beschäftigt....

Kann mir einer helfen?

Danke im vorraus,
MCXSC

jfheins 27. Feb 2005 22:58

Re: Arrays zur Laufzeit erzeugen lassen
 
Du kannst Arrays auch unter var als Variable deklarieren, und dann verändern ... :zwinker:

MCXSC 27. Feb 2005 23:06

Re: Arrays zur Laufzeit erzeugen lassen
 
Und wie mache ich das? Sorry, aber habe mich noch nicht soweit mit Arrays beschäftigt.

ganz normal deklarieren? Aber wie ann ich sie dann verändern?

Binärbaum 27. Feb 2005 23:12

Re: Arrays zur Laufzeit erzeugen lassen
 
Man kann anstelle von statischen Arrays auch dynamische Arrays verwenden und deren Länge ändern:
Delphi-Quellcode:
var myArr: array of string;
...

//Länge festlegen und Speicher bereitstellen:
SetLength(myArr, 3);//Array mit 3 Feldern ( [0] bis [2])
myArr[0]:= 'Hallo';
myArr[1]:= 'Guten Morgen';
myArr[2]:= 'Auf Wiedersehen';
//mach irgendwas z.B.:
ShowMessage( myArr[0]);
...
SetLength(myArr, 5);//Array vergrößern
//dabei bleiben bereits vorhandene Werte erhalten
myArr[3]:= 'Irgendein Text';
myArr[4]:= 'Nichts';
ShowMessage( myArr[High(myArr)] );
Dynamische Arrays beginnen immer beim Index 0. Den letzen (=größten) Index erhält man mit der Funktion Delphi-Referenz durchsuchenHigh. Also läuft z.B. myArr nach dem Aufruf SetLength(myArr, 5); von 0..4 und High(myArr); ergibt demzufolge nach diesem Aufruf 4.

MfG
Binärbaum

Oxmyx 27. Feb 2005 23:13

Re: Arrays zur Laufzeit erzeugen lassen
 
Delphi-Quellcode:
var
  EinArray: array[0..2] of Integer;
begin
  EinArray[0] := 17;
  EinArray[1] := 22;
  EinArray[2] := 31;
end;

MCXSC 27. Feb 2005 23:17

Re: Arrays zur Laufzeit erzeugen lassen
 
Ja, aer da muss ich die anzahl des arrays ja auch wieder festlegen. Kann ich die variable denn dann auch als globale verwenden?

Oxmyx 27. Feb 2005 23:21

Re: Arrays zur Laufzeit erzeugen lassen
 
Wurde doch schon gesagt. Ein Array, bei dem du die Länge erst zur Laufzeit festlegst (dynamisches Array), machst du so:

Delphi-Quellcode:
var
  DynArray: array of Integer;
begin
  SetLength(DynArray, 3);
  DynArray[0] := 17;
  DynArray[1] := 22;
  DynArray[2] := 31;
end;
Eine Variable kannst du immer in ihrem Gültigkeitsbereich verwenden. Es gibt allerdings nur außerordentlich selten einen Grund, ein globales Array zu verwenden.

Binärbaum 27. Feb 2005 23:21

Re: Arrays zur Laufzeit erzeugen lassen
 
Zitat:

Zitat von MCXSC
Ja, aer da muss ich die anzahl des arrays ja auch wieder festlegen. Kann ich die variable denn dann auch als globale verwenden?

Ja, man kann auch dynamischen Arrays als globale Variablen verwenden. Dort darf man allerdings keine Länge festlegen, da man sonst wieder einen statischen Array hat.
Also statt
Delphi-Quellcode:
var MeinArray: array [0..19] of string;//statisch
schreibt man
Delphi-Quellcode:
var MeinArray: array of string;//dynamisch
und dann später im Quelltext legt man die Länge mit
Delphi-Quellcode:
Setlength(MeinArray, 20);
fest.

MfG
Binärbaum


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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-2025 by Thomas Breitkreuz