Discussion:
ProgressBar bleibt manchmal in Mitte stehen
(zu alt für eine Antwort)
Christian Vogelpohl
2006-01-29 13:25:04 UTC
Permalink
Hallo

Ich habe ein Modul geschrieben, dass Zeilen aus einer Text-Datei
(Ascii-Format) ausliest. Der Fortschritt sollte in einer Progressbar der
Klasse "MSComctlLib.ProgCtrl.2" angezeigt werden. Das Maximum habe ich
auf die Anzahl der in der Textdatei vorhandenen Zeilen gesetzt. Die
Eigenschaft Value aktualisiere ich stets mit einer CounterVariablen, die
ich mitsamt der Zeilen in einer Schleife laufen lasse.

Der Code sieht wie folgt aus:

FN = FreeFile()
Open datei For Binary Access Read As #FN
strTemp = Space(LOF(FN))
Get #FN, , strTemp
Close #FN
strFileText = strTemp

'Anzahl Zeilen ermitteln
astrData() = Split(strFileText, vbCrLf)

'Progressbar
Form_Formular1.PB1.Max = Format$(UBound(astrData) + 1, "#,##0")


'Artikelliste lesen: Header 100
Open datei For Input As #1
Do While Not EOF(1)
Line Input #1, zeile1
countTemp = countTemp + 1
werte_zeile_aus zeile1
Form_Formular1.PB1.Value = countTemp
Loop
Close #1


Nun läuft bei manchen Durchläufen der ProgressBalken durch und
funktioniert einwandfrei und manchmal bleibt er an irgendeiner Stelle
stehen.
Wie kann ich sicherstellen, dass der Balken bis zum Ende durchlüft?

Mit freundlichen Grüßen
Christian
unknown
2006-01-29 13:39:06 UTC
Permalink
Hallo Christian,
"Christian Vogelpohl" schrieb
Hallo
Ich habe ein Modul geschrieben, dass Zeilen aus einer Text-Datei
(Ascii-Format) ausliest. Der Fortschritt sollte in einer Progressbar der
Klasse "MSComctlLib.ProgCtrl.2" angezeigt werden. Das Maximum habe ich
auf die Anzahl der in der Textdatei vorhandenen Zeilen gesetzt. Die
Eigenschaft Value aktualisiere ich stets mit einer CounterVariablen, die
ich mitsamt der Zeilen in einer Schleife laufen lasse.
[..]
Form_Formular1.PB1.Value = countTemp
schreib mal hier: doevents
Nun läuft bei manchen Durchläufen der ProgressBalken durch und
funktioniert einwandfrei und manchmal bleibt er an irgendeiner Stelle
stehen.
Wie kann ich sicherstellen, dass der Balken bis zum Ende durchlüft?
Ich mache meine Aktualisierungsanzeige in der Statuszeile. Seit dem ich nach
jedem Setzen der Statuszeile die Doevents-Funktion eingesetzt habe, habe ich
das Problem mit der Anzeige die nicht weiterläuft nicht mehr.

Gruß Georg
Thomas Möller
2006-01-29 14:01:44 UTC
Permalink
Hallo Christian,
Post by Christian Vogelpohl
Ich habe ein Modul geschrieben, dass Zeilen aus einer Text-Datei
(Ascii-Format) ausliest. Der Fortschritt sollte in einer Progressbar
der Klasse "MSComctlLib.ProgCtrl.2" angezeigt werden. Das Maximum
habe ich auf die Anzahl der in der Textdatei vorhandenen Zeilen
gesetzt. Die Eigenschaft Value aktualisiere ich stets mit einer
CounterVariablen, die ich mitsamt der Zeilen in einer Schleife laufen
lasse. Nun läuft bei manchen Durchläufen der ProgressBalken durch und
funktioniert einwandfrei und manchmal bleibt er an irgendeiner Stelle
stehen.
Wie kann ich sicherstellen, dass der Balken bis zum Ende durchlüft?
nur zur Sicherheit: Wenn der Balken nicht bis zum Ende durchläuft was
passiert dann mit der Einleseroutine? Werden alle Datensätze abgearbeitet?
Oder gibt es auch dort Probleme?

CU
--
Thomas

Homepage: www.Team-Moeller.de
Christian Vogelpohl
2006-01-29 16:30:10 UTC
Permalink
Alle Datensätze werden komplett bearbeitet. Die Lösung mit DoEvents
scheint sehr gut zu funktionieren. Vielen Dank
mfg
Christian
Olaf Rabbachin
2006-01-29 19:01:11 UTC
Permalink
Hi,
Post by Christian Vogelpohl
Der Fortschritt sollte in einer Progressbar der
Klasse "MSComctlLib.ProgCtrl.2" angezeigt werden.
pfui auch. Für einen einfachen ProgressBar brauchst du nicht wirklich die
ActiveX-Keule hervorzuzaubern.
Schau mal auf meine HP - dort findest du ein PB-Unterformular, dass du ganz
einfach einbinden kannst

Bis dann,
Olaf
--
My .02: www.Resources.IntuiDev.com
Loading...