Avatar billede jakobscafe Nybegynder
24. maj 2005 - 17:06 Der 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?
Avatar billede sjh Nybegynder
24. maj 2005 - 17:29 #1
Her er en lille test..

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
Avatar billede sjh Nybegynder
24. maj 2005 - 17:32 #2
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
Avatar billede ube1 Nybegynder
25. maj 2005 - 12:05 #3
Du kan også bruge:

Me.Refresh

Dette vil tvinge formen (og dens objekter) til at "tegne sig selv", men uden at tillade andre events.
Avatar billede sjh Nybegynder
03. juni 2005 - 19:49 #4
hallo jakobscafe
Avatar billede jakobscafe Nybegynder
26. oktober 2005 - 21:37 #5
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester