/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Regning i ASP
Fra : crha
Vist : 566 gange
5 point
Dato : 24-09-02 21:49

Hejsa

Jeg sidder her og prøver at lave nogle scripts der skal kunne regne forskellige formler ud

Og lige i starten støder jeg på det første problem, når jeg vil lave et plus stykke, ser det måske sådan ud:

<%
tal1 = Request.Form("tal1")
tal2 = Request.Form("tal2")

Response.Write tal1 + tal2
%>

Hvis tal1 er f.eks. 3 og tal2 er 5 skriver den 35, hvordan laver jeg det rigtigt?

 
 
Kommentar
Fra : strarup


Dato : 24-09-02 22:21

hej crha

du ka' prøve følgende...

<%
tal1 = Request.Form("tal1")
tal2 = Request.Form("tal2")
tal3 = tal1 + tal2

Response.Write tal3
%>

mvh.

Strarup

Kommentar
Fra : Nyhedsbruger


Dato : 24-09-02 22:47

crha escribió / skrev

> Hvis tal1 er f.eks. 3 og tal2 er 5 skriver den 35, hvordan laver
> jeg det rigtigt?


Du skal lige lave dem om så de forstås som tal og ikke som tekst-streng.
Det kan du med heltal gøre med:


<%
tal1 = val(Request.Form("tal1"))
tal2 = val(Request.Form("tal2"))

Response.Write tal1 + tal2
%>
Med venlig hilsen
Lars Hoffmann

Kommentar
Fra : Nyhedsbruger


Dato : 24-09-02 20:46

Som svar på skriblerier forfattet af crha

> tal1 = Request.Form("tal1")
> tal2 = Request.Form("tal2")

> Response.Write tal1 + tal2

> Hvis tal1 er f.eks. 3 og tal2 er 5 skriver den 35, hvordan laver jeg
> det rigtigt?

I VBScript er alle variabler af typen Variant, og kan derved antage andre
variable typer
I dit script har de to variabler antaget typen string og derfor går det galt
med din formel

Der findes en række forskellige funktioner der kan hjælpe dig en type
konvertering
Fx

CStr (string), CInt (integer), CLng (long), CSng (Single), CDbl (double)

Vær opmærksom på at du skal lave checks før brug af ovennævnte funktioner
ellers vil du let kunne få en runtime error

fx (simpel fejlhåndtering)

tal1 = Request.Form("tal1")
tal2 = Request.Form("tal2")

If IsNumeric(tal1) And IsNumeric(tal2) Then
Response.Write CLng(tal1) + CLng(tal2)
Else
Response.Write "Fejl under indtastning af tal1 eller tal2"
End If

mvh/Peter Lykkegaard



Kommentar
Fra : Nyhedsbruger


Dato : 24-09-02 20:54

crha skrev:

> Og lige i starten støder jeg på det første problem, når jeg
> vil lave et plus stykke, ser det måske sådan ud:
>
> <%
> tal1 = Request.Form("tal1")
> tal2 = Request.Form("tal2")

If isNumeric(tal1) Then
   tal1N = CInt(tal1)
Else
   tal1N = 0
End If

Tilsvarende med tal2.

Resultat = tal1N + tal2N
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Kommentar
Fra : crha


Dato : 25-09-02 16:06

Tak, men hvis nu jeg kun har én form, hvor man skal kunne skrive f.eks. 2+5+4-2+1*8/2 og klikke send og så regner den det hele ud, hvordan gør man det?

Kommentar
Fra : Nyhedsbruger


Dato : 25-09-02 15:03

crha skrev:

> Tak, men hvis nu jeg kun har én form, hvor man skal kunne
> skrive f.eks. 2+5+4-2+1*8/2 og klikke send og så regner den
> det hele ud, hvordan gør man det?

Så du vil både have tal og operander i samme formfelt? Du kan lave
en funktion der løber den indtastede værdi igennem tegn for tegn og
deler det op i tal og operander - herefter kan du så bruge en ny
funktion til at lave selve regnestykket.

Spørg mig ikke om hvordan (jeg får ikke tid til at svare) - men
prøv evt. at lege lidt med det selv.

Hvis du vil gøre det lettere for dig selv kan du have minimum tre
formfelter - to til tal og et til en operand (+, -, /, etc.).


--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Accepteret svar
Fra : Nyhedsbruger

Modtaget 5 point
Dato : 25-09-02 16:43

Jens Gyldenkærne Clausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> crha skrev:
>
> > Tak, men hvis nu jeg kun har én form, hvor man skal kunne
> > skrive f.eks. 2+5+4-2+1*8/2 og klikke send og så regner den
> > det hele ud, hvordan gør man det?
>
> Så du vil både have tal og operander i samme formfelt? Du kan lave
> en funktion der løber den indtastede værdi igennem tegn for tegn og
> deler det op i tal og operander - herefter kan du så bruge en ny
> funktion til at lave selve regnestykket.
>
> Spørg mig ikke om hvordan (jeg får ikke tid til at svare) - men
> prøv evt. at lege lidt med det selv.
>
> Hvis du vil gøre det lettere for dig selv kan du have minimum tre
> formfelter - to til tal og et til en operand (+, -, /, etc.).
>

Der er nu ikke nogen grund til at opfinde den dybe tallerken en gang
til.
Funktionen Eval kan - sjovt nok - evaluere et udtryk, som er på
streng-form.

Prøv fx at skrive
Response.Write Eval("2+5+4-2+1*8/2")

mvh Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Kommentar
Fra : Nyhedsbruger


Dato : 25-09-02 17:03

Torben Brandt skrev:

> Der er nu ikke nogen grund til at opfinde den dybe tallerken
> en gang til.
> Funktionen Eval kan - sjovt nok - evaluere et udtryk, som er
> på streng-form.

Ah - den kendte jeg kun som javascriptfunktion. Det er naturligvis
_noget_ nemmere!

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Godkendelse af svar
Fra : crha


Dato : 25-09-02 19:30

Weee, tak for svaret Torben Brandt ;)
                        

Kommentar
Fra : Nyhedsbruger


Dato : 25-09-02 23:23


> Response.Write tal1 + tal2

> Hvis tal1 er f.eks. 3 og tal2 er 5 skriver den 35, hvordan laver jeg det
> rigtigt?

Et smart trick der klarer det hurtigt er at starte med at lægge 0 til,
sådan:

Response.Write 0 + tal1 + tal2 'giver 5

Ved støre regnestykker sætter du dem bare i (), altså: 0 + (kæmpe
regnestykke)

Esben



Kommentar
Fra : Nyhedsbruger


Dato : 26-09-02 20:26

Som svar på skriblerier forfattet af Esben

> Ved støre regnestykker sætter du dem bare i (), altså: 0 + (kæmpe
> regnestykke)
>
Jeg spekulerer på hvad 0 + ("2" * "ti") mon giver af resultat

mvh/Peter Lykkegaard



Kommentar
Fra : Nyhedsbruger


Dato : 27-09-02 20:48


> > Ved støre regnestykker sætter du dem bare i (), altså: 0 + (kæmpe
> > regnestykke)
> >
> Jeg spekulerer på hvad 0 + ("2" * "ti") mon giver af resultat

Det er klart at det kun fungerer, når der ikke er en egentlig tekststreng i
regnestykket, og at man derfor kun kan bruge metoden når man er sikker på at
der ikke står 2*"10" f.eks. Men man kan jo tjekke før man gør noget med
IsNumeric().

Esben



Kommentar
Fra : Nyhedsbruger


Dato : 27-09-02 21:11

Esben skrev:

> Men man kan jo tjekke før man gør noget med IsNumeric().

Hvad er værdien af IsNumeric("4+3")?

Jeg tror man må klare sig med fejlhåndtering via error-objektet
(eller gøre livet besværligt og tjekke hele udtrykket mod fx et
regex med gyldige tegn).
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste