Autor Beitrag
klabri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 11.12.08 12:10 
Hallo

ich hab folgende Frage: Am Anfang der Procedure ist i:=x; i wird durch dec(i) um 1 reduziert, wenn (als Beispiel) s>10 ist; dann wird die Procedure mit machwas(x+1) neu aufgerufen und i:=x gesetzt; Der i-Wert,mit dem in der while-Anweisung weitergearbeitet wird,ist jetzt höher als der Wert,den ich vorher als i hatte (wegen dec(i)); Ich möchte das machwas(x+1) mit dem veränderten i-Wert aus der while-Anweisung aufgerufen wird,aber wenn ich irgendwo x:=i setze,wird die Procedure nicht mehr aufgerufen;
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
procedure machwas(x:integer);
begin 
i:=x;   
gefunden:=false;
while gefunden=false do begin 
inc(y);
inc(s);
d[i]:=y;

gefunden:=true;
//___________________________________
wenn Bedingung xyz nicht erfüllt dann:
gefunden:=false;

//___________________________________
if s>10 then 
begin 
dec(i);  //hier wird i<x;
gefunden:=false; 
end;
end;
//_______________________________________
if x<8 then 
begin
//hier soll x den Wert i aus der 
//while-gefunden-Anweisung haben
//funktioniert aber nicht ...
//mit x:=i oder so ähnlich..
machwas(x+1)
end;


Moderiert von user profile iconNarses: Beitragsformatierung überarbeitet.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 11.12.08 12:39 
user profile iconklabri hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
while gefunden=false do begin					
Schreib besser:
ausblenden Delphi-Quelltext
1:
while not gefunden do begin					
;-)

user profile iconklabri hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte das machwas(x+1) mit dem
veränderten i-Wert aus der while-Anweisung
aufgerufen wird,aber wenn
ich irgendwo x:=i setze,wird die Procedure
nicht mehr aufgerufen;
Auch wenn ich das jetzt nicht ganz nachvollziehen kann, wenn du das direkt vorher setzen würdest:
Schreib doch einfach machwas(i + 1);, dann benutzt du den Wert von i direkt. Wozu das x, wenn du den Wert von i benutzen willst? :nixweiss: