Programmfenster friert ein -> neues Problem
Übersicht

danibertBetreff: Programmfenster friert ein -> neues Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich lese eine Datei aus und verarbeite den Inhalt, den Fortschritt zeige ich mit einer ProgressBar an. Wenn ich größere Dateien verarbeite und währendes Vorganges nichts mache, funktioniert alles problemlos. Klicke ich aber außerhalb des Programmfensters, oder versuche das Fenster herumzuschieben, bleibt die ProgressBar stehen. Teilweise wird auch der Fensterinhalt weiß. Wenn dieser Zustand etwas länger andauert, steht sogar in der Titelzeile meiner Anwendung "Keine Rückmeldung" Das Programm arbeitet aber im Hintergrund ohne Probleme und aktualisiert das Fenster wieder, sobald die Datei verarbeitet wurde. Wie bekomme ich das in den Griff? BlitzMax: [AUSKLAPPEN] Import maxgui.drivers |
||
- Zuletzt bearbeitet von danibert am Fr, Jul 16, 2010 16:41, insgesamt einmal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte auch einmal so ein Problem gehabt.
Es liegt daran, dass dein Programm nicht mehr richtig mit Windows kommuniziert. (z.B. keine Events abfragt) Genau dann kommt die "Keine Rückmeldung". Wenn dir die während der Berechnung stattfindenen Events egal sind, nutze diesen Code: BlitzMax: [AUSKLAPPEN] If PeekEvent() Then WaitEvent() (Die If-Abzweigung dient zur Verhinderung von langen Pausen in der Berechnung.) Falls du auf die Events reagieren möchtest, musst du stattdessen den entsprechenden Code auch in der "Arbeitsschleife" ansprechen. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
danibert |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ohne Abfrage von Events klappt das, danke für den Tipp.
Ein Problem habe ich noch: Ich möchte eine Schaltfläche zum Abbrechen einbauen, bekomme aber jetzt einen Fehler: Unable to Convert from maxgui.maxgui.TGadget to Int BlitzMax: [AUSKLAPPEN] Import maxgui.drivers Bin echt ratlos... |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuchs so:
BlitzMax: [AUSKLAPPEN] 'Einfrieren des Fensters verhindern EventID() gibt nur einen Integer zurück, der die Art des Events kennzeichnet (welche Zahl das ist, interessiert uns kaum, wir müssen nur wissen, dass die Zahl, die beim Drücken eines Buttons von EventID() geliefert wird, von MaxGUI als Konstante EVENT_GADGETACTION definiert wurde), btn_Cancel hingegen ist vom Typ TGadget. Bei deinem If-Konstrukt versuchtest du also, ein Int mit einem TGadget zu vergleichen, daher der Fehler. Um zu prüfen, von welchem Gadget das Event ausgelöst wurde, nimmt man EventSource(). mfG Holzchopf |
||
danibert |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
...und noch ein Problem ist aufgetaucht:
wenn ich nun versuche, Dateien größer als 1GB einzulesen, bekomme ich keinen Ladebalken mehr und das Programm läuft anscheinend in einer endlosen Schleife. Ich dachte zuerst, es liegt an meinen Float Variablen und habe diese alle gegen Double ausgetauscht - leider ohne Erfolg. Woran kann das liegen? |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist die Datei zufälligerweise 2 GiB groß?
Dann kommt es zu einem Ganzzahlüberlauf bei dem zurückgegebenen Integer der Funktion "FileSize". (Aus 2 GiB werden dann -2 GiB.) Falls es nicht daran liegt, solltest du mal mit den Debug-Funktionen schauen, was das Programm wirklich macht. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group