24. maj 2005 - 17:06Der er
4 kommentarer og 1 løsning
Opdater Form mens der læses data i do-loop
Dav - jeg skal læse tekst fra en temmelig stor tekstfil, og mens filen bliver indlæst, vil jeg underholde med hvor mange linier den hidtil har indlæst. I et do while not eof-loop læses tekstfilen med lineinput, og hvergang opdateres label1.caption med 1
Det virker sådan set også OK, men desværre bliver min Form ikke opdateret, før indlæsningen er færdig, og dte tager ca 20 sekunder (1500000 linier)
Så har jeg forsøgt mig med en timer hvert 2. sekund som udfører en DoEvents, men det hjalp ikke.
Ved nogen, hvordan man får opdateret felter på en form medens programmet looper?
Private Sub Form_Load() Dim lCount As Long Me.Show ' Her vises form da loopet køre under Load.. Do While lCount < 1500000 lCount = lCount + 1 ' Ligger en til DoEvents ' Her laves der en kort opdatering Me.Caption = lCount ' Vises i titlebar Loop End Sub
hvis du vil lave det med en "Slaks" timer så er her en:
Private Declare Function GetTickCount Lib "kernel32" () As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub DoEventTime(EventTime As Long) Static mTime As Long If EventTime > 0 Then If mTime < GetTickCount Then mTime = (GetTickCount + EventTime) DoEvents: Sleep 1 End If End If End Sub
Private Sub Form_Load() Dim lCount As Long Me.Show ' Her vises form da loopet køre under Load.. Do While lCount < 1500000 lCount = lCount + 1 ' Ligger en til DoEventTime 2000 ' Her laves der en kort opdatering hvert 2. sek.. 1. sek = 1000 Me.Caption = lCount ' Vises i titlebar Loop End Sub
Nja, kom da til at virke - ved at DoEvents hvergang den har læst 10000 linier - men det øgede så også tiden for at løbe filen igennem. Men pyt - Det er rart at se der er liv! Dog ville jeg hellere have der blev opdateret f.eks. hvert sekund, men VBs indbyggede timere duede ikke.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.