| Autor |
Beitrag |
Assbuild
Hält's aus hier
Beiträge: 8
|
Verfasst: So 04.06.06 01:25
Guten Abend,
ich habe folgendes Problem:
In einer Whileschleife ist eine Rechnung enthalten die x/y Koordinaten ausrechnet und sie dann einzeichnet.Diese Schleife wiederholt sich bis der Graf komplett ist. Das klappt soweit alles nur möchte ich gerne, dass nach jedem eingezeichneten Punkt etwas gewartet wird, bis der nächste Punkt eingezeichnet bzw die die Schleife wiederholt wird, damit der graf langsam,fliessend entsteht.
Ich wüsste jetzt nicht wie ich ín die Schleife ne Timerprocedur hineinsetze. Gibt es da einfache befehele die sagen "warte(x)ms" oder sowas ähnliches?
Danke schonmal im Voraus, Ole
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: So 04.06.06 02:18
öhm sleep(), müsste dir da weiter helfen
und wennd so wie ich delphi 3 hast oder eine andere version die noch kein sleep kennt dann einfach mit nem timer
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Timer1Timer(Sender: TObject); begin ... If (bedingung zum beenden der schleife) Then timer.Enabled:= False;
end; |
|
|
Hack Gott
      
Beiträge: 409
Windows Vista
Delphi 2005 Personal, Delphi 7
|
Verfasst: So 04.06.06 10:38
Ich würde dir aber sehr von der sleep() Funktion abraten, weil dadurch das ganze Programm "angehalten" wird, für den normalen Windows Bentuzer dürfte das dann so aussehen als ob sich deine Anwendung aufgehängt hätte.
//EDIT: Achja, beim TImer müsst du den Interval ändern um zu bestimmen, wann es immer ausgeführt werden soll.
|
|
Assbuild 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 04.06.06 13:00
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 04.06.06 13:10
Bitte benutze <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG2c5a3a8b10e855a6935e51a326c108a8}</span></span> tags um deinen Code zu umschließen ... ^^
Zu deinem Problem: Application.ProcessMessages; dürfte helfen. Einfach ans ende der Schleife setzen und das sleep danach (oder davor.. oder sonst wo .. ^^ is im prinzip egal)
Also:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| with Image1.Canvas do begin pen.Width:=1; pen.Color:=clred; brush.Color:=clred; Ellipse(x-1,249-yz-1,x+1,249-yz+1); end; x:=x+1; Application.ProcessMessages; Sleep(100); end; |
//edit wtf ..... ah .. geht doch .. oO
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Balmung der blaue Gott
      
Beiträge: 52
WinXP
|
Verfasst: So 04.06.06 13:18
Hi,
Also so müsste es zumindest mit sleep erstmal hinhauen.
Aber ein Timer wär besser..
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:
| procedure TSchusssimulation.AbschiessenClick(Sender: TObject); begin y:=1; x:=5; while y>0 do begin
y:=((Sin(wink)/Cos(wink))*x)-((9.81*x*x)/(2*(geschw*geschw)*(cos(wink)*cos(wink)))); yz:=round(y);
with Image1.Canvas do begin pen.Width:=1; pen.Color:=clred; brush.Color:=clred; Ellipse(x-1,249-yz-1,x+1,249-yz+1); end; x:=x+1; end;
sleep(100); end;
end. |
|
|
Assbuild 
Hält's aus hier
Beiträge: 8
|
Verfasst: So 04.06.06 13:20
Habs dochnoch selbst rausbekommen mit dem Timer...danke für die Tipps
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: So 04.06.06 13:20
Nope so gehts nicht, sonder so, wie ichs bereits vor 5 minuten geschrieben hatte... :/ Bei deiner version wird er immernoch die komplette Schleife abarbeiten bevor er Zeichnet.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
Balmung der blaue Gott
      
Beiträge: 52
WinXP
|
Verfasst: So 04.06.06 13:22
JayEff hat folgendes geschrieben: | | Nope so gehts nicht, sonder so, wie ichs bereits vor 5 minuten geschrieben hatte... :/ Bei deiner version wird er immernoch die komplette Schleife abarbeiten bevor er Zeichnet. |
Ja, stimmt, hab ich ganz vergessen.
|
|