Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Wie benutzt man arrays?


Novilos - Mo 13.02.06 21:40
Titel: Wie benutzt man arrays?
Hi,
bin ein ziemlicher Anfänger, bin aber inzwischen bis zu den arrays vorgedrungen.
Aber ich versteh die Hilfe in Delphi 3.0 bezüglich Arrays nicht genau und darum wollte ich fragen, ob mir jemand erklären kann, wie man arrays deklariert und wie man elemente hinzufügt/entfernt.
Das wäre ein große Hilfe für mich
Danke im Vorraus
Mfg
Novilos


Marco D. - Mo 13.02.06 21:53


Delphi-Quelltext
1:
2:
3:
4:
5:
var
arr : array[1..100of integer;

//Hinzufügen
arr[gewünschter_index]:=1909;


Entfernen - wenns keine dynamischen sind, dann ist der Speicherplatz reserviert (glaub ich) - dann ist nichts mit Entfernen. Du kannst höchstens den String als '' machen oder integer auf 0 setzen.


Marc. - Mo 13.02.06 22:02

hallo!

einen array typ deklarieren:

Delphi-Quelltext
1:
2:
TYPE Ta = Array[-100..100of Boolean;
VAR a, b: Ta;


Ansonsten wozu man arrays beispielsweiße benutzt:

Die konventionelle Möglichkeit um 15 Zufallszahlen zu erzeugen...

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var z1,z2,z3,z4,z5,z6,z7,z8,
    z9,z10,z11,z12,z13,z14,z15: integer;
BEGIN
randomize;  // auf antrag von Koller 
 z1  := random(100
 z2  := random(100
 z3  := random(100
 z4  := random(100
 z5  := random(100
 z6  := random(100
 z7  := random(100
 ...
 z15 := random(100
end;

Und die selbe aufgabe mit einem Array:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
..
var a: array[1..15of Integer;
    i: byte;
begin
randomize;  // auf antrag von Koller  
for i := 1 to 15 do
  z[i] := random(100);
;)


Marco D. - Mo 13.02.06 22:05

Hast du nicht randomize vergessen? :mrgreen: :P


Fädas - Mo 13.02.06 22:25

// EDIt: egal vergesst es einfach


Marc. - Mo 13.02.06 22:28

was sollen wir vergessen?
wie wäre es, wenn du ihm anstelle von sinnloser kritik, erklärst, was es sich mit arrays auf sich hat? :roll: :wink:


Fädas - Mo 13.02.06 22:32

Ich wollte sagen, dass du wohl randomize geschrieben hast, aber das hast du ja einfach später verändert, oder?


Marc. - Mo 13.02.06 22:34

ah,
ich hatte zunächst randomize; vergessen, nachdem mich koller aber, darauf so freundlich hingewießen hatte, habe ich es einfach editiert :lol:


Marco D. - Mo 13.02.06 22:37

user profile iconNoTVerYEvilPzYchO hat folgendes geschrieben:
ah,
ich hatte zunächst randomize; vergessen, nachdem mich koller aber, darauf so freundlich hingewießen hatte, habe ich es einfach editiert :lol:


Sorry falls das falsch rübergekommen ist. :wink:


Fädas - Mo 13.02.06 22:43

KP, war nur am Anfang zu blöd das Kommentar zu sehen ^^


Novilos - Mo 13.02.06 23:08

Hi,
erstmal vielen Dank für die Antworten!
Hab das mit dem Reinschreiben und Deklarieren verstanden.
Jetzt noch: Wie liest man sie aus? Wenn ich z.B. das dritte Element in einem Editfeld ausgeben will o.Ä.?
MfG
Novilos


Fädas - Mo 13.02.06 23:11


Delphi-Quelltext
1:
edit1.text:=arr[3];//ausgeben des dreitten Elements im Array                    


Novilos - Mo 13.02.06 23:15

ok gut das klappt soweit!
Noch eine Frage :)
Kann man einstellen, dass keine Zahl doppelt vorkommen darf?
Hab mal die ersten 8 alle in Edits ausgegeben und da waren manchmal einige doppelt.
Mfg
Novilos


Fädas - Mo 13.02.06 23:22


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
for i:=1 to 6 do //Array füllen mit 0 d.h: alle 6 Elemente kriegen die 0 zugewiesen(muss nicht sein)
begin
zahl[i]:=0
end;

randomize;

repeat
a:=random(49)+1;      
b:=random(49)+1;
c:=random(49)+1;
d:=random(49)+1;
e:=random(49)+1;
f:=random(49)+1;
until (b<>a)and(c<>a) and (c<>a)and(c<>b)and(d<>a)and(d<>b)and(d<>c)and(e<>a)and(e<>b)and(e<>c)and(e<>d)and(f<>a)and(f<>b)and(f<>c)and(f<>d)and(f<>e);
//Die schleife läuft solange, bis alle variablen ungleich sind


vielleicht geht das auch kürzer(ist aber eigentlich nicht so viel)


Novilos - Mo 13.02.06 23:34

yeah super!
Vielen Dank euch!
Ihr habt mir sehr geholfen!
Bis zu nächsten Frage
Mfg
Oli


Ironwulf - Di 14.02.06 00:05

ich glaub zu arrays soltle man noch erwähnen das es mehr dimensionale gibt, alle beispiele bisher waren eindimesionale


Delphi-Quelltext
1:
2:
var  
arr : array[1..100,1..100of integer;


dies ist ein zweidimensionaler, wenn ich mich nicht irre kann man das ziemlich bis fast in die unendlichkeit forsetzen, das macht z.b. sinn für ein 2D spielfeld, was aus einzelnen feldern besteht, so hat man in dem beispiel zugriff auf 10000 variablen vom typ integer. und das alles von hand zu dimensioniern wäre doch ein wenig aufwendig ;D
und es ist recht einfach auf arrays mit zählschleifen zuzugreifen, da man statt der zahl arr[1,1] z.b. schreiben, kann arr[var1,var2]