Gå til innhold

Start/Stopp knapp [VB6]


Anbefalte innlegg

Ja, jeg bruker VB6, ikke klag på det, prøv heller å svar på spørsmålet mitt. Takk :thumbup:

 

 

Jeg har en Stopp knapp, og en Start knapp.

Øverst av kodene står:

 

Dim Stopp As Boolean

 

I stopp knappen er det:

 

Private Sub Command2_Click()
stopp = False
While stopp = False
DoEvents
Wend
End Sub

 

Da stopper boten å arbeide.

 

For å få den til å starte igjen, må jeg jo ha

Stopp = true

 

i start knappen. Men hvordan får jeg programmet til å starte på samme plass som den ble stoppet på? For det er jo mange andre koder i Start knappen. Er ikke så veldig flink til å forklare, men håper dere skjønner.

Lenke til kommentar
Videoannonse
Annonse
Så det er altså ikke mulig å løse oppgaven på den måten jeg ønsker?

Ok med timer, men kan ikke så mye om det enda, har du noen linker om akkurat dette? Takker for hjelp!

Liten hensikt å se på eksempler når du like enkelt klarer å gjøre dette selv.

1. Plasser en TIMER kontroll på formen din

2. Bestem TIMER hastigheten, enten ved kode eller direkte på egenskapene til kontrollen

3. Se hva J0rn foreslo i den andre tråden du har gåendes så skjønner du sikkert hva du skal putte på START og STOPP knappene

Lenke til kommentar

Tusen takk! :p

Jeg tok

TmrStopStart.enabled = false i stop knappen, og

TmrStopStart.enabled = true i start knappen.

 

Men problemet når jeg har stoppet formen, og trykker start igjen, da gjør den alle kodene på nytt. Poenget med start knappen er at den skal starte der den trykket stopp.

Lenke til kommentar
Tusen takk! :p

Jeg tok

TmrStopStart.enabled = false i stop knappen, og

TmrStopStart.enabled = true i start knappen.

 

Men problemet når jeg har stoppet formen, og trykker start igjen, da gjør den alle kodene på nytt. Poenget med start knappen er at den skal starte der den trykket stopp.

Nå er jeg skikkelig usikker på hva du egentlig er ute etter?!?

 

Når du sier "Starter all koden på nytt", mener du at du egentlig vil stoppe koden din på et sted, som en slags PAUSE? I så fall tror jeg du prøver å lage noe som ikke er helt triviellt. Muligens du kan få til dette med tråder og stoppen en tråd med suspend og release. Jeg misstenker at du bør tenke igjennom løsningen din en gang til. Kansje fortelle her hva du vil få til så kansje du får noen tips om hvordan du heller bør tenke når du skal programmere videre.

Lenke til kommentar

......

 

Alt dette foregår inni en webbrowser. Altså, skal forklare så godt jeg kan:

 

 

Når jeg trykker på Stopp knappen, skal hele formen pause/stoppe. Altså, slutte å arbeide.

Men i staert knappen ligger det også mange andre koder som ikke har med Stop/start å gjøre. Så hvis jeg klikker start igjen, begynner den å gjøre kodene helt på nytt. Mitt poeng er å få programmet til å stoppe akkurat der den jobber, og starte der igjen når jeg trykker start.

Lenke til kommentar
......

 

Alt dette foregår inni en webbrowser. Altså, skal forklare så godt jeg kan:

 

 

Når jeg trykker på Stopp knappen, skal hele formen pause/stoppe. Altså, slutte å arbeide.

Men i staert knappen ligger det også mange andre koder som ikke har med Stop/start å gjøre. Så hvis jeg klikker start igjen, begynner den å gjøre kodene helt på nytt. Mitt poeng er å få programmet til å stoppe akkurat der den jobber, og starte der igjen når jeg trykker start.

Denne forklaringen gir ingen nye vinklinger. Du må heller prøve å forklare hvorfor du vil at koden skal stoppe slik du sier, for dette er høyest uvanlig. Eneste sted jeg har sett noe slikt er i debuggere, men da snakker vi om CODEHOOKS som ligger langt ned i materien og dette er helt unødvendig å ha kontroll på.

 

