/ 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
avanceret IF then sætning eller for next l~
Fra : Christian M. Nielsen


Dato : 17-04-06 08:10

Hej.

Jeg roder lidt med at skifte bogstaver ud i en dynamisk bogstaverække. (se
tidligere indlæg om at "tælle med bogstaver").

hvis bogstaverækken for eksempel er: gfjkdz

så skal næste være: gfjkea (z blilver til a og d bliver til e)

Det kan jeg godt lave, ved at jeg kontrollerer om MoveToFirstLetter = "yes"
(når sidste bogstav er z) og så kaldes funktionen igen for næstsidste
bogstav. Men jeg kan ikke lige gennemskue hvordan jeg får det dynamisk så
der løbes igennem til det ikke er nødvendigt længere?

nyt eksempel kunne være:

gfj

skal laves om til

gfkaaa (j ændres til k og z'er ændres til a)
når rækken er blevet til (6*z) skal næste række være aaaaaaa (7*a)

jeg har lavet en funktion der finder det nsæte bogstav i rækken.

strShortTMP = gfj 'værdi hentes normalt i database

strNextLetter= Right(strShortTMP, 1)

if MoveToFirstLetter = "yes" then

dim GoOneLetterBack, intNextLetter, LinkLength

LinkLength = LEN(strShortTMP)

intNextLetter = intNextLetter + 1 ' jeg har en ide om at
' dette kan bruges hvis
der er flere z'er til sidst?

GoOneLetterBack = mid(strShortTMP, (LinkLength - intNextLetter),1)

FindNext(GoOneLetterBack)

'********* Her mangler noget for at få kaldt funktionen endnu engang eller
flere
'hvis der er flere z'er til sidst. Noget dynamisk alt efter om der er 4
bogstaver i
'rækken eller måske 25 (det kommer til at tage lang tid inden der er så
mange

End if


FUNCTION FindNext (strNextLetter)
Select Case strNextLetter


Case "a"
NextLetterIS = "b"
Case "b"

............

Case "y"
NextLetterIS = "z"
Case "z"
NextLetterIS = "a"

MoveToFirstLetter = "yes"

End Select
End Function

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



 
 
Christian M. Nielsen (17-04-2006)
Kommentar
Fra : Christian M. Nielsen


Dato : 17-04-06 08:39


"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:44433f23$0$67260$157c6196@dreader2.cybercity.dk...

>
> hvis bogstaverækken for eksempel er: gfjkzz

Jeg er kommet til dette, men funktionen returnerer ikke nogen værdi ? (ved
godt jeg looper igebbem hele rækken)

dim iCount2 , iCount3, GoOneLetterBack2
For iCount2 = 2 to cint(LinkLength)

iCount3 = iCount3 + 1

GoOneLetterBack2 = mid(strShortTMP, (LinkLength - iCount3),1)

response.Write("<br>"& GoOneLetterBack2& FindNext(GoOneLetterBack2))
next

giver dette

z
k
j
f
g

kan man ikke kalde funktionen fra løkken?

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Christian M. Nielsen (17-04-2006)
Kommentar
Fra : Christian M. Nielsen


Dato : 17-04-06 10:33


"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:44434606$0$67262$157c6196@dreader2.cybercity.dk...

> kan man ikke kalde funktionen fra løkken?


svaret har jeg fundet. Grunden til at jeg ikke fik et output, var at jeg
forsøgte at udskrive noget der altid var ""

det virker med

dim iCount2 , iCount3, GoOneLetterBack2, NewLetter
For iCount2 = 2 to cint(LinkLength)

iCount3 = iCount3 + 1

strShortTMP1Letter = mid(strShortTMP, (LinkLength - iCount3),1)
if strShortTMP1Letter <> "z" then exit for 'stopper når der ikke er flere
z'er
'i
rækkefølge bagfra

FindNext(strShortTMP1Letter)
response.Write(NextLetterIS) 'viser det nye bogstav
next

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Thomas Smedebøl (20-04-2006)
Kommentar
Fra : Thomas Smedebøl


Dato : 20-04-06 21:10

Har du fået løst dit problem angående at tælle bogstaverne op?

Mvh Thomas

Christian M. Nielsen (21-04-2006)
Kommentar
Fra : Christian M. Nielsen


Dato : 21-04-06 17:36


"Thomas Smedebøl" <whisdow@hotmail.com> skrev i en meddelelse
news:4447ea92$0$15788$14726298@news.sunsite.dk...
> Har du fået løst dit problem angående at tælle bogstaverne op?


ja, jeg lavede en funktion med select case

FUNCTION FindNext (strNextLetter)
Select Case strNextLetter


Case "a"
NextLetterIS = "b"
Case "b"
NextLetterIS = "c"

............

Case "y"
NextLetterIS = "z"
Case "z"
NextLetterIS = "a"

End Select
End Function


--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Thomas Smedebøl (21-04-2006)
Kommentar
Fra : Thomas Smedebøl


Dato : 21-04-06 18:46

Christian M. Nielsen wrote:
> "Thomas Smedebøl" <whisdow@hotmail.com> skrev i en meddelelse
> news:4447ea92$0$15788$14726298@news.sunsite.dk...
>
>>Har du fået løst dit problem angående at tælle bogstaverne op?
>
>
>
> ja, jeg lavede en funktion med select case

Af ren og skær nysgerrighed, hvor mange linier er din samlede kode til
at tælle bogstaver op?

Jeg har arbejdet på noget ligndende, og er lidt nysgerrig efter
løsningsstrategier, så hvis du har lyst til at dele din kode (evt.
brudstykker) ville det være dejligt?

Mvh Thomas

Christian M. Nielsen (21-04-2006)
Kommentar
Fra : Christian M. Nielsen


Dato : 21-04-06 19:40

"Thomas Smedebøl" <whisdow@hotmail.com> skrev i en meddelelse
news:44491a61$0$15786$14726298@news.sunsite.dk...

> Af ren og skær nysgerrighed, hvor mange linier er din samlede kode til at
> tælle bogstaver op?
>
> Jeg har arbejdet på noget ligndende, og er lidt nysgerrig efter
> løsningsstrategier, så hvis du har lyst til at dele din kode (evt.
> brudstykker) ville det være dejligt?
>

Hvis du kan gøre det kortere, så vil jeg gerne se det.

Jeg har tallene fra 0-9 med også, dem kan du udelade hvis du vil.

FUNCTION FindNext (strShortTMP1Letter)
Select Case strShortTMP1Letter

Case "0"
NextLetterIS = "1"
Case "1"
NextLetterIS = "2"
Case "2"
NextLetterIS = "3"
Case "3"
NextLetterIS = "4"
Case "4"
NextLetterIS = "5"
Case "5"
NextLetterIS = "6"
Case "6"
NextLetterIS = "7"
Case "7"
NextLetterIS = "8"
Case "8"
NextLetterIS = "9"
Case "9"
NextLetterIS = "a"
Case "a"
NextLetterIS = "b"
Case "b"
NextLetterIS = "c"
Case "c"
NextLetterIS = "d"
Case "d"
NextLetterIS = "e"
Case "e"
NextLetterIS = "f"
Case "f"
NextLetterIS = "g"
Case "g"
NextLetterIS = "h"
Case "h"
NextLetterIS = "i"
Case "i"
NextLetterIS = "j"
Case "j"
NextLetterIS = "k"
Case "k"
NextLetterIS = "l"
Case "l"
NextLetterIS = "m"
Case "m"
NextLetterIS = "n"
Case "n"
NextLetterIS = "o"
Case "o"
NextLetterIS = "p"
Case "p"
NextLetterIS = "q"
Case "q"
NextLetterIS = "r"
Case "r"
NextLetterIS = "s"
Case "s"
NextLetterIS = "t"
Case "t"
NextLetterIS = "u"
Case "u"
NextLetterIS = "v"
Case "v"
NextLetterIS = "w"
Case "w"
NextLetterIS = "x"
Case "x"
NextLetterIS = "y"
Case "y"
NextLetterIS = "z"
Case "z"
NextLetterIS = "0"

End Select
End Function


Vælg bogstav der skal skiftes ud

strShortTMP1Letter = g ' indsæt selv bogstav efter behov
' evt via strShortTMP1Letter =
mid(strLetters, (iCount),1)
' hvor iCount har talt op til det
bogstav der skal skiftes ud,
' og strLetters er din bogstavrække

FindNext(strShortTMP1Letter)
'udskriv det returnede bogstav.
response.Write(NextLetterIS ) ' i dette tilfælde = h
--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Thomas Smedebøl (22-04-2006)
Kommentar
Fra : Thomas Smedebøl


Dato : 22-04-06 00:27

> Hvis du kan gøre det kortere, så vil jeg gerne se det.

Jeg ved ikke om det er kortere, men her er min samlede løsning - måske
nogle vil være så venlige at give kritik. Den baserer sig på 3
funktioner: NextChar, changeLetter og NextUp. Det samlede resultat
bliver at den kan tælle i alt fra binært til hexadecimalt og mere til,
bare angiv de nødvendige tegn i "streng". Jeg kan ikke helt overskue om
du få taget højde for tilføjelse af nyt tegn, når du når til ... ?

Mvh Thomas

function NextChar (stringofchars,curchar) 'modtager en tekststreng og et
tegn, og returnerer det tegn 1 plads til højre for det indkomne tegn
'made by Thomas Smedebøl (whisdow@hotmail.com
'please email me if you choose to use this function.
'Free for non-profit use
dim position
position = instr(stringofchars,curchar)
if position<len(stringofchars) then
nextchar = mid(stringofchars,position+1,1)
else
nextchar = left(stringofchars,1)
end if
end function

function changeletter (textstring,letter,place) 'place is counted from
'made by Thomas Smedebøl (whisdow@hotmail.com
'please email me if you choose to use this function.
'Free for non-profit use
left starting with 1
nmbofchars = len(textstring)
if nmbofchars = 1 then
changeletter = letter
else
leftpart = left(textstring,place-1)
rightpart = right(textstring,nmbofchars-place)
changeletter = leftpart & letter & rightpart
end if
end function

Function NextUp (curtext, place)
'made by Thomas Smedebøl (whisdow@hotmail.com
'please email me if you choose to use this function.
'Free for non-profit use
Dim allLastChars, lenstring, streng
version = 2 '1 = 001,002... 2 = 1, 2... altså om der skal foranstilles
firstchar

streng = "0123456789abcdefghijklmnopqrstuvwxyz"
firstchar = left(streng,1)
lastchar = right(streng,1)
lenstring = len(curtext)

allLastChars = true

For i = 1 to lenstring
If mid(curtext,i,1) <> lastchar then allLastChars = false
Next

if allLastChars then 'hvis alle tegn er lastchar tilføj tegn (VIRKER)
if version = 1 then
NextUp = Replace( Space(len(curtext)+1), " ", firstchar)
end if
if version = 2 then
NextUp = nextchar(streng,firstchar) & Replace( Space(len(curtext)),
" ", firstchar)
end if

else

IF curtext <> "" Then 'hvis der allerede findes bogstaver
spot = lenstring-(place) 'udvælges det aktuelle sted for bogstavet
talt fra venstre
if spot < 1 then spot = 1 end if
letter = mid(curtext,spot,1) 'og bogstavet


if letter<>lastchar then 'bogstavet er mindre end z og skal altså
kun tælles en op 'virker
newletter = nextchar(streng,letter)
NextUp = changeletter(curtext,newletter,spot)

else 'bogstavet er z og bogstavet skal nulstilles til a mens det
foranstillede bogstav stilles en op.
temptext = changeletter(curtext,firstchar,spot)
NextUp = NextUp(temptext, place+1)

end if

Else 'hvis der ingen tegn er (VIRKER)
NextUp = firstchar
End if

end if

End function

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


Dato : 21-04-06 21:42

Christian M. Nielsen skrev:

> Hvis du kan gøre det kortere, så vil jeg gerne se det.

Det kan det sagtens.

> FUNCTION FindNext (strShortTMP1Letter)
> Select Case strShortTMP1Letter
>
> Case "0"
> NextLetterIS = "1"

[snip]

Man kan udnytte at a-z og 0-9 er fortløbende serier i ascii-
tegnsættet (og alle andre normale tegnsæt). Så behøver man kun lave
specialkode til de spring der skal laves (9=>a, z=>0)

Function FindNext(strShortTMP1Letter)
   Dim intAsc, intNext
   intAsc = asc(strShortTMP1Letter)
   Select Case intAsc
      Case 57
         ' 9 => a
         intNext = 97      
      Case 122
         ' z => 0
         intNext = 48
      Case Else
         intNext = intAsc + 1
   End Select
   FindNext = Chr(intNext)
End Function

En funktion bør ikke ændre ved globale variable, sådan som din
udgave af FindNext gør. Lad i stedet funktionen returnere en værdi.

Man kan afprøve funktionen på følgende måde:

Dim i, x
x = "0"
For i = 1 to 100
   Response.write x & ", "
   x = FindNext(x)
Next
--
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

Christian M. Nielsen (23-04-2006)
Kommentar
Fra : Christian M. Nielsen


Dato : 23-04-06 16:25

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns97ACE6EF6916Ejcdmfdk@gyrosmod.cybercity.dk...

> Man kan udnytte at a-z og 0-9 er fortløbende serier i ascii-
> tegnsættet (og alle andre normale tegnsæt). Så behøver man kun lave
> specialkode til de spring der skal laves (9=>a, z=>0)
>
> Function FindNext(strShortTMP1Letter)
> Dim intAsc, intNext
> intAsc = asc(strShortTMP1Letter)
> Select Case intAsc
> Case 57
> ' 9 => a
> intNext = 97
> Case 122
> ' z => 0
> intNext = 48
> Case Else
> intNext = intAsc + 1
> End Select
> FindNext = Chr(intNext)
> End Function

Det er noget kortere end det jeg havde sat sammen. Jeg var ikke klar over at
man kunne omdanne til ASC på den måde, men man lærer jo lidt hver dag. Tak
for forkortelsen.

> En funktion bør ikke ændre ved globale variable, sådan som din
> udgave af FindNext gør. Lad i stedet funktionen returnere en værdi.


Samme uvidenhed som nævnt ovenfor. Jeg takker for eksemplet.

Begge dele virker perfekt.

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Thomas Smedebøl (17-04-2006)
Kommentar
Fra : Thomas Smedebøl


Dato : 17-04-06 09:47

Christian M. Nielsen wrote:
> Hej.
>
> Jeg roder lidt med at skifte bogstaver ud i en dynamisk bogstaverække. (se
> tidligere indlæg om at "tælle med bogstaver").
>
> hvis bogstaverækken for eksempel er: gfjkdz
>
> så skal næste være: gfjkea (z blilver til a og d bliver til e)
>
> Det kan jeg godt lave, ved at jeg kontrollerer om MoveToFirstLetter = "yes"
> (når sidste bogstav er z) og så kaldes funktionen igen for næstsidste
> bogstav. Men jeg kan ikke lige gennemskue hvordan jeg får det dynamisk så
> der løbes igennem til det ikke er nødvendigt længere?

du skal nok kigge på rekursive functioner:
http://www.15seconds.com/issue/000803.htm

mvh thomas

Christian M. Nielsen (17-04-2006)
Kommentar
Fra : Christian M. Nielsen


Dato : 17-04-06 09:52


"Thomas Smedebøl" <whisdow@hotmail.com> skrev i en meddelelse
news:4443561c$0$15791$14726298@news.sunsite.dk...
løbes igennem til det ikke er nødvendigt længere?
>
> du skal nok kigge på rekursive functioner:
> http://www.15seconds.com/issue/000803.htm
>


Tak for linket, jeg prøver at se på det.

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



Søg
Reklame
Statistik
Spørgsmål : 177483
Tips : 31964
Nyheder : 719565
Indlæg : 6408395
Brugere : 218884

Månedens bedste
Årets bedste
Sidste års bedste