Avatar billede orca Nybegynder
05. december 2001 - 22:49 Der er 11 kommentarer og
1 løsning

Overflow

Hej. Jeg arbejder på et program som skal gennemarbejde nogle html sider. Nogle af disse sider kan naturligvis godt være ret store. Al teksten bliver sat ind i en RichText box. Når jeg så skal arbejde med teksten overfører jeg dette tekst til en string variabel. VB melder fejlen Overflow ved følgende linie:

nStringStart = InStr(nStart, strData, \"<a href=\")

nStart indeholder en integer, altså hvor søgningen skal starte fra. strData indeholder selve teksten.

Det virker helt fint ved små tekster, men ikke ved store.

Mvh Mark
Avatar billede jespernaur Nybegynder
05. december 2001 - 23:03 #1
Hvor stor skal strData være, før det går galt? Prøv evt et eksperimentprogram, hvor du fordobler størrelsen indtil det ikke længere kan.
Avatar billede orca Nybegynder
05. december 2001 - 23:14 #2
Den virker ved 32768 tegn, men går død når jeg fordobler til 65536. Kan der være en 32Kbit tekstbegrænsning på rich text boksen?

Mvh Mark
Avatar billede orca Nybegynder
05. december 2001 - 23:15 #3
Eller rettere sagt, 32Kbit begrænsning på variablen.
Avatar billede jespernaur Nybegynder
05. december 2001 - 23:27 #4
Har du prøvet med 65535, altså 2^16 - 1?

Det lyder meget som om der er en 16-bit\'s begrænsning på længden af en VB-string
Avatar billede orca Nybegynder
05. december 2001 - 23:31 #5
Det giver også overflow :(.
Avatar billede jespernaur Nybegynder
05. december 2001 - 23:38 #6
Det ser altså ud til, at overflow indtræder et sted mellem 32768 og 65535, og det kan selvfølgelig være meget interessant at finde ud af præcis hvor. Men: Hvis du er ude for html-sider, der risikerer at være større, er du under alle omstændigheder nødt til at opfinde en måde at læse dem igennem i mindre klumper, i stedet for den (ellers ret bekvemme) metode med det hele i et hug!

Mvh
Jesper Naur
Avatar billede orca Nybegynder
05. december 2001 - 23:40 #7
Øv øv og atter øv :). Ej, jeg regnede med at jeg nok blev nødt til det. Jeg lader lige spørgssmålet stå lidt endnu.

Mvh Mark
Avatar billede jespernaur Nybegynder
05. december 2001 - 23:52 #8
Tag det ikke så tungt, det er jo bare almindelig kodning!
Avatar billede orca Nybegynder
05. december 2001 - 23:56 #9
Hehe, jeg ved det... Men det ville være lettere uden at skulle gøre det :)
Avatar billede orca Nybegynder
05. december 2001 - 23:57 #10
Jeg sender lige koden i tilfælde af at nogen kan se noget forkert:

nStart = 1
    Do Until nStart = Len(strData)
        If InStr(nStart, strData, \"<a href=\") <= 0 Then
            Exit Do
        End If
        nStringStart = InStr(nStart, strData, \"<a href=\")
        nStringEnd = InStr(nStringStart, strData, \">\")
        nStringLength = nStringEnd - nStringStart
        URLString = URLString & Mid(strData, nStringStart, nStringLength + 1) & \",\" & vbCrLf
        nStart = nStringEnd
    Loop
   
    nURLs = Split(URLString, \",\")
    For i = 0 To UBound(nURLs) - 1
   
        nLink = Right(nURLs(i), Len(nURLs(i)) - 11)
       
        \'Determine length
        If InStr(nLink, \"\'\") <= 0 Then
            nLength = InStr(nLink, \"\"\"\")
        Else
            nLength = InStr(nLink, \"\'\")
        End If
        nLink = Left(nLink, nLength - 1)
       
        \'Determine type
        If InStr(nLink, \"http://\") Then
            nType = \"Remote\"
        Else
            nType = \"Local\"
        End If
       
        \'Add the link to the link box
        With lstStatus(1)
            Set nItem = .ListItems.Add(, , nLink)
            nItem.ListSubItems.Add , , nType
        End With
    Next
Avatar billede peter.erikse Nybegynder
06. december 2001 - 12:45 #11
Hvorfor dedinerer du ikke nStart som \"Long\"
Avatar billede orca Nybegynder
06. december 2001 - 19:06 #12
Sørme om det ikke virkede :). Jeg testede op til 3.5 millioner tegn, så gad jeg ikke gå højere :).

Mange tak.

Mvh Mark
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