Autor Beitrag
Girgl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 281


D6 Enterprise
BeitragVerfasst: Fr 29.10.04 13:28 
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

ausblenden 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: 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

_________________
Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 29.10.04 13:41 
ausblenden 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 331

Win XP, Win 2000, Win ME
D5 Ent, D7 Prof, D2005 PE, C#
BeitragVerfasst: 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

_________________
Neun von zehn Stimmen in meinen Kopf sagen, dass ich nicht verrückt sei. Die zehnte summt die Tetrismelodie.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 281


D6 Enterprise
BeitragVerfasst: 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