Entwickler-Ecke

Sonstiges (Delphi) - Prüfen ob Wert in Array vorhanden


Girgl - Fr 29.10.04 13:28
Titel: Prüfen ob Wert in Array vorhanden
Servus,
ich wollte mir ne funktion schreiben,um zu prüfen,ob ein bestimmter wert in einem array vorhanden ist.
So sieht die funktion aus:

TArray=Array[1..10] of Integer


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function TForm1.ValInArr(Value:Integer;Arr:TArray):Boolean;
var i:Integer;
    IstDrin:Boolean;
begin
 For i:=Low(Arr) To High(Arr) do begin
  If(Value=Arr[i]) Then begin
   IstDrin:=True;
   break;
 end;
 If(IstDrin) Then result:=true
 else result:=false;
 end;
end;


Ich hab probehalber Arr[1] und Arr[2] mit Werten belegt,aber es kommt nie die richtige anweisung.

Hoffe es kann jemand helfen


Stübi - Fr 29.10.04 13:32

Du springst bei break aus der For-Schleife raus, das heisst wenn dein Wert gekommen ist kannst du gar nicht ein True als Resultat ausgeben da dies auserhalb dieser Schlaufe ist.
nimm das zweite end for die zweite if Schlaufe dann solts gehen.

Gruss Stübi


uall@ogc - Fr 29.10.04 13:41


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function TForm1.ValInArr(Value:Integer;Arr:TArray):Boolean;   
var i:Integer;  
begin   
 result := false;
 For i:=Low(Arr) To High(Arr) do
 begin   
  If(Value=Arr[i]) Then
  begin   
   result:=True;   
   break;   
  end;   
 end
end;


Stübi - Fr 29.10.04 13:46

die Lösung von uall@ogc ist die bessere ist kar, habe ich nid gesehen.

@Grigl: Macht es überhaubt Sinn hier eine eigene function zu schreiben?

Gruss Stübi


Udontknow - Fr 29.10.04 13:49

@Girgl:
Der Fehler wäre dir sicherlich nicht unterlaufen, würdest du dich an diese zwei der Borland´schen Sprachkonventionen halten:

- "begin" und "end" stehen immer für sich alleine in einer Zeile.
- Der Code zwischen einem begin-End-Block wird um 2 Zeichen nach rechts eingerückt.

Cu,
Udontknow


Girgl - Fr 29.10.04 14:35

@Stübi
Naja,ob da sinnvoll ist,weiss ich selber nicht so genau.Brauch eben so eine funktion für ein spiel,um zu testen,welche karten schon weg sind und welche noch nicht.

Thx an alle