![]() |
auf der suche nach einem befehl
hi
ich muss für die schule eine fahrstuhlsimulation programmieren. das aussehen ist fertig. auch bewegt sich der fahrstuhl auf und ab. nur habe ich ein problem mit den türen. auf und zu gehen sie. aber: wie bekomme ich das programm dazu, dass es die türen schließt, einen augenblick wartet und dann erst dedn fahrstuhl fahren lässt? danke im voraus! |
Re: auf der suche nach einem befehl
Hallo und herzlich Willkommen im Forum!
Was Du suchst nennt sich Timer, ist eine Komponente, indest Du oben bei den Komponenten, auf den Reiter System, gleich als erstes. Oder, Du benutzt Sleep, oder Delay, such doch mal in der Code-Library nach Delay, damit kannst Du eine Pause im Programm machen und danach weiter arbeiten. |
Re: auf der suche nach einem befehl
only Timer, Sleep/Delay gibts imho nicht mehr unter Windows.
grez msch |
Re: auf der suche nach einem befehl
Sleep gibt es noch!
Und man kann ja die funktionalität simulieren! |
Re: auf der suche nach einem befehl
sleep gibts noch und delay ist ne selbstprogrammierte funktion (gibts hier) und imho für sowas genau das richtige
|
Re: auf der suche nach einem befehl
Hi,
Sleep gibt es sehr wohl noch und Delay ist das von Luckie, was auf GetTickCount basiert, also damit gemacht ist. Daher sagte ich ja auch, in der Code-Library nach Delay suchen, nciht nur aus Spass. ;) ![]() |
Re: auf der suche nach einem befehl
achso, tja, schon mal den Code genannter Delay-Funktion ausprobiert? Dort steht: Application.ProcessMessages. Das mag für viele Einsätze vieleicht reichen, aber baut das mal in eine Proc ein, und drückt den Close-Button eurer Anwendung. Die dürfte sich dann nach Ablauf des codes korrekt beenden. Windows basiert größten Teils auf Nachrichten, wenn ich diese Weiterleite, hab ich manchmal nicht viel von "sleep". Ausserdem gibts einen guten Grund warum man das nicht mehr unterstützt wird: Sleep/Delay gabs in DOSe, in einer Multitask-Umgebung ist diese "Syntax" schlicht und ergreifend schlechter Programmierstil.
Wenn schon, sollte eine solche Funktion bitte doch auch die Nachrichtenpipeline für meine Anwendung "stilllegen". nichtsdesotrotz viel Spass dabei. grez msch P.S. jetzt folgt bestimmt eine Grundsatzdiskusion mit n*10² Beiträgen? |
Re: auf der suche nach einem befehl
soweit so gut .
nur wie lautet denn jetzt der befehl mit dem ich dem fahrstuhl "sagen" kann das er warten soll? |
Re: auf der suche nach einem befehl
Hi,
Delphi-Quellcode:
Der steht jetzt 2,5 Sek. Wie Du Deinen Fahrstuhl fahren und anhalten lässt, können wir hier nicht wissen, manche von uns haben Ihre Glaskugeln in der Werkstatt, wegen Wartung und Tunning. ;)
//Fahrstuhl HALT!
Delay(2500); //Fahrstuhl WEITER! |
Re: auf der suche nach einem befehl
und wo muss man den code dann hinschreiben?
|
Re: auf der suche nach einem befehl
Da wo Du den Fahrstuhl anhälst und weiter fahren willst!!
Das können wir doch nicht wissen, zeig dochmal was Du bis jetzt hast, jedenfalls zwischen der Zeile wo Du den Fahrstuhl anhälst, und dann der Zeile wo Du den weiterfahren lässt, muss dieses Delay hin, und die ganze Prozedur von Luckie natürlich auch nicht irgendwo rein zwischen Deinen normalen Prozeduren. |
Re: auf der suche nach einem befehl
Code:
der fahrstuhl springt zwar. das macht aber erstmal nichts.
unit UFahrstuhl;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Panel2: TPanel; Panel7: TPanel; Panel8: TPanel; Panel9: TPanel; Panel10: TPanel; Label1: TLabel; Button1: TButton; Button2: TButton; Button4: TButton; Button5: TButton; Button6: TButton; button3: TButton; stuhl: TImage; procedure Button1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button5Click(Sender: TObject); begin stuhl.Top:=448; end; procedure TForm1.Button6Click(Sender: TObject); begin stuhl.Top:=560; end; procedure TForm1.Button4Click(Sender: TObject); begin stuhl.Top:=336; end; procedure TForm1.Button3Click(Sender: TObject); begin stuhl.Top:=224; end; procedure TForm1.Button2Click(Sender: TObject); begin stuhl.Top:=112; end; end. |
Re: auf der suche nach einem befehl
dann pack es immer vor das
Delphi-Quellcode:
Dann wartet er damit solange, wie bei delay(YYY) angegeben, und lässt den Fahrstuhl dann springen...
stuhl.Top:=XXX;
|
Re: auf der suche nach einem befehl
Hmm, also das macht so überhaupt keinen Sinn, da DU selbst die Bremse schon bist, weil Du immer einen Button drücken musst und das muss schonmal weg, Du musst da 1-2 Timer mit reinbringen, und dann nur noch ein Rauf- und Runter-Button einbauen, nicht 30 Buttons.
Wiedem auch sei, zwischen den Prozeduren der Buttons, schreibst Du die Prozedur von Luckie rein, und da wo der Aufzug warten soll, vor der Zeile schriebst Du das Delay(1000); rein. |
Re: auf der suche nach einem befehl
dann sagt er mir
Code:
Undefinierter bezeichner:'delay'
|
Re: auf der suche nach einem befehl
Zitat:
Delphi-Quellcode:
unit DelayUnit;
interface uses Windows, Forms; procedure Delay(MSecs: Integer); implementation procedure Delay(MSecs: Integer); var FirstTickCount : LongInt; begin FirstTickCount:=GetTickCount; repeat Application.ProcessMessages; {allowing access to other controls, etc.} //Application.HandleMessage; until ((GetTickCount-FirstTickCount) >= LongInt(MSecs)); end; end. Zitat:
|
Re: auf der suche nach einem befehl
Dann nimm entweder sleep oder schnappe Dir das Delay von unserem Luckie
und tippe die Procedure ein, damit Delphi das kennt. Dann funzt das auch. :wink: |
Re: auf der suche nach einem befehl
Danke für eure hilfe!
funktioniert jetz wunderbar!!!! :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz