DargarWhiteFang Skrevet 2. desember 2004 Del Skrevet 2. desember 2004 Heisann! Da fungerer mitt program som dere har hjelpt meg med i mine siste poster her. MEN av og til en skjelden gang så stopper programmet (har ingen feil-handtering, hvordan kan jeg "catche" denne feilen og håndtere dette uten at programmet kræsjer?) med feilen "overflow" i min variabel. Dim Data as Integer 'Integer = 2 bytes data, right? Dim LByte as Byte 'Byte = 1 byte data, right? Dim HByte as Byte 'blablabla MSComm1.InputLen = 1 'kall på MSComm1.Input returnerer 1 Byte right? 'blablabla HByte = MSComm1.Input 'blabla LByte = MSComm1.Input Data = (HByte * 256) + LByte Hvordan i huleste kan jeg da få en overflow i variabelen Data? "I verste fall" så er HByte = 255 og LByte = 255 --> 255 * 256 + 255 = 65535 og 2 ^16 = 65536 (Men her er "0" også med, så 65535 decimalt er jo faktisk 1111 1111 1111 1111bin) What? Jaja, det hender "en sjelden gang", men jeg må ha ett program med "oppetid" på ca. 6 timer, og jeg vil helst ikke att programmet crasher under den tiden.. Så, feil-handtering? Forslag til literatur? Søkeord? Takk Lenke til kommentar
aadnk Skrevet 2. desember 2004 Del Skrevet 2. desember 2004 En Integer i VB er ikke begrenset med 65536, men ligger innunder -32768 og 32768. Vb lagrer nemlig verdiens negative eller positive posisjon i en ektra bit, slik at signerte variabler vil alltid maksimalt kunne romme halvparten av det en usignert variabel har evne til. Men totalt sett er naturligvis kapasiteten identisk. Når det gjelder løsningen på problemet, kan jeg ikke si annet enn at det sannsynligvis er nødvendig å benytte en annen variabeltype. Du kan f.eks sette inn en Long istedenfor Integer, og da få en kapasitet på hele 2 147 483 647. Det er også mulig å implimere feilhåndtering i VB, slik at kjørende programmer utenfor IDE-en kan fortelle brukeren mer spesifikt om hva problemet består av. Dette kan oppnås ved følgende kode: On Error GoTo ErrorCatch ' Her kommer din kode ' Genererer en feil for å vise hva som skjer når den inntreffer Debug.Print 1 / 0 Exit Sub ' Endre dette til henholdsvis Function eller Property hvis koden er i en sådan. ErrorCatch: MsgBox "Feil nr. " & Err & " oppstod. Beskrivelse: " & Chr(34) & Error & Chr(34), vbCritical, "Feil" Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå