/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
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
mange tal i case select
Fra : Jørgen Müller


Dato : 28-04-06 09:11

Hej Gruppe

Hvordan er det nu lige, man vælger mellem en række tal i
en Select Case?

Eks.
Select Case nr
Case 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
i = 1
End Select

Har prøvet med Case 1:20 og 1-20 og 1>20 og =1<20
men intet af det virker, og det kan da ikke være rigtigt, at
man skal skrive alle tallene, for at få det til at virke.
--
Med Venlig Hilsen
Jørgen Müller
www.smaabaadsklub.dk



 
 
Jens Gyldenkærne Cla~ (28-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-06 09:38

Jørgen Müller skrev:

> Hvordan er det nu lige, man vælger mellem en række tal i
> en Select Case?

Ved at skrive dem ud (som du har gjort).


> Har prøvet med Case 1:20 og 1-20 og 1>20 og =1<20
> men intet af det virker, og det kan da ikke være rigtigt, at
> man skal skrive alle tallene, for at få det til at virke.

Jo.

Hvis du arbejder med intervaller, kan du bruge if i stedet:

   If x < 20 Then

Du kan også bruge Case Else til at fange alle resterende numre:

Select Case X
   Case 13
       ' gør dit
   Case 42
       ' gør dat
   Case Else
       ' fanger alle andre numre
End Select
--
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

Jørgen Müller (28-04-2006)
Kommentar
Fra : Jørgen Müller


Dato : 28-04-06 10:33

Jens Gyldenkærne Clausen skrev:
>If x < 20 Then
Den kan jeg ikke få til at virke med case If i < 21 Then
Der er en syntaksfejl
/Test/billeder/visStort_billede.asp, line 97, column 5
case If i > 121 Then
----^

Hvis jeg i stedet skriver case 121 If i > 121 AND i < 140 Then
får jeg at vide, en sætning var ventet.

Har googlet lidt og her skriver de case (20:40) dækker mellemrummet
mellem 20 og 40 og man kan endda udvide (20:40,60:80) men her
får jeg at vide, at der mangler en )?

Når jeg skriver som nedenstående, virker det, men jeg skal bruge
tallene fra 1 - 400, altså 20 sider (n=20), så det er mange tal at sidde og
skrive?
select case i
case 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
nr = 1
case 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
nr = 2
case 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60
nr = 3
case 61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80
nr = 4
case 81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
nr = 5
case else
nr= 10
End Select

--
Med Venlig Hilsen
Jørgen Müller
www.smaabaadsklub.dk



Michael Zedeler (28-04-2006)
Kommentar
Fra : Michael Zedeler


Dato : 28-04-06 11:14

Jørgen Müller wrote:
> select case i
> case 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
> nr = 1
> case 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
> nr = 2
> case 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60
> nr = 3
> case 61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80
> nr = 4
> case 81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
> nr = 5
> case else
> nr= 10
> End Select

En af de vigtigste tommelfingerregler for programmering er at antallet
af fejl, er proportional med kodens længde. Derfor: lav koden så
kompakt, som muligt. (Dog indenfor rimelighedens grænser.)

Så hvorfor ikke bare

nr = int(i/20)+1

Eller eventuelt

nr = int(i/20)+1;
if nr > 5 then
   nr = 10
end if

Det fylder da lidt mindre.

Mvh. Michael.

--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Jens Gyldenkærne Cla~ (28-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-06 11:21

Jørgen Müller skrev:

>> If x < 20 Then

> Den kan jeg ikke få til at virke med case If i < 21 Then


Ikke så mærkeligt. Du kan ikke bruge if som et argument til case.
Jeg mente at du i stedet for at skrive:


Select Case X
   Case 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
....
End Select

- kunne skrive:

If X < 20 Then
...
End If


> Har googlet lidt og her skriver de case (20:40) dækker
> mellemrummet mellem 20 og 40 og man kan endda udvide
> (20:40,60:80) men her får jeg at vide, at der mangler en )?

Link?

Der er mange forskellige sprog der har implementeret case - men det
hjælper ikke meget at man fx i MSSQL kan skrive:

CASE
   WHEN X < 20 THEN 'foo'
   WHEN X < 50 THEN 'bar'
   WHEN X < 100 THEN 'foobar'
   ELSE 'baz'
END

- for den syntaks forstår vbscript intet af.


> Når jeg skriver som nedenstående, virker det, men jeg skal
> bruge tallene fra 1 - 400,

Hvordan er tallene fordelt?
Skal du vide om tallet ligger mellem 1-20, 21-40, 41-60, ... ?

I så fald er det frem med matematikken:

' Find sidenummeret ved at lave heltalsdivision.
' Der skal trækkes 1 fra indgangsnummeret for at få overgangen
' det rigtige sted, og der lægges 1 til resultatet af
' heltalsdivisionen for at få sidetallet til at starte med 1

   nr = (n-1)\20 + 1


Prøv en gang at køre følgende kode:


<%
Function getPage(num)
   getPage = (num-1)\20 + 1
End Function
Dim i, n
For i = 1 to 400
   Response.write i & " &rarr; " & getPage(i) & "<br>"
Next
%>

- og se om det ikke giver den inddeling du leder efter.

Hvis du vil indføre makstjekket svarende til din Case Else (altså
at tallet aldrig bliver større end 10), er det bare at indføre det
i funktionen - fx som her:

Function getPageMax(num, max)
   Dim tmp
   tmp = (num-1)\20 + 1
   If tmp > max Then
      getPageMax = max
   Else
      getPageMax = tmp
   End If
End Function


Endelig kan man også lave funktionen lidt mere generel, så man kan
specificere hvor mange elementer der går på en side:

Function getPage2(num, size)
   getPage2 = (num-1)\size + 1
End Function
--
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

Jørgen Müller (28-04-2006)
Kommentar
Fra : Jørgen Müller


Dato : 28-04-06 11:34

Jens Gyldenkærne Clausen skrev:
<<%
>Function getPage(num)
>getPage = (num-1)\20 + 1
>End Function
>Dim i, n
>For i = 1 to 400
>Response.write i & " &rarr; " & getPage(i) & "<br>"
>Next
>%>
og den virker bare, endnu en gang tak Jens.

Problemet var, at jeg har et billedegalleri hvor thumpnail bliver vist med
paging, når brugeren så har valgt side 10 og trykker på det sidste billede
bliver det vist i stort format.
Ingen problemer så langt!
Men de store billeder bliver også vist med paging så man kan bladre gennem
billederne uden at skulle tilbage til oversigten, og her gik det galt med
side nr.
For et tryk på næste billede, så glemte siden hvilken side den var kommet
fra,
og det er her funktionen hjælper mig til at rekonstruere side nr.
http://www.smaabaadsklub.dk/Test/billeder/visThumpnail.asp?m=bornholm06
--
Med Venlig Hilsen
Jørgen Müller
www.smaabaadsklub.dk



Jørgen Müller (28-04-2006)
Kommentar
Fra : Jørgen Müller


Dato : 28-04-06 11:51

Jeg skrev:
>har googlet lidt.....
hvortil Jens Gyldenkærne Clausen skrev
>Link?

Det glemte jeg men her er det
http://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseNotesnode108.html
--
Med Venlig Hilsen
Jørgen Müller
www.smaabaadsklub.dk



