Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delay abbrechen (https://www.delphipraxis.net/77500-delay-abbrechen.html)

XXcD 20. Sep 2006 13:32


Delay abbrechen
 
Hallo,
ich wollte mal fragen ob man die delay Funktion extern(mit einer anderen procedure) abbrechen kann?

fwsp 20. Sep 2006 13:36

Re: Delay abbrechen
 
Delphi-Quellcode:
var StillDelay: Boolean;

...
StillDelay := True;

...

while StillDelay do
begin
  Delay;
end;

...

himitsu 20. Sep 2006 13:38

Re: Delay abbrechen
 
Schau dir mal die verschiedenen Delay-Versionen an, bei den meisten kannst du die Abbruchbedingung erweitern ;)

z.B. in http://www.delphipraxis.net/internal....php?p=578#578

Delphi-Quellcode:
  until ((stop - start ) >= msec) or irgendwasanderes;

XXcD 20. Sep 2006 13:44

Re: Delay abbrechen
 
Also ich hab jetzt verstanden was da gemeint ist aber der nimmt das nicht an der sagt immer ein error:
Zitat:

until (stop - start ) >= msec or Button1;
ist da was falsch oder wieso geht das nicht

Klaus01 20. Sep 2006 14:23

Re: Delay abbrechen
 
Zitat:

Zitat von XXcD
Also ich hab jetzt verstanden was da gemeint ist aber der nimmt das nicht an der sagt immer ein error:
Zitat:

until (stop - start ) >= msec or Button1;
ist da was falsch oder wieso geht das nicht

until ((stop - start ) >= msec) and (not Button1.clicked);

Du musst Dir eine Variable schaffen, die festhält das der Button
gedrückt wurde. Button1.clicked soll das nur verdeutlichen.

Einfacher wäre es mit einer Checkbox zu lösen.

Grüße
Klaus

Die Muhkuh 20. Sep 2006 14:28

Re: Delay abbrechen
 
Delphi-Quellcode:
var
  StopDelay: Boolean = false;

// Buttonclick
begin
  StopDelay := true;
end;

// Delay
[...]
until ((stop - start ) >= msec) and (StopDelay);
So ungefähr.

himitsu 20. Sep 2006 14:49

Re: Delay abbrechen
 
Code:
until ((stop - start ) >= msec) [color=#ff0000][b]or[/b][/color] StopDelay;
UNTIL verläßt die Schleife, wenn TRUE.

@Spider: deines bricht erst ab, wenn der Button gedrückt wurde und die Zeit abgelaufen ist.

XXcD 20. Sep 2006 14:59

Re: Delay abbrechen
 
wenn ich das compilieren will sagt der mir nen error in der variable an. Was hab ich denn jetzt wieder falsch gemacht?
Kann es sein, dass es daran liegt dass ich delphi 10 light benutze?

himitsu 20. Sep 2006 15:05

Re: Delay abbrechen
 
Was für einen Error?

Und hast du die auch global definiert?

Klaus01 20. Sep 2006 15:08

Re: Delay abbrechen
 
-- Mist verzapft --
gelöscht.

grüße
Klaus

XXcD 20. Sep 2006 15:14

Re: Delay abbrechen
 
Undeclared identifer: 'StopDelay'
Komisch die Variable hab ich doch drin wieso sagt der denn dass die nicht deklariert ist.
Also mit dem global das hab ich wohl nicht wie muss ich das denn machen?

XXcD 20. Sep 2006 16:47

Re: Delay abbrechen
 
Was ist denn jetzt??? Wie muss ich das machen kann mir nicht einer genau erklären wie ich das machen muss?

inherited 20. Sep 2006 18:22

Re: Delay abbrechen
 
Pushen ist erst nach 24 stunden erlaubt :warn:
Ohne Quelltext können wir dir leider nicht helfen :roll:

XXcD 20. Sep 2006 20:48

Re: Delay abbrechen
 
Ok hier ist der quelltext ich brauch nur den stopdelay rein:
Zitat:

unit Unit1;

interface

uses
Windows, Messages, Shellapi, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, ImgList, Menus, StdCtrls, jpeg, ExtDlgs;

type
TForm1 = class(TForm)
Edit2: TEdit;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Klickomat: TTrayIcon;
Image4: TImage;
Edit4: TEdit;
Image5: TImage;
ComboBox1: TComboBox;
Edit1: TEdit;
Edit3: TEdit;
Image7: TImage;
Image8: TImage;
procedure Image4Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure KlickomatClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure delay(msec:longint);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.delay(msec:longint);
var
start,stop:longint;
begin
start := gettickcount;
repeat
stop := gettickcount;
application.processmessages;
until (stop - start ) >= msec;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
i:=0;
REPEAT

begin i++
ShellExecute(Application.Handle, 'open',
PChar('http://wow..............com'), nil, nil,


SW_ShowNormal);
delay( 1920000);
end; UNTIL i=4
end;

procedure TForm1.KlickomatClick(Sender: TObject);
begin
ShellExecute(Application.Handle, 'open',
PChar('http://wow.............com'), nil, nil,
SW_ShowNormal);

end;


end.

inherited 21. Sep 2006 12:03

Re: Delay abbrechen
 
1. Benutze biutte die Delphi-Tags
2. Ohne Code-einrückung schwer zu erkennen -.-
3. i++ gibt es in delphi nicht! Benutze
Delphi-Quellcode:
inc(i);
oder
Delphi-Quellcode:
i:=i+1;
4. Meiner meinung nach kann man URL's nicht mit ShellExecute aufrufen (Lieber Browser damit oeffnen mit parameter als URL)
5. Ist es in diesem Falle unnötig Delay als procedure von TForm1 zu vereinbaren
6. Zu deinem Problem: Ich sehe da nirgens ein StopDelay. Du kannst eine Boolsche Variable nehmen und diese bei Buttonklick o.ä. auf true setzen und diese bedingung (wie oben beschrieben) bei der abbruchbedingung des Delay mit einbauen.

himitsu 21. Sep 2006 12:17

Re: Delay abbrechen
 
Zitat:

4. Meiner meinung nach kann man URL's nicht mit ShellExecute aufrufen (Lieber Browser damit oeffnen mit parameter als URL)
Es ist schon möglich.
Entweder direkt (wie oben), oder als Parameter an einen Browser.

XXcD 21. Sep 2006 14:05

Re: Delay abbrechen
 
ich weiß dass das mit dem boolean nicht drin ist deshalb wollte ich ja auch dass das einer in den quelltext einbaut und das wieder postet. Das wäre echt nett da ich einfach nicht weiter komme.

inherited 21. Sep 2006 14:06

Re: Delay abbrechen
 
Woran schietert es denn? ;) Wer nicht probiert, lernt nichts^^

XXcD 21. Sep 2006 18:59

Re: Delay abbrechen
 
Ja ich hab das schon 1000 mal probiert aber der sagt immer den error an den ich oben beschrieben habe. Der nimmt das nicht an mit der boolean variablen.

inherited 21. Sep 2006 20:20

Re: Delay abbrechen
 
Dann Poste doch mal den Quelltext der NICHT funktioniert, damit wir dir helfen können :roll:

XXcD 22. Sep 2006 15:03

Re: Delay abbrechen
 
Also das Problem hat sich gerade ebend erledigt ich musste die Variable StopDelay einfach nur Global deklarieren. Da hätte ich auch von Anfang an drauf kommen können :wall: :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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