Entwickler-Ecke

Sonstiges (Delphi) - Prüfen ob Element in Mehrdimensionales Array vorhanden ist.


hmmm - So 22.10.06 19:24
Titel: Prüfen ob Element in Mehrdimensionales Array vorhanden ist.
Hallo,

folgende Situation:

1. Mehrdimensionales Array wiefolgt angelegt:


Delphi-Quelltext
1:
Feld: Array[1..9,1..9,1..9of TEdit;                    



2. Mehrere Elemente fest zugewiesen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  Feld[1,1,1]:= Edit1;
  Feld[2,1,1]:= Edit2;
  Feld[3,1,1]:= Edit3;

  Feld[4,1,2]:= Edit4;
  Feld[5,1,2]:= Edit5;
  Feld[6,1,2]:= Edit6;

  Feld[7,1,3]:= Edit7;
  Feld[8,1,3]:= Edit8;
  Feld[9,1,3]:= Edit9;

  Feld[1,2,1]:= Edit10;
  Feld[2,2,1]:= Edit11;
  Feld[3,2,1]:= Edit12;


Meine Frage ist nun, wie ich prüfen kann, ob z.B Feld[8,8,8] in dem Array existiert.
Ich möchte also wissen, ob in dem Array, dem Feld[8,8,8] ein Edit-Feld zugewiesen ist.


alzaimar - So 22.10.06 19:30

Vorher hast Du das Feld mit 'nil' initialisiert. Und dann fragst Du einfach ab:

Delphi-Quelltext
1:
2:
3:
4:
If Assigned (Feld[8,8,8]} Then
  ShowMessage('In Feld[8,8,8} steht etwas drin');
If Feld[8,8,8is TEdit Then
  ShowMessage('In Feld[8,8,8} ist ein TEdit oder ein Abkömling davon');

Achtung! Wenn das Editfeld freigegeben ist (also nicht mehr existiert), steht in Feld[8,8,8] immer noch etwas drin. Vermutlich sogar ein TEdit. Nur darauf zugreifen würde ich nicht.


hmmm - So 22.10.06 19:49

Zitat:
Achtung! Wenn das Editfeld freigegeben ist (also nicht mehr existiert), steht in Feld[8,8,8] immer noch etwas drin. Vermutlich sogar ein TEdit. Nur darauf zugreifen würde ich nicht.


ja, das hab ich gemerkt.


Zitat:
Vorher hast Du das Feld mit 'nil' initialisiert.


Ok, wie mach ich das? (Bin Delphi Neuling ;-) )

Es ist ja so, dass das Feld[8,8,8] zwar TEdit ist, es aber keinem Edit-Feld zugewiesen ist.


alzaimar - So 22.10.06 20:49

So ist es richtig:

Delphi-Quelltext
1:
2:
3:
4:
For i:=0 to 8 do 
  For j:=0 to 8 do
    For k:=0 to 8 do
      Feld[i,j,k] := nil;

Und so ist es schnell

Delphi-Quelltext
1:
FillChar (Feld, SizeOf (Feld), 0);                    

Das funktioniert aber nur deshalb, weil die Konstante 'nil' rein zuffällig 0 ist.


hmmm - Mo 23.10.06 17:49

Ahh, ok danke. Nun gehts.