Avatar billede killstun Nybegynder
07. april 2005 - 18:57 Der er 14 kommentarer og
1 løsning

Automatisk linieskift efter et bestemt antal bogstaver

Jeg har en Access database, hvor jeg henter nogle oplysninger fra. Men når teksten skal vises støder jeg på en problem, hvis jeg laver et langt ord uden mellemrum/linieskift.

ex.
Lad os sige at min side er 200px bred. Laver jeg et langt ord uden mellemrum/linieskift, bliver siden i stedet for 300 px bred.

Kan jeg ikke lave en tilføjelse ved Response.write rs("etellerandet") som gør at den på samme linie kun kan lave et bestemt antal bogstaver, hvorefter den automatisk laver et linieskift, selvom der ikke er lavet mellemrum/linieskift i ordet?
Avatar billede hansdam Nybegynder
07. april 2005 - 19:14 #1
mySplit = split(rs("etellerandet"),"<br />")

for i = 0 to UBound(mySplit)
  if Len(mySplit(i)) > int(50) then
      Response.write Left(mySplit(i),50) & "-<br />" & Mid(mySplit(i),50,Len(mySplit(i))) & " "
  else
      Response.write mySplit(i) & " "
  end if
next

Her er et forslag til hvordan det kan gøres... Kan selvfølgelig forbedres

/Hans
Avatar billede hansdam Nybegynder
07. april 2005 - 19:16 #2
Oops...
Der er fejl i denne linje
Response.write Left(mySplit(i),50) & "-<br />" & Mid(mySplit(i),50,Len(mySplit(i))) & " "

rettes til:
Response.write Left(mySplit(i),50) & "-<br />" & Mid(mySplit(i),50,Len(mySplit(i))-50) & " "

/Hans
Avatar billede hansdam Nybegynder
07. april 2005 - 19:37 #3
<%
function DelOrd(txt,antalTegn,linjeskift)

mySplit = split(txt,linjeskift)

thetxt = ""

for i = 0 to UBound(mySplit)
    if Len(mySplit(i)) > int(antalTegn) then
        thetxt = thetxt & Left(mySplit(i),antalTegn) & "-" & linjeskift
        if Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn) > int(antalTegn) then
            thetxt = thetxt & DelOrd(Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn),antalTegn,linjeskift) & " "
        else
            thetxt = thetxt & Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn) & " "
        end if
    else
        thetxt = thetxt & mySplit(i) & " "
    end if
next

DelOrd = Left(thetxt,Len(thetxt)-1)

end function

Response.write DelOrd("asljfbojægbåosbugadæoufbaæofbaæofbheoåithboe4ibtåaobfdoæjzbfæadjfbaoudbhaubw3uvbaæfbdafds",10,"<br />")
%>

Forbedret udgave

/Hans
Avatar billede killstun Nybegynder
07. april 2005 - 19:46 #4
Jeg prøvede lige den første du lavede, men der kom der ikke linieskift. Den næste du har lavet er jeg lidt lost. Hvor indføre jeg rs-ordet?
Avatar billede hansdam Nybegynder
07. april 2005 - 19:58 #5
Fra
      function DelOrd(....

til
      end function

kan du have lige hvor du vil i din kode

Response.write DelOrd("....",10,"<br />")
er den linje du sætter den rs ind i... 10 er maxlængden på dine ord og "<br />" er den måde jeg plejer at lave linje skift, andre bruger muligvis "<br>", eller whatever.
Sådan kan din se ud:
Response.write DelOrd(rs("etellerandet"),10,"<br />")
Avatar billede killstun Nybegynder
07. april 2005 - 20:11 #6
Jeg har indført dette nu:

function DelOrd(txt,antalTegn,linjeskift)

mySplit = split(txt,linjeskift)

thetxt = ""

for i = 0 to UBound(mySplit)
    if Len(mySplit(i)) > int(antalTegn) then
        thetxt = thetxt & Left(mySplit(i),antalTegn) & "-" & linjeskift
        if Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn) > int(antalTegn) then
            thetxt = thetxt & DelOrd(Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn),antalTegn,linjeskift) & " "
        else
            thetxt = thetxt & Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn) & " "
        end if
    else
        thetxt = thetxt & mySplit(i) & " "
    end if
next

DelOrd = Left(thetxt,Len(thetxt)-1)

end function

