ButtonGadget reagiert nicht sofort auf Mausklick

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

es gibt wohl die Möglichkeit von delay(0) - einfach mal Forumsuche mit "delay(0)" füttern, sollte ein paar Infos liefern, ich hab grad leider keine Zeit...
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Peter aus der Nordheide
Beiträge: 34
Registriert: 18.05.2005 14:59

Beitrag von Peter aus der Nordheide »

Hallo Sunny,
Windowevent nimmt man, wenn man einen Prozess abzuarbeiten hat, auch wenn keine Windowevents anstehen.
Ja, ich habe ja hier einen "Prozess" - die 12 ineinander geschachtelten FOR - NEXT Schleifen, die die Permutation erzeugen - und der soll kurz unterbrochen werden, um zu sehen, ob der User den Prozess abbrechen will.
Wenn NEIN, dann soll er die nächste Reihe machen.

Also kein Prozess, der auf eine Usereingabe wartet, um dann weiterzuarbeiten.
Oder hohe Systemauslastung, wobei ich lieber das Delay nehmen würde
Hohe Systemauslastung wäre noch akzeptabel, wenn sichergestellt ist, daß die sonstigen Windowsereignisse abgearbeitet werden.

Ein Delay wäre mir auch lieber und auch sauberer, wenn es Verzögerungen im Microsekundenbereich gäbe.

Gruß Peter
Peter aus der Nordheide
Beiträge: 34
Registriert: 18.05.2005 14:59

Beitrag von Peter aus der Nordheide »

Hallo Batze,
Natürlich sagt der Compiler nichts, da 1/1000 für den gleich 0 ist. :wink:
Das nehme ich jetzt mal so hin, verstehen kann ich es jedoch nicht ! Warum sollte er nicht in Tausendstel rechnen ?
Ich meinte auch mehr einen Hinweis, wie : Es sind nur ganzzahlige Werte erlaubt.
Für eine andere Verzögerung einfach eine Variable machen und dann
Code:

Wait.l = 0
repeat
Wait + 1
if Wait = 1000
delay(1)
Wait = 0
endif

until windowevent()=#PB_Event_CloseWindow
Wenn ich das richtig sehe, kommt doch bei diesem Konstrukt ein Wert von 1,XX ms heraus, mit XX = Laufzeit der Schleife ??

Ich bräuchte aber einen Wert im Microsekundenbereich.

Gruß Peter
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Du kannst, wie bereits gesagt Delay(0) nehmen, der liegt meist unter 1 tausendstel, kann aber auch länger sein als Delay(1), je nach Ereignissen, oder du verschiebst das Delay eine oder 2 Schleifen nach aussen. Einfach mal testen, dann kappt's auch mit Lotto :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

@Peter adN:
Ich meinte ja auch, dass du Delay nicht jeden Schleifendurchgang machen sollst sondern in diesem Fall nur jedes Tausendste mal. Dann hast du 1/1000 für Delay().

Delay braucht natürlich einen Long-Wert (sollte aber in der Hilfe stehen).
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Delay braucht natürlich einen Long-Wert (sollte aber in der Hilfe stehen).
???
Das verstehe ich irgendwie nicht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

wiso long?
es kann doch alles haben ausser float und string? :?
da bin ich auch ratlos :?

edit:
float geht natürlich auch, es wird dan einfach gerundet
-.-"
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> es kann doch alles haben ausser float und string?
>= 0 sollte es aber auch sein :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

wird bei 0 nich die maximale cpu genutzt?
ka ahnung ob das stimmt, hab ich mal gelesen... :?
-.-"
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Viel zu Delay steht hier:
http://forums.purebasic.com/german/viewtopic.php?t=3968

@GS: Nicht ganz.

Ich erklärs mal mit 1/1000 = 0 für die, dies noch nicht verstanden haben.
Wie man sieht, sind 1 und 1000 ganzzahlig. Der Compiler rechnet nun
auch ganzzahlig! Also 1/1000 = 0.001 für PB = 0, da er 0.001 abrunden
muss. Es bringt auch nichts, wenn man 1.0/1000.0 schreibt, da wird zwar
in Floats gerechnet und es kommt auch 0.001 raus, aber die Funktion
Delay(LONG) hat als Parameter einen Long (ganzzahlig) verlangt, deshalb
wird 0.001 wieder in eine ganze Zahl gerundet (Casting).
Ich hoffe das ist verständlich

greetz
Remi
Antworten