Entwickler-Ecke

Sonstiges (Delphi) - Problem mit delphi while Schleife


ss396 - Sa 10.03.12 17:56
Titel: Problem mit delphi while Schleife
Hallo ich habe ein problem mit meinem delphi.

Ich muss für Informatik ein Programm Strasse1 erstellen bestehend aus einer Kirche, 3 Häusern einer Strasse und einem Zaun.
Soweit so gut, aber als ich jetzt den Zaun mit einer while Wiederholung programmiert habe und das Project Starte und auf den Butten Zeichnen drücke kommt nicht das Bild sondern es passiert einfach gar nichts mehr.
Wenn ich das Programm schließen will kommt immer ein Fenster:"Das Programm wird gerade debuggt". Also habe ich einfach gewartet (2h) aber es ist nichts passiert kann mir vielleicht jemand sagen was das Problem ist?

Die Prozedur:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TStrasse1.ZaunZeichnen;
begin
    with ImBild.Canvas do
     while 10 <= ImBild.Width-25 do begin
      Rectangle (10,240,10+5,240-20);
      Rectangle (10+4,240-3,10+11,240-7);
      Rectangle (10+4,240-13,10+11,240-17);
      end
end;


Danke im Voraus ,

ss396

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt


Gausi - Sa 10.03.12 18:04

Hallo und :welcome: in der Entwickler-Ecke,

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Ein Problem mit Delphi haben hier fast alle. ;-)

Das erhöht auch die Chance, dass dir einer bei der Endlosschleife, die du da gebaut hast, weiterhelfen wird. :)


Mathematiker - Sa 10.03.12 18:12

Hallo,
user profile iconss396 hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
2:
3:
4:
5:
     while 10 <= ImBild.Width-25 do begin
      Rectangle (10,240,10+5,240-20);
      Rectangle (10+4,240-3,10+11,240-7);
      Rectangle (10+4,240-13,10+11,240-17);
      end


In deiner while-Schleife fragst du ab, ob 10 kleiner als die Bildbreite ist. Offensichtlich ändert sich in der Schleife aber nichts, d.h. die while-Bedingung wird nie falsch.
Die Prozedur und das Programm bleiben damit hängen.
Um genauer auf dein Problem zu antworten, müsstest Du erklären, wie die Straße und der Zaun aussehen sollen.
Grüße
Mathematiker

Nachtrag: Nach deiner PN möchtest Du die Latten des Zauns darstellen.
Nehmen wir an, es sollen Latten der Pixelbreite 5 und mit dem Abstand 4 Pixel zwischen den Latten sein, so wählst du eine integer-Variable, z.B. i, und lässt diese in der Schleife um 9 = 5+4 Pixel wachsen, d.h.

Delphi-Quelltext
1:
2:
3:
4:
5:
i:=10//Anfangswert
while i <= ImBild.Width-25 do begin
  Rectangle (i,240,i+5,220);
  i:=i+9
end

Der Rest ergibt sich analog.