BlitzMax+MaxGUI Keine Rückmeldung

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

FWeinb

ehemals "ich"

Betreff: BlitzMax+MaxGUI Keine Rückmeldung

BeitragSo, Apr 19, 2009 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mal wieder ein Problem:

Wenn ich in BlitzMax in einem BlitzMax Projekt eine Schleife mach, dann kommt es sehr oft vor das das Programm komplett hängt (Keine Rückmeldung)

Ich habe ein Kleines Beispiel zusammen Gebastelt welches den Effekt Zeigt

Code: [AUSKLAPPEN]

Import MaxGui.Drivers

Strict

Local Window:TGadget = CreateWindow("Test",601,230,311,494,Null,WINDOW_TITLEBAR|WINDOW_MENU|WINDOW_STATUS|WINDOW_CLIENTCOORDS|WINDOW_ACCEPTFILES)
Local Button:TGadget = CreateButton("Test Button",80,390,80,40,Window,0)

SeedRnd MilliSecs()
Repeat
      Select WaitEvent ()

         Case EVENT_GADGETACTION
            Select EventSource()
               Case Button
                  While Not KeyHit(1)
                  
                  Wend         
               End Select
         Case EVENT_WINDOWCLOSE
               End
      End Select       
Forever



Wie kann ich es jetzt Schaffen das ich troßdem, auch wenn ich in der Schleife bin, das Fenster noch normal schließen kann.

mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs
  • Zuletzt bearbeitet von FWeinb am So, Apr 19, 2009 21:12, insgesamt einmal bearbeitet
 

ChristianK

BeitragSo, Apr 19, 2009 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
WaitTimer sollte da nicht stehen. Bei WaitEvent wird schließlich auch schon gewartet.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

FWeinb

ehemals "ich"

BeitragSo, Apr 19, 2009 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, aber das Ändert leider auch nichts an dem Probelm.

mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

BladeRunner

Moderator

BeitragSo, Apr 19, 2009 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Die mainloop bei einer App ist ja diese Repeat forever, es ist also sinnfrei noch eine zweite Mainloop reinzupacken, denn dann gerät das Programm natürlich in eine Schleife bei der keine weiteren Events mehr abgefangen werden (können).
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

FWeinb

ehemals "ich"

BeitragSo, Apr 19, 2009 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte aber einen TCP Stream Auslesen und das geht doch nur mit einer Extra Schleife ?

Ich lese das ganze So aus:

Code: [AUSKLAPPEN]

Local Inhalt:String
Local Stream:TSocketStream = TSocketStream.CreateClient(Host,80)

While not Eof(Stream)
    Inhalt = Inhalt + ReadLine(stream)
Wend


Anders kann man das doch garnicht machen ?

mfg

ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

BladeRunner

Moderator

BeitragSo, Apr 19, 2009 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest in jedem Durchgang (solange nicht eof() erreicht ist ) eine Zeile auslesen, ohne while-wend
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

amon

BeitragSo, Apr 19, 2009 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Die andere Möglichkeit, will Dich aber damit jetzt nicht verwirren, ist diese zweite Schleife in einen Hintergrund-Thread auszulagern.

Aber das würd ich dir erst als zweiten Schritt empfehlen, wenn Dein Code erstmal auch so richtig läuft und das tut was du willst, denn mit dem Threading kommen dafür noch ein paar andere kompliziertere Dinge dazu Smile
 

FWeinb

ehemals "ich"

BeitragMo, Apr 20, 2009 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok danke werde ich versuchen
Mfg
Ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group