Response.write DelOrd(rs("etellerandet"),10,"<br />")

- men kommer med denne fejl:
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
Der er en syntaksfejl
/beskrivelse.asp, line 343
function DelOrd(txt,antalTegn,linjeskift)
Avatar billede hansdam Nybegynder
07. april 2005 - 20:16 #7
Kan du ikke lige prøve at poste det område hvor du skal have udskrevet rs("etellerandet"), så kan jeg sætte det ind, så du kan se...

Det ser meget rigtigt ud det du har lavet der, men har du husket at åbne databasen, og alt det der?
Avatar billede killstun Nybegynder
07. april 2005 - 20:21 #8
Jeg har åbnet databasen længere oppe i dokumentet. Viser en masse andet fra databasen på samme side.

Men set ud fra fejl meddelelsen er det jo denne linie som der er vrøvl med:
function DelOrd(txt,antalTegn,linjeskift)

Hvad mener du med at poste området?
Avatar billede hansdam Nybegynder
07. april 2005 - 20:44 #9
viser noget kode...
Det kan godt være det bare er mig, men jeg kunne godt tænke mig et overblik...

Koden virker altså: http://www.hdhp.dk/test1.asp
Avatar billede killstun Nybegynder
07. april 2005 - 20:49 #10
hmm, sq mystisk. Jeg sidder godt nok og laver det lokalt på computeren, men det burde ikke have betydning. Kan du ikke prøve at vise hele den side du har lagt online? Så burde jeg da få det til at fungere med en enkelt rettelse ved rs-linien.
Avatar billede hansdam Nybegynder
07. april 2005 - 21:45 #11
<%
function DelOrd(txt,antalTegn,linjeskift)

mySplit = split(txt,linjeskift)

thetxt = ""

for i = 0 to UBound(mySplit)
    if Len(mySplit(i)) > int(antalTegn) then
        thetxt = thetxt & Left(mySplit(i),antalTegn) & "-" & linjeskift
        if Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn) > int(antalTegn) then
            thetxt = thetxt & DelOrd(Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn),antalTegn,linjeskift) & " "
        else
            thetxt = thetxt & Mid(mySplit(i),antalTegn+1,Len(mySplit(i))-antalTegn) & " "
        end if
    else
        thetxt = thetxt & mySplit(i) & " "
    end if
next

DelOrd = Left(thetxt,Len(thetxt)-1)

end function

Response.write DelOrd("asljfbojægbåosbugadæoufbaæofbaæofbheoåithboe4ibtåaobfdoæjzbfæadjfbaoudbhaubw3uvbaæfbdafds",10,"<br />")
Response.write "<br /><br />"
Response.write DelOrd("asljfbojægbåosbugadæoufbaæofbaæofbheoåithboe4ibtåaobfdoæjzbfæadjfbaoudbhaubw3uvbaæfbdafds",20,"<br />")
Response.write "<br /><br />"
Response.write DelOrd("asljfbojægbåosbugadæoufbaæofbaæofbheoåithboe4ibtåaobfdoæjzbfæadjfbaoudbhaubw3uvbaæfbdafds",30,"<br />")
Response.write "<br /><br />"
Response.write DelOrd("asljfbojægbåosbugadæoufbaæofbaæofbheoåithboe4ibtåaobfdoæjzbfæadjfbaoudbhaubw3uvbaæfbdafds",40,"<br />")
%>

Her er koden
Avatar billede killstun Nybegynder
07. april 2005 - 22:13 #12
Jeg forstår det ikke helt. Jeg virker ikke, selvom jeg kopiere hele koden direkte over uden redigering. Den kommer med samme fejl:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
Der er en syntaksfejl
/filmbeskrivelse.asp, line 332
function DelOrd(txt,antalTegn,linjeskift)

Når jeg fjerner hele koden, virker alt fint, så database åbning/lukning er fin nok. Nogle idéer?
Avatar billede killstun Nybegynder
07. april 2005 - 22:14 #13
- har endda også prøvet den online...
Avatar billede hansdam Nybegynder
07. april 2005 - 22:41 #14
må jeg ikke prøve at se koden? - hvis du ikke vil skrive koden her, så send den til min mail - hans.dam@gmail.com
Avatar billede killstun Nybegynder
07. april 2005 - 23:11 #15
Har sendt til din email nu.
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