Du må ha en bedre forståelse på hvordan et program kjører. Når koden din farer igjennom så er det slik at ikke noe annet kjører. En prosessor kan kunn jobbe med en ting av gangen. Jada, Windows er multitasking, men ingenting går samtidig. Alle oppgavene som går "samtidig" er egentlgi delt opp i mange små deloppgaver som håndteres av Windows. Når du ønsker å "fryse" programmet ditt slik du sier så kan du få til dette ved å legge inn en TIGHT loop som rett og slett stopper programeksekveringen, men dette vil være helt meningsløst fordi du aldri vil komme deg ut av den igjen. I et Windows program så ville du muligens klart å få til noe ala dette ved å stoppe tråden som programmet går i, men du snakker jo om WEB her og det tror jeg er noe helt annet.

 

Men igjen, kansje hvis du prøver å forklare hvorfor du vil stoppe koden så kansje noen kan sette deg på sporet av alternative løsninger.

Lenke til kommentar

"Når jeg trykker på Stopp knappen, skal hele formen pause/stoppe. Altså, slutte å arbeide."

 

I vb6, når hele formen pauser/stopper, da virker jo heller ikke formens start-knapp lenger. Imidlertid, i vb6 kan man godt få formen til å pause i f.eks. 10 sekunder for så å fortsette fra der den stoppet, Her er en enkel demonstrasjon med bruk av SleepEx api'en:

 

Dim teller As Single, pause As Integer
Private Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub stopp_Click()
pause = InputBox("Antall sekunder pause" & vbCrLf & "(1 sekund er 1000)")
SleepEx pause, False
End Sub
Private Sub Timer1_Timer()
teller = teller + 1
Text1 = teller 
End Sub

Sett på vb6 formen: en button name = stopp, en textbox name = Text1 og en timer name = Timer1.

Taster man inn f.eks. 5000 (5 sekunder), ser man at etter 5 sekunder starter teller med verdien før man klikket stopp-knappen.

Lenke til kommentar
Så en feil der. Mente at webbrowseren skulle stoppe og arbeide, og når jeg trykket start knappen, skal webbrowseren begynne å lese kodene på samme plass som den ble stoppet på.

Grunnen til at SleepEX fungerer er at dette er et API kall. I WEB verdnen har du hverken API eller threading. Skal du ha til dette så må du tenke annerledes fra starten av. men du har enda ikke kommet med noen informasjon på hva du prøver å lage så det blir liksom å famle i blinde for oss som prøver å hjelpe. Godt tips er: Glem hele tanken med pause av programkode. Du får det bare ikke til på en skikkelig måte. Dessuten er det en merkelig ide duhar for jeg ser ingen nytteverdi. Derfor er jeg helt sikker på at du egentlig er på vei inn i en blindvei og bør tenke annerledes. Fortell oss hva du prøver så skal vi fortelle deg hvordan du bør gjøre det.

Lenke til kommentar
Ok, jeg lager en bot, og jeg vil at de som bruker boten, skal ha sjansen til å Stoppe/Starte den

k. Som sagt er du på feil spor. Dette må du håndtere i koden din og ikke tenke PAUSE/START

 

Eksempel:

dim JegLever as bool

sub MyBotSomething
 if JegLever
<utfør det du vil skal utføres her>
 endif
end sub


sub StartBotten
 JegLever = true
end sub

sub StoppBotten
 LegLever = false
end sub

Som du ser så er dette nøyaktig det samme som er vist tidligere med en TIMER kontrol. Dette ER måten å tenke på. Stopping/Pausing av kode er urealistisk og helt feil tenkemåte. Programmer virker ikke på den måten. Det er kun kasett spillere du kan gjøre dette med.

Del opp programmet ditt i mindre rutiner som du kaller opp ved behov og putt logikken inn i disse metodene som sjekker om de skal utføres eller ikke. Hvis du ikke klarer å slippe tanken på PAUSE så er du på villspor i løsningen din. Da MÅ du tenke nytt og annerledes.

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...