Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wiederholschleife will nicht (https://www.delphipraxis.net/102092-wiederholschleife-will-nicht.html)

spox 23. Okt 2007 11:57


Wiederholschleife will nicht
 
Hallo!
Ich will eine Pyramide machen, die aus vielen kleinen Pyramiden besteht machen, also zeichnen. Jetzt habe ich die folgende Idee gehabt:

Delphi-Quellcode:
unit dreieckU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Image1: TImage;
    SpeedButton1: TSpeedButton;
    procedure dreieck ;
    procedure pyramide (a:integer);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.dreieck;
begin
 with Image1.Canvas do
 begin
  lineTo (penpos.X+10,penpos.Y-10);
  lineTo (penpos.X+10,penpos.Y+10);
  lineTo (penpos.X-20,penpos.Y);
 end;
end;

procedure TForm1.pyramide;
var b:integer;
begin
Image1.Canvas.moveTo (0,Image1.Height-1);
repeat
begin
 for b:=1 to a do
 begin
  dreieck;
  with Image1.Canvas do
   moveTo (penpos.X+20,penpos.Y)
 end;
 with Image1.Canvas do
  moveTo ((penpos.X-round(a*20))+10,penpos.Y-10);
 a:= a-1 ;
end;
until
a>=0
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
pyramide (5)
end;

end.
Doch es will einfach nicht. Kann es sein, dass die Pyramiden immer an der gleichen Stelle gezeichnet werden? Oder einfach die Schleife nicht geht? :coder2:

xaromz 23. Okt 2007 12:03

Re: Wiederholschleife will nicht
 
Hallo,

Deine Abbruchbedingung ist A >= 0. Das ist aber natürlich immer der Fall. A = 0 ist wohl richtig.

Gruß
xaromz

Noobinator 23. Okt 2007 12:13

Re: Wiederholschleife will nicht
 
bin ich blind, oder wo initialisierst du a ?

achja und gewöhne dir bitte an auch die Schleifen einzurücken, sonst kann das leicht unübersichtlich werden ;)

Edit: ahh du übergibst das ganze als Parameter. Wieso ist der im implementation Teil nicht nochmal mit angegeben o.O?

nachti1505 23. Okt 2007 12:15

Re: Wiederholschleife will nicht
 
Delphi-Quellcode:
procedure TForm1.pyramide(a: Integer);
???

leddl 23. Okt 2007 12:23

Re: Wiederholschleife will nicht
 
Zitat:

Zitat von nachti1505
Delphi-Quellcode:
procedure TForm1.pyramide(a: Integer);
???

Zitat:

Zitat von Noobinator
Wieso ist der im implementation Teil nicht nochmal mit angegeben o.O?

:zwinker:

@Noobinator:
Ist AFAIK nicht notwendig, solange es nur eine Methode mit diesem Namen gibt. Ich gebe aber auch aus Gründen der Nachvollziehbarkeit immer die volle Signatur an...

spox 23. Okt 2007 13:35

Re: Wiederholschleife will nicht
 
Dankeschön :spin2:

Funktioniert jetzt richtig :)

Echt ein super Forum hier. Auch für einen Anfänger immer da. Ich gib mal einen für euch aus. Prost :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz