Gå til innhold

addere variabler i vb


Anbefalte innlegg

Skrevet (endret)

hei

 

jeg prover a lage en enkel kalkulator i vb for morro skykld

jeg har folgende kode:

Private Sub cmdbtnerlik_Click()
   If optbtnaddere Then
       lblsvar = tall1 + tall2
   End If
   If optbtnsubtrahere Then
       lblsvar = tall1 - tall2
   End If
   If optbtnmultiplisere Then
       lblsvar = tall1 * tall2
   End If
   If optbtndividere Then
       lblsvar = tall1 / tall2
   End If
   
End Sub

 

den funker fint for alle regneoperasjonene utnom addering..

nar jeg prover a legge sammen f.eks. 1 og 3 far jeg 13 til svar..

 

noen som ser noen losning pa problemet?

Endret av toss
Videoannonse
Annonse
Skrevet

jeg har ikke definert de til noe..

tall1 og tall2 er navn pa teksbokser, men det funker med de andre regneopperasjonene..

hvordan definerer jeg en tekstboks da?

Skrevet

Regner med at teksten i tekstfelt blir antatt å være streng automatisk.

 

Det du må gjøre er å opprette to integers. Når du aktiverer funksjonen må du hente ut verdien i String1 og gjøre den til integer 1, og samme med string/integer 2.

 

så kan du addere integer1 og 2 ved å si integer1= integer1 + integer2

 

 

så setter du en siste string3 = integer1

 

så setter du label = string3

 

(det er mulig du kan sette string3 direkte "string3 = integer1+integer2" f.eks. og således hoppe over ett ledd. Det er også mulig du kan sette lblsvar direkte på samme måte og således unngå å bruke string3 helt)

 

 

(grunnen til at du får 13 ved å legge sammen det du har er at du likegodt kunne fyllt dem med "A" og "B" og fått "AB" som svar...regner med du ser sammenhengen... addering av strenger bare setter strengene etter hverandre.

Skrevet

Pluss-operatøren er spesiell - den fungerer både for strenger òg numretiske variabler; således må du sette datatypen på strengene du skal addere. Det finnes en rekke måter å gjøre dette på, blant annet ved å deklarere to Integer-variabler (eller Long, Single ect.), eller ved hjelp av noen funksjoner. Du har først og fremst de ymse datakonverteringsfunksjonene, CInt, CLng, CSng, CDbl. I tillegg kan du benytte noen ekstrafunksjoner, eksempelvis Fix og Val. Jeg vil i alle tilfeller anbelale bruken av Val når en skal utføre matematiske beregninger på brukerinndata - da kan en nemlig unngå problematikk dersom brukeren taster inn ikke-numretiske karakterer, idet denne funksjonen automatisk kutter avlesningen om den skulle støte på slike.

 

For å konkretistere, du bruker Val-funksjonen således:

lblsvar = Val(tall1) + Val(tall2)
Skrevet

For og slippe 'if' setningene kan du bruke følgende:

 

Private Sub cmdbtnerlik_Click()
Select Case true
  case optbtnaddere: lblsvar = val(tall1) + val(tall2)
  case optbtnsubtrahere: lblsvar = val(tall1) - tval(tall2)
  case optbtnmultiplisere: lblsvar = val(tall1) * val(tall2)
  case optbtndividere: lblsvar = val(tall1) / val(tall2)
End Select
End Sub

  • 3 uker senere...
Skrevet (endret)

Det er nesten bare tull med alt det derre Integer-greiene!!

Du trenger bare å gange med 1.

Det fungerer på string-verdier!

 

Det eneste du trenger å gjøre, er å skrive:

 

lblsvar = tall1 + tall2 * 1

 

Da fungerer det med tekstbokser som A og B!!

Endret av P0wer
Skrevet

Kanskje det, men gjør ikke VB det først om til tall (CInt, CDbl, CSng) og etterpå ganger det med 1? VB må jo vite om det kan ganges med 1 før den operasjonen kan gjennomføres.

Skrevet

Det er snakk om datatyper, tall1 + tall2 er tvetydig hvis det er snakk om tekststrenger, skal "123" + "456" = "123456" eller 579?

Da må isåfall visual basic sjekke om det er tall i strengene før den adderer, så hvis dataen er feilformatert vil det blir det samme som å bruke & istedet.

derfor konverterer man med CInt, CDbl, CCur etc.

lblSvar.Caption = CStr(CCur(tall1) + CCur(tall2))

Skrevet

De e de argaste tulle i he haurt!!

 

 

Dette fungerer garantert:

 

Svar = 1 * Streng1 + Streng2

 

Det er jeg 100000% sikker på!!

Skrevet

Begge metodene fungerer, men det er geirgrusom sin som er korrekt, POwer sin vil bare kreve "litt" mer resurser, siden alt gjores en gang til, pluss den prover og gange med 1... en poll?

Skrevet
Dette fungerer garantert:

Svar = 1 * Streng1 + Streng2

Det er jeg 100000% sikker på!!

5242745[/snapback]

 

Jo, ingen argumenterer mot at det fungerer. Men det er ikke nødvendigvis "god programmering"... ;)

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...