DargarWhiteFang Skrevet 4. desember 2004 Skrevet 4. desember 2004 Hei I MSDN for VB6 finner jeg "Mod" operatoren som "Used to divide two numbers and return only the remainder." Men dette er ikke det jeg forbinder med en modulær data-type. I f.eks. ADA så er en modulær data type en som "wrapper" dvs. om jeg har en Byte variabel som er 255 og så plusser på 1 så blir variabelen ikke "overflow" eller 256, den blir 0. Med en modulær data type kan man dermed alldrig få overflow. Men det er ikke denne egenskapen (overflow) som gjør at jeg vil ha en modulær nå, men jeg har en rekner-variabel som jeg vil skal gå fra 255 til 0 når den regner, og nå må jeg bruke en "If" løsning på dette. Ikke noen big deal, men litt "stygt" synest jeg. Så, noen som hvet om man kan definere egne variabel-typer i VB, f.eks. MyType = Mod 256 '= gir en modulær type "MyType" som går fra 0 til 255 Eller?
Steinmann Skrevet 4. desember 2004 Skrevet 4. desember 2004 mod er en opperator, ikke en datatype, man kan derimot lage en datatype som oppfyller dine spessifikasjoner Option Explicit Private mvarValue As Long Private mvarModValue As Long Public Property Let ModValue(ByVal vData As Long) mvarModValue = vData + 1 End Property Public Property Get ModValue() As Long ModValue = mvarModValue - 1 End Property Public Property Let Value(ByVal vData As Long) If mvarModValue > 0 Then mvarValue = vData Mod mvarModValue Else mvarValue = vData End If End Property Public Property Get Value() As Long Value = mvarValue End Property Putt dette i en class, og gi den ett navn som fx "varMod" så kan du skrive Dim p as new varMod ModValue er max tallet før det går over til 0 denne kan selvfølgelig utvides
aadnk Skrevet 5. desember 2004 Skrevet 5. desember 2004 (endret) Du kan selvsagt også sette Remove Integer Overflow Checks på i Advanced Optimizations, ved Compile-tabben i vinduet som kommer opp når man trykker på Options i Make Project dialogboksen. Dette vil resultere at følgende kode utføres uten mukke: Dim Num As Byte, iNum As Integer, lNum As Long Num = 255 + 1 iNum = 32767 + 1 lNum = 2147483647 + 1 Alle variablene vil da inneholde den laveste verdien de kan holde. Merk at prosjektet må være komplimert for at dette skal fungere; i IDE vil Overflow-feilmeldingen kjøres. Endret 5. desember 2004 av aadnk
DargarWhiteFang Skrevet 5. desember 2004 Forfatter Skrevet 5. desember 2004 mod er en opperator, ikke en datatype,man kan derimot lage en datatype som oppfyller dine spessifikasjoner Option Explicit Private mvarValue As Long Private mvarModValue As Long Public Property Let ModValue(ByVal vData As Long) mvarModValue = vData + 1 End Property Public Property Get ModValue() As Long ModValue = mvarModValue - 1 End Property Public Property Let Value(ByVal vData As Long) If mvarModValue > 0 Then mvarValue = vData Mod mvarModValue Else mvarValue = vData End If End Property Public Property Get Value() As Long Value = mvarValue End Property Putt dette i en class, og gi den ett navn som fx "varMod" så kan du skrive Dim p as new varMod ModValue er max tallet før det går over til 0 denne kan selvfølgelig utvides I VB er mod en operator ikke en datatype, det var det jeg også oppdaga når jeg forsøkte å programmere som jeg er vant til i Ada. Er noob nok i VB til å ikke vite hvordan (eller hvorfor) man gjør en "class", så jeg kan ikke putte koden i en sånn. Det er kanskje grise-lett, hvem vet. Når allt kommer til alt, så trur jeg at jeg beholder min if-sats i steden, den blir faktisk vel så kort og tydelig som å lage class etc. Skal derimot legge dette på minne, for det er nok ikke i alle programmer at det er like smidig med if-varianten. Til aadnk: Ah, ganske så smidig variant det ja, men den føles litt "skummel" i dette programmet, da dette isåfall kommer til å gjelde alle variabler, og ikke bare de jeg spesifikt vil skal kunne "wrappe". humm... vet ikke om jeg våger. kan få uventa konsekvenser når vi skal bruke programmet.
Steinmann Skrevet 5. desember 2004 Skrevet 5. desember 2004 en class lager du ved å trykke(la meg se..) project -> add class module og den oppfører seg som et objekt! just gotta love oop
GeirGrusom Skrevet 6. desember 2004 Skrevet 6. desember 2004 eller "oop" heter det vel... strengt tatt ganske begrenset.
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å