|
| 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 & " → " & 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 & " → " & 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 |
| | |
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 (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
| |
|
|