Jens Gyldenkærne Cla~ (28-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-06 11:28

Michael Zedeler skrev:

> En af de vigtigste tommelfingerregler for programmering er at
> antallet af fejl, er proportional med kodens længde.

Jep.

> Derfor: lav koden så kompakt, som muligt.

Man bør måske præcisere at princippet om kompakt kode kun gælder
den egentlige kode - ikke forklarende kommentarer (der brugt
fornuftigt øger læsbarheden af koden betragteligt).


> nr = int(i/20)+1

Der skal lige trækkes 1 fra startværdien - ellers skifter du mellem
19 og 20 i stedet for mellem 20 og 21. Derudover kan man slippe for
at typecaste hvis man anvender heltalsdivision:

   nr = (i-1)\20 + 1


> nr = int(i/20)+1;
> if nr > 5 then
> nr = 10


Side 1, 2, 3, 4, 5, 10 ?


> Det fylder da lidt mindre.

Det er vist en underdrivelse...
--
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

Michael Zedeler (28-04-2006)
Kommentar
Fra : Michael Zedeler


Dato : 28-04-06 21:45

Jens Gyldenkærne Clausen wrote:
> Michael Zedeler skrev:
>
>>nr = int(i/20)+1
>
> Der skal lige trækkes 1 fra startværdien - ellers skifter du mellem
> 19 og 20 i stedet for mellem 20 og 21. Derudover kan man slippe for
> at typecaste hvis man anvender heltalsdivision:
>
>    nr = (i-1)\20 + 1

Heltalsdivision som backslash - det har jeg ikke set før. Smart.

>>nr = int(i/20)+1;
>>if nr > 5 then
>> nr = 10
>
> Side 1, 2, 3, 4, 5, 10 ?

Ja. Sådan ser det skam også ud i eksemplet, men hvis du kigger igen
skrev jeg også linien alene, fordi jeg mistænkte at der ikke skulle være
nogen særregler.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Jens Gyldenkærne Cla~ (28-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-06 12:02

Jørgen Müller skrev:

> Det glemte jeg men her er det
> http://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseNotesnode10
> 8.html

Tak. Hvis du går et niveau op (Contents), kan du se følgende
overskrift:

   Modular Programming with Fortran 90

- så syntaksen er fin nok, den gælder bare ikke vbscript/asp.
--
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

Jørgen Müller (28-04-2006)
Kommentar
Fra : Jørgen Müller


Dato : 28-04-06 12:28

Jens Gyldenkærne Clausen skrev:
>Tak. Hvis du går et niveau op (Contents), kan du se følgende
>overskrift:

> Modular Programming with Fortran 90

Ups så forstår jeg bedre jeg ikke kunne få det til at virke!
Det så ellers lovende ud og var lige hvad jeg skulle bruge,
når man nu kan få ideen til at lave getPage = (num-1)\20 + 1

Hvordan får du dog de ideer hele tiden? syntes det er svært
når man som fritidsprogammør skal sætte sig ind i Asp, ASP.NET
Regular Expression og JavaScript samtidig med at man også skal
sørge for at overholde doctype og fik jeg så nævt et fuldtidsarbejde
ved siden af.

Endnu en gang tak for hjælpen.
--
Med Venlig Hilsen
Jørgen Müller
www.smaabaadsklub.dk



Niels Henriksen (01-05-2006)
Kommentar
Fra : Niels Henriksen


Dato : 01-05-06 20:27

"Jørgen Müller" <hundige@paradis.dk> wrote in message
news:4451fc4a$0$15784$14726298@news.sunsite.dk...
> Hvordan får du dog de ideer hele tiden? syntes det er svært
> når man som fritidsprogammør skal sætte sig ind i Asp, ASP.NET
> Regular Expression og JavaScript samtidig med at man også skal
> sørge for at overholde doctype og fik jeg så nævt et fuldtidsarbejde
> ved siden af.
>
Gør som os andre. Kvit jobbet og gør programmering til et fuldtidsarbejde ;)

--
Niels Henriksen
www.netopcom.dk
Webhotel 8 kr pr 100 MB



Jørgen Müller (04-05-2006)
Kommentar
Fra : Jørgen Müller


Dato : 04-05-06 13:09

Niels Henriksen
> Gør som os andre. Kvit jobbet og gør programmering til et fuldtidsarbejde
> ;)

Det er jeg blevet for gammel til.
--
Med Venlig Hilsen
Jørgen Müller
www.smaabaadsklub.dk



Jens Gyldenkærne Cla~ (28-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-06 12:32

Jørgen Müller skrev:

> Hvordan får du dog de ideer hele tiden?

Erfaring hjælper


> syntes det er svært når man som fritidsprogammør skal sætte
> sig ind i Asp, ASP.NET Regular Expression og JavaScript
> samtidig med at man også skal sørge for at overholde doctype

Tag det lidt ad gangen hvis du kan.
--
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

Søg
Reklame
Statistik
Spørgsmål : 177485
Tips : 31964
Nyheder : 719565
Indlæg : 6408406
Brugere : 218885

Månedens bedste
Årets bedste
Sidste års bedste