Avatar billede ch007 Nybegynder
10. november 2004 - 23:11 Der er 10 kommentarer og
1 løsning

Hvorfor virker denne link-funktion kunne inden skr til db?

Hej!

Jeg bruger ASP - MySQL (På B-one)

Jeg har før brugt følgende funktion:

**************************************************

'Lin = Tekst

Function autoHighlight(Lin)
'Function autoHighlight(Tekst)

' Indstillinger -----
link_color = "black"        ' Hvad farve skal linket have
link_target = "_blank"        ' Link Target
ugyldigeTegn = " _:\,;/'?" ' Ugyldige tegn omkring punktummer
StartTegn = " ,;""<>!"        ' Tegn der starter et link fx. <H1>www.spise.dk</H1>
SlutTegn = " ,;""<>!"        ' Tegn der slutter et link fx. www.partynet.dk!
MaxDomain = 3                ' Max. tegn i domain navn fx "com"    (3=default)   
MaxLinks = -1                ' (Bruges til debug) Hvor mange links skal "HighLight"'es per streng (-1 = uendelig)
Pointer = 1                ' Ved hvad tegn skal der startes (1=default)

' Skal der chekes efter registrede domæner (1=ja & 0=nej)
RegON = 1                   
' De registrede domæner:
RegDomain = "dk;com;net;org;gov;edu;uk;no;se;de;as;ru;sk;ch;it;nl;fr;hu;to;au;tw;jp;"

' Indstillinger slut -----
 
' Begynd løkke
Do until t = MaxLinks
' Nulstilling af de variable:
NoLink = False            'True hvis det fundne tekst ikke er et link
TrueLink = False        'True hvis linket begynder med http://
Linkhtml = ""
PathStart = 0
PortStart = 0
PointerADD = 0

' Her findes "midten" af linket
middle = Instr(pointer,lin,".")
temp = Instr(pointer,Lcase(lin),"http://")

' Dette sørger for at finde det første af enten "." eller "http://"
If temp < middle and temp <> 0 then middle = temp+6:TrueLink = true
If middle = 0 and temp > 0 then middle = temp+6:TrueLink = true

' Hvis "." eller "http://" ikke er fundet skal løkken stoppe
If Middle = 0 then exit do

' Her findes starten af linket (defineret udfra start tegnene)
start = 1
For i = 1 to len(StartTegn)
  temp = InStrRev(Lcase(lin),mid(StartTegn,i,1),Middle)
  If temp => start and temp <> 0 then start = temp+1
next

' Her findes slutningen af linket (defineret udfra slut tegnene)
slut = len(lin)
For i = 1 to len(SlutTegn)
  temp = Instr(Middle,Lcase(lin),mid(SlutTegn,i,1))
  If temp <= slut and temp <> 0 then slut = temp-1
next

'Checker efter "?" og "." de må gerne stå i midten af linket, men ikke i slutningen
' Fx. "www.nordmark.dk?????" eller "www.partynet.dk..."
tegn = Mid(lin,slut,1)
do until (tegn <> "." and tegn <> "?") or slut = 1
  If tegn = "." or tegn = "?" then slut=slut-1:PointerADD = PointerADD+1
  tegn = Mid(lin,slut,1)
loop

'Hvis det kun er et "." der er fundet og linket ikke begynder med http:// skal det testes ekstra
If TrueLink = False then

' Her testes om punktummet står i starten eller i slutningen af strengen
If Middle = 1 then noLink = true:start=slut+1
If Middle = len(lin) then noLink = true:start=slut+1
' Her testes efter ugyldige tegn, ved siden af punktummet
If nolink <> True then
  TegnF = Mid(lin,middle-1,1)
  TegnE = Mid(lin,middle+1,1)
  For i = 1 to len(ugyldigeTegn)
  If TegnF = mid(ugyldigeTegn,i,1) then noLink = true:start=slut+1:exit for
  If TegnE = mid(ugyldigeTegn,i,1) then noLink = true:start=slut+1:exit for
  next
end if

' Her findes domæne navnet og længden chekes -> fx:".dk" ".com" ".uk"
' De første if-sætningr checker om der er andet efter efter server navnet
' som fx. port nr. eller en sti
If nolink <> True then
  ServerSlut = Slut
  temp = Instr(Middle,Lcase(lin),"/")
  If temp <= ServerSlut and temp <> 0 then ServerSlut = temp-1:PathStart=Temp
  temp = Instr(Middle,Lcase(lin),":")
  If temp <= ServerSlut and temp <> 0 then ServerSlut = temp-1:PortStart=Temp+1
  temp = InstrRev(lin,".",ServerSlut)
  Domain = mid(Lcase(lin),temp+1,ServerSlut - temp)
  Servername = mid(lin,start,ServerSlut-start+1)
  If len(domain) > MaxDomain then noLink = true:start=slut+1 'Max tegn
  If len(domain) = 0 then noLink = true:start=slut+1 'Udrydder fx. www.spise./index.htm

'Checker efter steder i servernavnet hvor der er mere end et punktum
  If Instr(Servername,"..") <> 0 then noLink = true:start=slut+1
end if
 
' Her chekes, hvis RegON = 1, om domænenavnet er korrekt.
If RegON = 1 and nolink <> true then
  RegDomains = split(Lcase(RegDomain),";")
  nolink = true
  For i = 0 to Ubound(RegDomains)
    If RegDomains(i) = Domain then nolink = false:exit for
  next
  If nolink = true then start=slut+1
end if

else
'Hvis der står "xxhttp://", er det kun fra "http://" der skal highlightes:)
start = Instr(pointer,Lcase(lin),"http://")
End if

'Dette er nogen af de ting der er mulige at spytte ud til hvert link:
'Response.write "---------------------<BR>"
'Response.write "LinkNr: "&t&"<BR>"
'Response.write "Starter ved tegn: "&Start&"<BR>"
'Response.write "Slutter ved tegn: "&Slut&"<BR>"
'Response.write "Domænenavn: "&Domain&"<BR>"
'Response.write "Servernavn uden path: "&ServerName&"<BR>"
'If PathStart<>0 then Response.write "Path efter servernavn: "&mid(lin,pathStart,slut-pathstart+1)&"<BR>"

'Hvis det fundne mulige link har bestået alle "prøverne" skal det udskiftes med html tags
If noLink <> True then
If Lcase(Mid(lin,start,7)) = "http://" then
'LinkHtml = "<a href='" & mid(lin,start,slut-start+1) &"' target='"&link_target&"'><font color='" & link_color & "'>"& mid(lin,start,slut-start+1) & "</font></a>"
LinkHtml = "<a href=" & mid(lin,start,slut-start+1) &" target="&link_target&"><font color=" & link_color & ">"& mid(lin,start,slut-start+1) & "</font></a>"

else
  'LinkHtml = "<a href='http://" & mid(lin,start,slut-start+1) &"' target='"&link_target&"'><font color='" & link_color & "'>"& mid(lin,start,slut-start+1) & "</font></a>"
LinkHtml = "<a href=http://" & mid(lin,start,slut-start+1) &" target="&link_target&"><font color=" & link_color & ">"& mid(lin,start,slut-start+1) & "</font></a>"
End If
  lin = Left(lin,start-1) & LinkHtml & right(lin,len(lin)-slut)
  t=t+1
End If

'Pointeren sættes til næste logiske start
pointer = start + len(LinkHtml)+PointerADD
loop

autoHighlight = lin
End function

Tekst = autoHighlight(Tekst)
***********************************************************

Til at lave links med... For lang tid siden lavede jeg "fejlen" at ændre tekst til links og så smide i databasen... Det holder jo ikke.

Nu er jeg ved at ændre strukturen og vil gøre det efter udtrækket... Meeen  så laver den følgende fejl:

Microsoft VBScript compilation error '800a03ea'

Syntax error

forum.asp, line 373

Function autoHighlight(Lin)




Mystisk - nogle der kan hjælpe?
Avatar billede ch007 Nybegynder
10. november 2004 - 23:13 #1
Selv funktion til autoHighlight er fundet her et sted på eksperten :)
Avatar billede erikjacobsen Ekspert
10. november 2004 - 23:20 #2
Selv linien kan jeg ikke se fejl ved. Jeg kender ikke den ASP-version, og dermed
den fejlbesked, men kunne det tænkes du definerer funktionen i en anden funktion eller
sub?
Avatar billede hiks Nybegynder
10. november 2004 - 23:26 #3
nu er jeg ikke helt med på hvad fejlen reelt er?

Er Function autoHighlight(Lin) = Line 373 ?

det er ikke fordi din Lin variabel er tom (altså NULL) eller som erikjacobsen skriver er defineret et andet sted ?

/hiks
Avatar billede ch007 Nybegynder
10. november 2004 - 23:34 #4
Set RS = myConn.Execute("SELECT * FROM Forum1 where Forum1nr = '" & Forumnr & "' AND Indlaegnr = '0' order by Dato")
    If RS.EOF Then
        Response.write "fejl"
    Else

Jeg bruger funktionen efter denne... Ikke i en anden funktion


sub - hvad er det... Ikke så meget, for ikke at sige slet ikke inde i det her med funktioner...
Avatar billede ch007 Nybegynder
10. november 2004 - 23:36 #5
Hov nej... Den er ikke tom.. Den ' i 'Lin = Tekst
er der ikke

Ja Function autoHighlight(Lin) er Line 373
Avatar billede hiks Nybegynder
10. november 2004 - 23:37 #6
du har vel kommenteret den ud - har du ik?

altså Lin = Tekst

/hiks
Avatar billede erikjacobsen Ekspert
10. november 2004 - 23:38 #7
Men det skal du ikke. Definer din funktion i toppen af din side, og ikke inde i en if-else.
Avatar billede ch007 Nybegynder
10. november 2004 - 23:42 #8
Okay... ahh, så jeg smider funktionen øverst og så selve:

Tekst = autoHighlight(Tekst)

i if-sætningen?

Prøver lige....
Avatar billede ch007 Nybegynder
10. november 2004 - 23:52 #9
Sådan!!!

erikjacobsen -> Det virker... Der kan man bare se hvormeget jeg ved om sådanne funktioner... Det dur nu, hvor jeg har gjort som beskrevet i mit sidste indlæg...

Smider du et svar! PERFEKT!
Avatar billede erikjacobsen Ekspert
10. november 2004 - 23:56 #10
Det lyder godt. Men jeg samler slet ikke på point. Du er velkommen til at svare selv,
og acceptere eget svar.
Avatar billede ch007 Nybegynder
11. november 2004 - 00:25 #11
Hmm, okay - fair nok, men tak!!!!!!
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