I toppen af det kodevindue, der knytter sig til din form. API-kald er måske lidt voldsomt, det fungerer ved at du kalder funktioner der ligger i diverse dll-filer i din windowsmappe (i dette tilfælde "kernel32.dll" der ligger i din SYSTEM-mappe under windows), og er lidt "avanceret" :o) Og pas på med erklæringen af funktionen - den er følsom for den mindste fejl, mangler et mellemrum eller er et bogstav skrevet med stort i stedet for lille, får du fejl.
Hvis du vil nøjes med en mindre forkromet løsning, der virker 100% efter hensigten, kan du bruge timeren som tubber har forklaret om - hans første svar er lige til at kopiere :o)
Synes godt om
Slettet bruger
17. december 2002 - 09:40#13
Hov. Du skal nok have Private foran Declare. Ellers må det da vist give fejl. :o)
Jeg har et loop i mit program, som kører alt for hurtigt, så for hvert gennemløb, skal jeg have indsat en forsinkelse i afviklingen (I Pascal plejede jeg bare at skrive delay(1000); - og så stoppede hele afviklingen i et sekund, kan dette ikke gøre ligeså enkelt i VB ?
Nææ - du skal have fat i en Timer. - Eller det API-kald der er blevet nævnt. Timeren er faktisk ret smart, og kan bruges til mange ting. Prøv at læs de få linier der står om den i hjælpen.
Er du i tvivl om hvordan timeren skal bruges, så spørg.
Jeg undrer mig over, hvad mon det er for et loop der "kører for hurtigt" ??? Hvis det er fordi en bruger skal nå at læse noget tekst eller lignende i hvert loop, kan du jo lave en msgbox der spørger brugeren hvornår han/hun er klar til at fortsætte. Så kan brugeren selv bestemme om der skal gå 1 sekund eller et minut... Bare en ide
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim bLoopRunning As Boolean
Public Sub TheLoop() Const LoopHastighed As Long = 50 'Hastighed på Loop Static TickCount As Long Static LastTickCount As Long
Static lCount As Long
Do While bLoopRunning TickCount = GetTickCount() If TickCount - LastTickCount > LoopHastighed Then LastTickCount = TickCount '-------------------- her skriver du din loop kode --------------------
lCount = lCount + 1 Me.Caption = lCount
'-------------------- her skriver du din loop kode -------------------- End If DoEvents Loop End Sub
Private Sub Form_Load() Me.Show bLoopRunning = True Call TheLoop End Sub
Private Sub Form_Unload(Cancel As Integer) bLoopRunning = False Call TheLoop End Sub
Private Declare Function GetTickCount Lib "kernel32" () As Long
Public Sub delay(LoopHastighed As Long) Dim bLoopRunning As Boolean Static TickCount As Long Static LastTickCount As Long bLoopRunning = True Do While bLoopRunning TickCount = GetTickCount() If TickCount - LastTickCount > LoopHastighed Then LastTickCount = TickCount bLoopRunning = False End If DoEvents Loop End Sub
Private Sub Form_Load() Static lCount As Long Me.Show Do While lCount < 10 delay 500 lCount = lCount + 1 Me.Caption = lCount Loop End Sub
Hun skal nok bruge det til at nedsætte hastigheden på et loop eller for i =... ;-)
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.