Autor Beitrag
ss396
Hält's aus hier
Beiträge: 4

Win7
Delphi 2005, Delphi 2007, WinLogo, HTML Editor
BeitragVerfasst: Sa 10.03.12 17:56 
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:

ausblenden 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


Zuletzt bearbeitet von ss396 am Sa 10.03.12 19:20, insgesamt 2-mal bearbeitet
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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. :)

_________________
We are, we were and will not be.
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 10.03.12 18:12 
Hallo,
user profile iconss396 hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden 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.
ausblenden 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.