Listicongadget langsam füllen
Verfasst: 27.12.2005 20:21
Hallo,
hier ein Auszug aus meiner Programmstruktur:
In zwei Punkten verstehe ich PureBasic nicht:
1. Ist Grafik=0 findet das Programm alle Lösungen in < 1 ms und füllt das Listicongadget korrekt.
Ist Grafik=1 dauert die Suche ca. 1 min 30 s (für die Visualisierung möchte ich die Rechenzeit variabel gestalten und auf einem imagegadget anzeigen) und ich hoffte, das listicongadget füllt sich langsam. Obwohl jede Lösung sofort in das listicongadget eingetragen wird, bleibt das Fenster die gesamte Rechenzeit grau und erst nach den 1 1/2 min wird das listicongadget korrekt angezeigt. So möchte ich das nicht haben.
2. Eigentlich reicht es aus, wenn anzsuche und loesung lokal in rechnung() definiert werden (habe ich dort auch mit deftype versucht), dann ist aber die Anzeige der Variable Statistik mit Nullen gefüllt. Warum?
Danke für Antworten.
Rainer
hier ein Auszug aus meiner Programmstruktur:
Code: Alles auswählen
deftype.b grafik ;<>0 wenn Visualisierung gewünscht
deftype.l loesung ;zähler aller Lösungen
deftype.l anzsuche ;zähler aller Suchvorgänge
procedure addloesung ()
shared loesung
... ;erweitert mit addelement die Liste der Lösungen und trägt die Lösung ein
loesung=loesung+1
... ;füllt mit addgadgetitem und setgadgetitemtext ein mehrspaltiges Listicongadget mit einem weiteren Wert (eben dieser Lösung)
endprocedure
procedure suche ()
;sucht rekursiv (max. 9 Ebenen) und mit zigtausend Schleifendurchläufen die nächste Lösung
shared anzsuche
shared grafik ;<>0, wenn Visualisierung der Suche gewünscht
if (Lösung gefunden)
addloesung()
else
for ... to ...
;nächste Variante
anzsuche=anzsuche+1
if grafik ;wenn Visualisierung gewünscht
delay(5) ;wird später noch programmiert
endif
if (Rekursionsbedingung erfüllt)
suche() ;Rekursion, max. 9 Ebenen
endif
next
endif
endprocedure
procedure rechnung ()
shared anzsuche, loesung
deftype.s statistik ;lokale Variable
...;Vorbereitungen: Fenster löschen, Liste der Lösungen leeren, Startzeit ermitteln
anzsuche=0
loesung=0
textgadget(...,statistik)
listicongadget(...) erstellen und mehrere Spalten darin einrichten
suche()
statistik=(anzsuche und loesung in Text gewandelt)
setgadgettext(...,statistik)
...;Abfrageschleife Zurück und Weiter-Button, Fenster geschlossen
endprocedure
...;Vorbereitungen im Hauptprogramm
...;Schleife mit Auswahl des Programmteiles (z.B. rechnung()) oder End-Bedingung
end
1. Ist Grafik=0 findet das Programm alle Lösungen in < 1 ms und füllt das Listicongadget korrekt.
Ist Grafik=1 dauert die Suche ca. 1 min 30 s (für die Visualisierung möchte ich die Rechenzeit variabel gestalten und auf einem imagegadget anzeigen) und ich hoffte, das listicongadget füllt sich langsam. Obwohl jede Lösung sofort in das listicongadget eingetragen wird, bleibt das Fenster die gesamte Rechenzeit grau und erst nach den 1 1/2 min wird das listicongadget korrekt angezeigt. So möchte ich das nicht haben.
2. Eigentlich reicht es aus, wenn anzsuche und loesung lokal in rechnung() definiert werden (habe ich dort auch mit deftype versucht), dann ist aber die Anzeige der Variable Statistik mit Nullen gefüllt. Warum?
Danke für Antworten.
Rainer