Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fehler: Endlosschleife


luckyluc - Fr 22.05.09 14:19
Titel: Fehler: Endlosschleife
Hallo!
in der while-schleife (siehe pas-datei) befindet sich eine endlosschleife, obwohl ja eigentlich einne abbruchbedingung gegeben ist. kann mir jmd. den fehler zu finden?
danke!


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Fr 22.05.2009 um 14:26


Xentar - Fr 22.05.09 14:21

Könntest du bitte den relevanten Sourcecode hier ins Forum schreiben? (Delphi Tags nicht vergessen)


Michael Stenzel - Fr 22.05.09 14:48

Hi luckyluc.

Hier dein Source:

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 TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
spalten := spinedit1.Value;
i:= 1;
laenge:= length(edit1.text);
while (laenge mod spalten) <> 0 do
edit1.Text:= edit1.Text + '@';
for zeile := 1 to (laenge div spalten) do
begin
 for spalte := 1 to spalten do
 begin
  matrix[zeile,spalte]:= edit1.text[i];
  inc(i);
  end;
  end;


edit2.text:= '';
while (laenge mod spalten) <> 0 do
edit1.Text:= edit1.Text + '@';
for spalte := 1 to spalten do
begin
  for zeile := 1 to (laenge div spalten) do
  begin
  edit2.text:= edit2.Text+matrix[zeile,spalte];
  end;
end;
end;


In deiner While-Schleife werden die Variablen laenge und spalten nicht verändert. Deshalb können die Schleifen nicht enden.

Gruß
Michael.


luckyluc - Fr 22.05.09 14:55

danke, nur die spalten sollen sich ja nicht ändern, die laenge ändert sich doch eigentl. automatisch, denn wenn ein zeichen hinzugefügt wird, ist die laenge doch verändert. oder nicht?


Gausi - Fr 22.05.09 15:00

Die Variable laenge wird aber nicht verändert, nur weil sich der String verändert, mit dessen Länge die Variable anfangs gefüllt wurde. ;-)


Xentar - Fr 22.05.09 15:00

user profile iconluckyluc hat folgendes geschrieben Zum zitierten Posting springen:
danke, nur die spalten sollen sich ja nicht ändern, die laenge ändert sich doch eigentl. automatisch, denn wenn ein zeichen hinzugefügt wird, ist die laenge doch verändert. oder nicht?


Nö, weil du Laenge nur einmal ganz am Anfang setzt (Zeile 7), aber nicht mehr innerhalb der Schleife.


luckyluc - Fr 22.05.09 15:08

ach ja klar, wie logisch. danke an alle.