toss Skrevet 5. november 2005 Del Skrevet 5. november 2005 (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 5. november 2005 av toss Lenke til kommentar
trrunde Skrevet 5. november 2005 Del Skrevet 5. november 2005 Er tall1 og tall2 string? du må definere dem som integer for å kunne rekne med tallene Lenke til kommentar
toss Skrevet 6. november 2005 Forfatter Del Skrevet 6. november 2005 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? Lenke til kommentar
MrLee Skrevet 6. november 2005 Del Skrevet 6. november 2005 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. Lenke til kommentar
aadnk Skrevet 6. november 2005 Del Skrevet 6. november 2005 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) Lenke til kommentar
toss Skrevet 7. november 2005 Forfatter Del Skrevet 7. november 2005 tusen takk for svar Lenke til kommentar
Richard87 Skrevet 9. november 2005 Del Skrevet 9. november 2005 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 Lenke til kommentar
Toa Skrevet 11. november 2005 Del Skrevet 11. november 2005 Snedig måte å bruke Select Case på. Så lærte jeg noe idag også. Lenke til kommentar
P0wer Skrevet 29. november 2005 Del Skrevet 29. november 2005 (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 29. november 2005 av P0wer Lenke til kommentar
Moskus Skrevet 30. november 2005 Del Skrevet 30. november 2005 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. Lenke til kommentar
GeirGrusom Skrevet 2. desember 2005 Del Skrevet 2. desember 2005 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)) Lenke til kommentar
P0wer Skrevet 2. desember 2005 Del Skrevet 2. desember 2005 De e de argaste tulle i he haurt!! Dette fungerer garantert: Svar = 1 * Streng1 + Streng2 Det er jeg 100000% sikker på!! Lenke til kommentar
Richard87 Skrevet 2. desember 2005 Del Skrevet 2. desember 2005 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? Lenke til kommentar
Moskus Skrevet 5. desember 2005 Del Skrevet 5. desember 2005 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"... 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å