Pause in ein Lazarus Programm einbauen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Have a nice Day
Beiträge: 59
Registriert: Fr 2. Nov 2012, 19:44

Pause in ein Lazarus Programm einbauen

Beitrag von Have a nice Day »

Ich habe folgendes Problem:

Ich habe ein Lazarus Programm, in dem an einer bestimmten Stelle eine 2 Sekunden lange Pause gemacht werden soll.
Nun kenn ich den Befehl für diese Pause nicht :/
Könnt ihr mir helfen?

Ich habe es schon mir pause(2000) oder delay(2000) versucht aber da kam jedes mal "Identifier not found".

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Pause in ein Lazarus Programm einbauen

Beitrag von Euklid »

Hi,
wenn man nicht gerade mit Threads programmiert, lässt sich das bei GUI-Programmen meines Wissens garnichtmal so leicht umsetzen .
Es gibt die TTimer-Komponente. Hiermit lässt sich in der Richtung einiges machen. Die ist aber nicht immer geeignet.

Viele Grüsse, Euklid

Linkat
Lazarusforum e. V.
Beiträge: 564
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Pause in ein Lazarus Programm einbauen

Beitrag von Linkat »

Hallo Have a nice Day,
am einfachsten ist eine Pause mit der Prozedur sleep(1000) [Einheit in ms] zu erzielen. allerdings wird der ganze PC zum Schlafen gebracht.

Eleganter geht es z. B. mit folgendem:

Code: Alles auswählen

uses LCLIntf;
procedure pause(const ms:integer);
var tstart,tende    :cardinal;
begin
  tstart:=GetTickCount;
  tstart:=tstart+ms;
  repeat
    tende:=GetTickCount;
    Application.ProcessMessages;
  until tende>tstart;
end;
 
ms in Millisekunden.

Viel Erfolg.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Pause in ein Lazarus Programm einbauen

Beitrag von theo »

Linkat hat geschrieben: am einfachsten ist eine Pause mit der Prozedur sleep(1000) [Einheit in ms] zu erzielen. allerdings wird der ganze PC zum Schlafen gebracht.
Was verstehst du unter PC? Ein Linux oder Windows legst du damit bestimmt nicht lahm, nur den Hauptthread deines Anwendung.

Linkat
Lazarusforum e. V.
Beiträge: 564
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Pause in ein Lazarus Programm einbauen

Beitrag von Linkat »

Hallo theo,
hast natürlich Recht.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Have a nice Day
Beiträge: 59
Registriert: Fr 2. Nov 2012, 19:44

Re: Pause in ein Lazarus Programm einbauen

Beitrag von Have a nice Day »

Danke Leute für eure Hilfe ! :)
Hat mir sehr geholfen

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Pause in ein Lazarus Programm einbauen

Beitrag von mschnell »

Have a nice Day hat geschrieben:Ich habe ein Lazarus Programm, in dem an einer bestimmten Stelle eine 2 Sekunden lange Pause gemacht werden soll.
Im "Mainthread" muss immer ereignisoriebntiert programmiert werden (sonst hängt die GUI des Programms). Also solltest Du keine "Pause"! einbauen, sondern einen TTimer verwenden und die Aktionen nach der gewünschten Zeit damit starten.

In einem "Worker Thread" kannst Du sleep() verwenden.

-Michael

Antworten