06. maj 2002 - 19:04Der er
46 kommentarer og 2 løsninger
String til Integer
Hej folks Jeg har lige problem, som jeg håber I kan hjælpe mig med:
Jeg skal gange 2 tal, der bliver overført fra et xml dokument via en form. Problemet er ikke at få tallene overført, men derimod at få dem ganget sammen. Hver gang kommer fejlen: Typerne passer ikke sammen. Jeg fandt et script der kunne fortælle hvilken type der ligger i variablerne og det fortæller mig der ligger strenge selvom det er ganske almindelig tal som 2 og 499. Er der nogen har har en løsning ligger der 200p og venter...
Jeg er nu ligeglad med de points. Jeg vil egentlig bare have klaret mit problem... -->keysersoze: Stadig samme fejlmeddelse -->gizom: Typerne passer ikke sammen: 'CInt'
Måske sådanne! if MyType1 = "Integer" and MyType2 = "Integer" then tTal1 = Cint(MyType1) tTal2 = Cint(MyType2) else 'hvad skal der ske hvis det ikke er integer end if
CInt Function Returns an expression that has been converted to a Variant of subtype Integer. Derfor må CInt(MyType1) også indholde værdien i Integer, eller hur?
Ja det ville jeg osse umiddelbart mene. Men nu har jeg siddet og gloet på dette problem temmelig længe samt testet din seneste mulighed, uden resultat...
okay så er der sikkert et eller andet tegn i din variabel der ikke må være der. Prøv at udskrive de variabler der drejer sig om. Hvis der er andet end mellemrum, tal, et punktum eller et komma fucker cint op og siger type mismatch
Bælter og livrem!!1 Denne virker for mig.. <% ' kunne lige så godt være 'MyType1 = request.form("MyType1") 'MyType2 = request.form("MyType2") MyType1 = "10" MyType2 = "6"
if MyType1 <> "Integer" and MyType2 <> "Integer" then 'hvad skal der ske hvis det ikke er integer tTal1 = Cint(MyType1) tTal2 = Cint(MyType2) tRes = tTal1 * tTal2 Response.write tRes else 'hvad skal der ske hvis det er integer tRes = MyType1 * MyType2 Response.write tRes end if %>
rune_c--> Har fjernet kommentarene, sat dem et andet sted...Ellers er dit ex. her:
Den fatter ikke Cint...Typerne passer ikke sammen...Men det MÅ da være muligt at gange f.eks 3 med 449 og få det skrevet ud???
' kunne lige så godt være MyType1 = request.form("antal") MyType2 = request.form("pris") 'MyType1 = "10" 'MyType2 = "6"
if MyType1 <> "Integer" and MyType2 <> "Integer" then 'hvad skal der ske hvis det ikke er integer tTal1 = Cint(MyType1) tTal2 = Cint(MyType2) tRes = tTal1 * tTal2 Response.write tRes else 'hvad skal der ske hvis det er integer tRes = MyType1 * MyType2 Response.write tRes end if
gizom>> Det virker også...da det er det samme som mit som lars_munk også har sagt virker hvis han sætter ttal1 og 2 til fx "4". Cint virker bare ikke hvis der også er bogstaver i og jeg tror der er det i hans variabler..
prøv lige at køre en isnumeric() på dine variabler. Hvis den er false er det derfor, men hvis den er true er jeg bange for din pws!! Husk at kommenterer linierne med cint
Her kommer du tilbage til din form, hvis et af de indtastede variabler er forskellige fra typen integer og ellers ganges de 2 tal. Kan du bruge det?
<% if request.queryString() = "1" then
dim t1, t2, tRes t1 = request.form("Antal") t2 = request.form("Pris") If isnumeric(t1) <> true then session("Antal") = "Forkert, Skal være et tal" elseif isnumeric(t2) <> true then session("Pris") = "Forkert, Skal være et tal" else
tRes = CInt(t1) * CInt(t2) response.write (t1*t2) end if end if %> <html> <body> <form action="test.asp?1" method="post"> Antal <input type="text" name="Antal" value="<%=session("Antal")%>"> <br> Pris <input type="text" name="Pris" value="<%=session("Pris")%>"> <br> <input type="submit"> </form>
Brugeren bliver jo nød til at indtaste tal i de 2 input feltet, ellers må brugeren jo gøre det om igen. Vi ved jo ikke hvad en bruger evt. mener med et "qwerty" input!
-master-d- :> problemer er jo at, hvis nu variablen fra formen var af typen string kan man jo ikke ret meget med CInt, andet end at få fejl. Derfor er du nød til at teste om der er en string eller integer (jeg tester om det er en integer med isnumeric()), og hvis det er en string. Ja så skal brugeren tilbage til indtastningsformen, for at indtaste et korrekt tal.
gizom>> Nej da!! Du svarer før mig, men da han afviste det lavede jeg også et svar der var lidt anderledes.
Klokken 22:17:11 kommer -master-d- så og laver et svar der er præcis det samme som dit postet klokken 19:12:41 og mit postet klokken 19:38:57. Dvs. at han godt 3 timer senere laver et svar der er 100% magen til vores svar og alligevel får 100 points. Han laver altså et svar som vi andre skrev for 3 timer siden og i det tidsrum brugte vores tid på at finde ud af hvorfor det ikke virkede!
Jeg er ikke ude efter points og synes derfor at du burde have det alle pointene - for dit første svar! bestemt ikke det du fik points for - eller det skulle fordeles på os to. I teorien behøver han ikke at vide en skid til det overhovedet. I mit første svar skriver jeg noget kode som jeg senere bede ham prøve at udføre hvorefter han siger at det virker! -master-d- kan derfor faktisk bare at ændret variabelnavnene da han vidste at det virkede - jeg havde jo sagt det og lars_munk havde bekræftet det.
Noget andet der irriterer mig lidt er at jeg siger at han skal teste det med isnumeric() og ~40 minutter efter er du straks på banen med et nyt svar. Dit svar er en 99,9% kopi af det svar, jeg poster lige før jeg siger det med isnumeric(), med den forskel at du har smidt en isnumeric() ind..
Til sidst virker det lidt latterligt (og som om han intet ved om det) at -master-d- parser en integer ind i cint() og siger: "' skulle gerne returnere værdien 5". Den skulle ikke gerne! Den gør det! Han smider en integer i en funktion der skal ændre en string til en integer. Funktionen ændre da ikke en integer til en integer, men returnerer den bare med det samme!
rune_c:> jeg kan godt se hvad du mener. Jeg er den første der svarer og bringer CInt() på banen, du er først med isnummeric(), -master-d- burde slet ikke have haft point, han siger kune hvad der i forvejen er sagt!! Jeg laver et spørgsmål, så kan vi dele de point jeg fik, ÅK fair nok? håber jeg? :>Gizom
lars_munk:> Jeg har fået hvad der til kommer mig. -master-d- var nok lidt heldig i point uddelingen, for det han svarede var allerede svaret tidligere i spm'et af rune_c og jeg. Det skulle nok have været imellem rune_c og mig, at point'ene skulle være delt.
Det der ville være mest rigtigt var at -master-d- oprettede et spørgsmål på 100 point til rune_c for du har jo allerede betalt 200 point som du lovede for spm'et.
-master-d- :> Kan du se rigtigheden i problemstillingen? tid til at være fair!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.