Gå til innhold

Fikse "delay" i For-Next kommando i VB..


Anbefalte innlegg

Jeg driver på å lager et program ut ifra en oppgave i boka mi her. Skal få alle farger (RGB 0-255) til å printe i formen.

 

 

 Private Sub Command1_Click()
Dim iTeller As Integer
Dim iWait As Integer
   For iTeller = 0 To 255
   For iWait = 0 To 100

   Form1.BackColor = RGB(iTeller, 255 - iTeller, iTeller / 5)
   
   Print iWait
Next
Next

End Sub

 

Her printer den ut alle fargene, men den eneste måten å få delay på som jeg har funnet ut er å la den telle til et tall(nå 100) i hver gjentakelse...

 

Problemet da er at den bruker så mye prosessorkraft, så finnes det noen annen metode å få delay på?

 

tænks

 

 

:tease::dribble::thumbup::w00t:colakork :w00t::thumbup::dribble::tease:

Lenke til kommentar
Videoannonse
Annonse

Vet ikke svaret, men når vi hadde Assembler på skolen fant vi kjapt ut at ei typisk For/next sløyfe var en dårlig ting å bruke som delay. Tida vil nemlig være forskjellig fra maskin til maskin som kjører programmet. En pentium 100 brukte kanskje 5 sekunder på å gå gjennom tellinga, mens en 500Mhz brukte 1 sekund.

I assembly regna vi ut tellinga ut fra prosessor cycles. Finne spec'sene til CPU'n i maskinen, hvor lang tid den brukte på hver cycle..så gange opp til antall sekunder man ville ha...håpløs måte.

Endret av Bitex
Lenke til kommentar

Sånn:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Dim iTeller As Integer
Dim iWait As Integer
  For iTeller = 0 To 255
  For iWait = 0 To 100

  Form1.BackColor = RGB(iTeller, 255 - iTeller, iTeller / 5)
  
  Print iWait
  
  Sleep 100

Next
Next

End Sub

Lenke til kommentar
Sånn:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Dim iTeller As Integer
Dim iWait As Integer
  For iTeller = 0 To 255
  For iWait = 0 To 100

  Form1.BackColor = RGB(iTeller, 255 - iTeller, iTeller / 5)
  
  Print iWait
  
  Sleep 100

Next
Next

End Sub

Fikk den først til å fungere etter at jeg skiftet public declare til private declare, har ikke helt skjønt hvorfor den fungerte, kan noen si meg det? :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...