windows mal 2

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

Beitrag 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.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag 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
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag 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. :lol: 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. :wink:

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
drunken-duck
Beiträge: 10
Registriert: 15.09.2004 08:12
Wohnort: Berlin
Kontaktdaten:

Beitrag von drunken-duck »

danke für die schnellen antworten :allright:

*kopfkratz*
schonmal alles ganz interessant...wenn ich es ganz verstanden habe.. :o 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. :cry:

oder drück ich mich schon wieder so komliziert aus ... mmmhhh /:->
-=DD=-
"Nicht der Fortschritt ist entscheidend, sondern seine Richtung."
"Ja, ja ich weiß...dir wäre das nicht passiert." ;)
Benutzeravatar
drunken-duck
Beiträge: 10
Registriert: 15.09.2004 08:12
Wohnort: Berlin
Kontaktdaten:

Beitrag 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. :shock:
werde mir also die proceduren angewöhnen. :oops:
danke nochmal
-=DD=-
"Nicht der Fortschritt ist entscheidend, sondern seine Richtung."
"Ja, ja ich weiß...dir wäre das nicht passiert." ;)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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. :shock:
werde mir also die proceduren angewöhnen. :oops:
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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten