Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
Delphi 2005 Professional
|
Problem mit einem betimmten Wert aus Array ansprechen!
25. Jul 2005, 19:11
Ich habe folgendes Problem, ich wollte das nur eine Wertigkeit über Null ist, das klappt! Nun hab ich folgendes problem im nächsten Durchlauf sollte ganz genau diese Wertigkeit solange berechnet werden bis sie auf Null ist, das klappt irgendwie noch nicht.
Das ist in Form1. so definiert
Delphi-Quellcode:
Public
welche Zahl:Integer;
Befehl in Form1.
Form3.Einwert(Wertigkeit,0,1784,Zaehler,welcheZahl,Wertigkeit,welcheZahl);
Delphi-Quellcode:
procedure TForm3.EinWert(aWert: array of Integer;aStart,aEnd:Integer;Zaehler: array of Integer;welchZahl:Integer;Var Wertigkeit:array of Integer;welcheZahl:Integer);
Var x,niedrig,y :Integer ;
A : array[1..5] of Integer; ///für die fünf Werte der Arrays
B : array[1..5] of Integer; ///für die fünf Werte der Arrays
C : array[1..5] of Integer; ///für die fünf Werte der Arrays
begin
y:=5; /// um die Anzahl der Werte über null zu zählen
aWert[1785]:=0; ///ist immer nein Nullwert
for x:=1 to 5 do
begin
A[x]:=0;
B[x]:=0;
C[x]:=0;
end;
if 0<aWert[welchZahl] Then///welchZahl vorhergehenden Durchlauf für Wert der über Null ist
[b] begin
for x := aStart to aEnd do
begin
Wertigkeit[x]:=0; ///Alles auf Null setzen
end;
Wertigkeit[welchZahl]:=aWert[welchZahl]; //Den einen Wert wieder über null setzen
welcheZahl:=welchZahl; //Alte=Neuer Wert für nächsten Durchgang
end else [/b] /// der rest brüchte nicht mehr ausgeführt werden wenn if zutrifft
begin ////ab hier werden fünf Werte herrausgesucht die über null sind
for x := aEnd downto aStart do
begin
if aWert[x]>0 Then
begin
a[1]:=aWert[x];
b[1]:=x;
break;
end;
end;
if b[1]>0 then
begin
for x := b[1]-1 downto aStart do
if aWert[x]>0 Then
begin
a[2]:=aWert[x];
b[2]:=x;
break;
end;
end else y:=1; /////////Wenn nur ein Wert über Null ist wird y auf 1 gesetzt
if b[2]>0 then
begin
for x := b[2]-1 downto aStart do
if aWert[x]>0 Then
begin
a[3]:=aWert[x];
b[3]:=x;
break;
end;
end else y:=2;
if b[3]>0 then
begin
for x := b[3]-1 downto aStart do
if aWert[x]>0 Then
begin
a[4]:=aWert[x];
b[4]:=x;
break;
end;
end else y:=3;
if b[4]>0 then
begin
for x := b[4]-1 downto aStart do
if aWert[x]>0 Then
begin
a[5]:=aWert[x];
b[5]:=x;
break;
end;
end else y:=4;
for x := 1 to y do ////hier werden die bis zu5 Werte einer Wertigkeit zugewiesen
c[x]:=Form3.zaehlen(b[x],Zaehler);
for x := aStart to aEnd do ///Hier werden die Werte auf Null gesetzt
Wertigkeit[x]:=0;
case y of
1:begin //
niedrig:=C[1];
end;
2:begin
niedrig:= MinIntValue([C[1],C[2]]);
end;
3:begin
niedrig:= MinIntValue([C[1],C[2],C[3]]);
end;
4:begin
niedrig:= MinIntValue([C[1],C[2],C[3],C[4]]);
end;
5:begin
niedrig:= MinIntValue([C[1],C[2],C[3],C[4],C[5]]);
end;
end;
for x:=1 to y do
begin
if Niedrig=C[x] then///Hier wird dem ein Wert über Null gestzt, wenn vorhanden
begin
Wertigkeit[b[x]]:=a[x];
if Wertigkeit[b[x]]=0 then
welcheZahl:=1785 ///Hier wird der eine Wert zurückgegben der nächste Runde bevorzugt angesteuert werden soll
else
welcheZahl:=b[x];
break;
end;
end;
end;
end;
|
|
Zitat
|