Seite 2 von 2
Verfasst: 18.02.2005 19:08
von bluejoke
Man sollte aber WaitWindowEvent() verwenden, wenn nur WindowEvents vorkommen. Nur wenn dazwischen irgendetwas anderes auftreten kann sollte man WindowEvent() benutzen.
Sicher verzögert Delay(10) zehnmal so lang wie Delay(1) - sollte es zumindest, dadurch wird dein Programm aber nicht zehnmal langsamer.
Außerdem ist die Reaktionszeit auf allen PCs von denen ich irgendwelche Tests gehört habe ganz passabel. Auf jeden Fall aber senkt es die CPU-Auslastung sehr stark.
Verfasst: 18.02.2005 19:15
von remi_meier
Um det hier zu stoppen:
Code: Alles auswählen
Repeat
Event = WindowEvent()
If Event = 0
Delay(10)
Else
;andere Events
EndIf
Until Quit
Das ist die 'offizielle' Variante (von Fred bestätigt) um mit WindowEvent() anstatt mit WaitWindowEvent() zu arbeiten!
Und jap, Gosub ist schneller als Procedure, hat aber viele Nachteile!
greetz
remi
Verfasst: 18.02.2005 19:30
von nco2k
@bluejoke
amen
@nicolaus
1. mit Delay(1) kommst du von den 100% cpu auslastung zwar weg, aber verbrätst immernoch viel zu viel cpu power umsonst. vielleicht nicht in so einem simplen beispiel aber in grossen projekten wirds umso deutlicher. man sollte schon WaitWindowEvent() verwenden da sonst die cpu immer umsonst rechnet auch wenn quasi nichts in deinem programm passiert. okay das tut es ja sowieso aber der leerlaufprozess ist ja was anderes.

imho gibt es nichts (ausser bei games oder ähnliches) was sich mit WaitWindowEvent() und einem callback nicht realisieren lassen würde.

zur not hilft auch ein thread. ob ein Delay() am anfang oder am ende steht ist ja auch "eigentlich" egal, es ist aber eben einfach "sauberer" wenn dein programm eine pause macht, nach den ganzen rechenoperationen anstatt davor... logisch oder?
2. klar dim ist sehr nützlich das streite ich nicht ab, aber hier in dem beispiel meiner meinung nach total fehl am platz. ich sagte auch nicht das du mit variablen arbeiten sollst, ich habe in meinem beispiel auch kein dim oder ähnliches und keine einzige variable ausser EventID.
3. jo kein problem kann passieren, wollte das nur nochmal betonen da viele anfänger den code einfach so übernehmen werden und daran nicht mehr denken.
@remi_meier
jo das wäre der korrekteste weg mit WindowEvent()
@drunken-duck
hoffe du hast nun genug infos.
c ya,
nco2k
Verfasst: 18.02.2005 21:31
von drunken-duck
danke für die schnellen antworten
*kopfkratz*
schonmal alles ganz interessant...wenn ich es ganz verstanden habe..

werde haben...will werden
aber ohne jetzt nerven zu wollen, auf mein "eigentliches" problem bzw. frage habe ich noch keine antwort.
egal wie bescheuert oder unschön mein code aussieht. letztlich ist doch eigentlich nichts falsch, oder?! erkennt irgendjemand etwas was diese ganze sache extrem instabil machen würde? wie gesagt läufts bei mir ja problemlos. "fensterauf, fensterzu,fenster2auf,fenster1zu, kein programmabbruch". aber gebe ich jetzt das kompilierte proggy weiter bzw. lasse es auf win2000 laufen crasht es.
oder drück ich mich schon wieder so komliziert aus ... mmmhhh

Verfasst: 23.02.2005 00:05
von drunken-duck
...mmmh...durch schmerzen lernt man wohl doch am besten...
habe den kompletten code von gosub-return auf procedure umgestellt.
habe mir dabei den code von nco2k als vorbild genommen.
jetzt haut es ohne probleme hin.
werde mir also die proceduren angewöhnen.
danke nochmal
Verfasst: 23.02.2005 00:19
von Kaeru Gaman
drunken-duck hat geschrieben:...mmmh...durch schmerzen lernt man wohl doch am besten...
habe den kompletten code von gosub-return auf procedure umgestellt.
habe mir dabei den code von nco2k als vorbild genommen.
jetzt haut es ohne probleme hin.
werde mir also die proceduren angewöhnen.
danke nochmal
hast vielleicht ne doppelte variable drinnen gehabt...
GOSUB verwende ich auch mal, aber nur wenn ich einen teil des programms,
der viele variablen mitbenutzt, zur übersichtlichkeit aus der hauptschleife fernhalten will...