Seite 2 von 3
Verfasst: 13.07.2005 23:42
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...
Verfasst: 14.07.2005 00:35
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
Verfasst: 14.07.2005 00:52
von Peter aus der Nordheide
Hallo Batze,
Natürlich sagt der Compiler nichts, da 1/1000 für den gleich 0 ist.
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
Verfasst: 14.07.2005 10:09
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

Verfasst: 14.07.2005 11:18
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).
Verfasst: 14.07.2005 12:07
von ts-soft
>> Delay braucht natürlich einen Long-Wert (sollte aber in der Hilfe stehen).
???
Das verstehe ich irgendwie nicht
Verfasst: 14.07.2005 12:13
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
Verfasst: 14.07.2005 12:29
von ts-soft
>> es kann doch alles haben ausser float und string?
>= 0 sollte es aber auch sein

Verfasst: 14.07.2005 12:37
von Green Snake
wird bei 0 nich die maximale cpu genutzt?
ka ahnung ob das stimmt, hab ich mal gelesen...

Verfasst: 14.07.2005 13:09
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