Avatar billede jmc Nybegynder
08. april 2003 - 23:17 Der er 14 kommentarer og
1 løsning

udskrive 1 char i et loop

Jeg er inde i et repeat loop som udskriver et ord af gangen fra en ordbog. Jeg vil gerne skrive et stort bogstav for hver gang der starter et nyt bogstav...

noget i retning af:

if thechar = "" or thechar <> char 1 of ordbog.Fields.Item("ord").Value then
thechar = char 1 of ordbog.Fields.Item("ord").Value
Response.Write(thechar)%
end if

hvordan gøre dette?
Avatar billede hossein Nybegynder
08. april 2003 - 23:34 #1
Avatar billede dk_akj Nybegynder
09. april 2003 - 07:28 #2
do while not xxx
  ' første bogstav
  char1 = left(str)
  ' hvis første bogstav er <> første bogstav fra sidste loop sættes 1. bogstav stort.
  if char1 <> oldchar1 then
    ' sæt første bogstav til uppercase
    str = upper(char1) & rigth(char1,len(char1)-1)
  end if
  oldchar1 = char1
  response.write str
loop


//akj
Avatar billede jmc Nybegynder
09. april 2003 - 07:44 #3
Microsoft VBScript runtime error '800a01c2'
Wrong number of arguments or invalid property assignment: 'left'
/p.asp, line 128

' første bogstav
str = ordbog.Fields.Item("ord").Value
  char1 = left(str)
  ' hvis første bogstav er <> første bogstav fra sidste loop sættes 1. bogstav stort.
  if char1 <> oldchar1 then
    ' sæt første bogstav til uppercase
    str = upper(char1) & rigth(char1,len(char1)-1)
  end if
  oldchar1 = char1
  response.write str%>
Avatar billede dk_akj Nybegynder
09. april 2003 - 07:46 #4
SORRY
char1 = left(str,1)

//akj
Avatar billede jmc Nybegynder
10. april 2003 - 09:15 #5
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'upper'
/ordbogprint.asp, line 131
Avatar billede dk_akj Nybegynder
10. april 2003 - 09:23 #6
upper ændres til ucase

//akj
Avatar billede jmc Nybegynder
10. april 2003 - 09:48 #7
Nu udskriver den HELE ordet foran hver record!
Den skal bare skrive A (én gang) og når B kommer til B (én gang)
Kan i hjælpe mig på vej igen?

Nu ser det sådan ud.

repeat....

<%
' første bogstav
str = ordbog.Fields.Item("ord").Value
  char1 = left(str,1)
  ' hvis første bogstav er <> første bogstav fra sidste loop sættes 1. bogstav stort.
  if char1 <> oldchar1 then
    ' sæt første bogstav til uppercase
    str = ucase(char1) & right(char1,len(char1)-1)
  end if
  oldchar1 = char1
  response.write str%>

...loop
Avatar billede dk_akj Nybegynder
10. april 2003 - 10:23 #8
<%
' første bogstav
str = ordbog.Fields.Item("ord").Value
  char1 = left(str,1)
  ' hvis første bogstav er <> første bogstav fra sidste loop sættes 1. bogstav stort.
  if char1 <> oldchar1 then
    ' sæt første bogstav til uppercase
    str = ucase(char1
  else
    str = ""
  end if

  oldchar1 = char1
  response.write str
%>

...loop
Avatar billede jmc Nybegynder
10. april 2003 - 11:22 #9
TAK NU VIRKER DET!
Jeg har dog tænkt over om det ikke kunne optimeres lidt på hastiheden.
Men dette virkede ikke.

<%
' første bogstav
str = ordbog.Fields.Item("ord").Value
  char1 = left(str,1)
  ' hvis første bogstav er <> første bogstav fra sidste loop sættes 1. bogstav stort.
  if char1 <> oldchar1 then
    ' sæt første bogstav til uppercase
    str = ucase(char1)
      response.write "<font size='7'>"&str&"</font><BR><BR>"
  else
    str = ""
  end if

  oldchar1 = char1

%>
Avatar billede dk_akj Nybegynder
10. april 2003 - 12:32 #10
hvad virker ikke ??

//akj
Avatar billede jmc Nybegynder
10. april 2003 - 12:38 #11
wrong formuliering.
Det virker ok men mit optimeringsforslag virker ikke.
-> at jeg sætter response.write ind i if sætningen,
for at reducere antal reponser.
Avatar billede dk_akj Nybegynder
10. april 2003 - 12:42 #12
Helt ærligt så tror jeg ikke det betyder noget med de servere vi har idag.

prøv evt dette:
<%
' første bogstav
str = ordbog.Fields.Item("ord").Value

  char1 = left(str,1)
  ' hvis første bogstav er <> første bogstav fra sidste loop sættes 1. bogstav stort.
  if char1 <> oldchar1 then
    ' sæt første bogstav til uppercase
      response.write "<font size='7'>" & ucase(char1) & "</font><BR><BR>"
  else
    response.write " "
  end if

  oldchar1 = char1
%>

Teoretisk set kan du, for at optimere, fjerne alle kommentarer da serveren jo læser al koden igennem ved afvikling....

//akj
Avatar billede jmc Nybegynder
10. april 2003 - 15:58 #13
Tror du ikke det gør noget hvis den skal gøre det 5.500 gange i et dokument?
Avatar billede dk_akj Nybegynder
11. april 2003 - 07:50 #14
Du kan jo prøve at lave en test.

Response.write now()

loop......

Response.write now()

og så indsætte de forskellige scripts.

//akj
Avatar billede jmc Nybegynder
11. april 2003 - 08:27 #15
Den første: 4/11/2003 8:32:10
Den sidste: 4/11/2003 8:32:11
Du har ret, det er kun 1 sek.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester