Autor Beitrag
*Knust*
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Di 29.01.08 19:37 
Moin!
Ich hab ein Problem:

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:
while result=false do
begin
for z:=aryversuch[pausen,tage]+1 to anzlehrer do
 begin
  if aryaufsichtenursp[z,pausen,tage]=3 then
   begin
    aryversuch[pausen,tage]:=z;
    result:=true;
    bla:=1;
    exit;
   end
   else if z=anzlehrer then
    begin
     if pausen+1<=anzpausen then
      begin
       aryversuch[pausen,tage]:=erstlehrer(pausen,tage);
       pausen:=pausen+1;
      end
      else if tage+1<=5 then
      begin
       aryversuch[pausen,tage]:=erstlehrer(pausen,tage);
       tage:=tage+1;
       pausen:=1;
      end
      else result:=false;
    end;
 end;
end;


wichtig sind nur die ersten drei zeilen denke ich, da bleibt er hängen
wenn ich mit F7 ab der while-zeile durchgehe, geht er immer nur bis zur dritten Zeile und dann wieder zur whilezeile zurück... die mölichkeit, dass result=true wird gibt es ja auch....daher müsste er irgendwann mal abbrechen...tut er aber nicht, was mache ich falsch???

mfg Knust

Moderiert von user profile iconChristian S.: Titel geändert.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 29.01.08 19:41 
ÄNDER MAL BITTE DEN TITEL UND NIMM DEN CAPS LOCK UND DIE TAUSEND AUSRUFEZEICHEN DA RAUS!!!!!!!

danke

Nun zu deinem Problem:
So können wir mit dem Code nicht viel anfangen, da wir nicht wissen, welche Werte die Variablen haben..
Aber dass eine For-Schleife nicht ausgeführt wird, liegt normalerweise daran, dass der Startwert größer ist, als der Endwert - oder dass ein Fehler auftritt. Hat das Array genug Elemente? Nicht dass du versuchst, auf ein ungültiges zuzugreifen.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Di 29.01.08 19:50 
Der Startwert kann eigentlich nicht größer sein... höchstens genauso hoch und dann läuft er die schleife doch einmal ab und regelt das von selbst, dass die while schleife weitergeht...
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 29.01.08 19:53 
Probiers halt aus..

wenn du mit F7 da durchsteppst, halt die Maus über die Variablen und schau, welche Werte da drinstehen.
mael
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 198
Erhaltene Danke: 39


Delphi XE3 Prof.
BeitragVerfasst: Di 29.01.08 20:09 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if pausen+1<=anzpausen then
      begin
       aryversuch[pausen,tage]:=erstlehrer(pausen,tage);
       pausen:=pausen+1;
       //>>>> result nicht gesetzt
      end
      else if tage+1<=5 then
      begin
       aryversuch[pausen,tage]:=erstlehrer(pausen,tage);
       tage:=tage+1;
       pausen:=1;
       //>>>> result nicht gesetzt
      end
      else result:=false;


Du lieferst hier nur im letzten Fall ein Ergebnis zurück, in den anderen Fällen wird Result nicht gesetzt, ist das wirklich so gewollt (siehe Kommentare die mit //>>>> anfangen). Wenn nicht liegt wahrscheinlich da der Fehler!

EDIT: Andererseits sollte Result=False sein, falls er überhaupt in die While-Schleife geht. Und da kommt mir ein anderer Gedanke. Hast du vor while result=false do auch sichergestellt, daß Result auf False gesetzt wurde? Sonst wird die Schleife natürlich nie ausgeführt.

Mit den Informationen die gegeben wurden kann man aber nur spekulieren, daher wäre ein vollständigeres Beispiel sinnvoll.
*Knust* Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 95



BeitragVerfasst: Di 29.01.08 20:22 
Ja result ist false am anfang und dass es nicht gesetzt wird hat auch seinen grund, er soll die schleife so lange abspielen, bis er in den bereich kommt, wo result true gesetzt wird...
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 29.01.08 20:48 
Warum nimmst du denn dann überhaupt "result", wenn es nach der Schleife sowieso true ist...
Um Variablen einzusparen??? Ein bisschen mehr infos wären schon gut.

mfG Daniel