Toon posts:

[VB6] String uitleesfunctie werkt niet naar behoren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb de volgende functie om een stukje XML uit te lezen, gewoon simpel omdat het alleen ter informatie is en verder niet.

de functie

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Function getSearchText(ByVal text As String, ByVal start As String, ByVal finish As String)
   
   Dim x As Integer
   Dim y As Integer

   If (Len(text) > 0) Then

      x = InStr(text, start) + Len(start)

      If (x > 0) Then

         y = InStr(text, finish) - x

         If (y > 0) Then
            getSearchText = Mid(text, x, y)
         Else
            getSearchText = "(ERROR: y is less than x)"
         End If

      End If

   Else
       getSearchText = 0
   End If
End Function


nu heb ik de volgende text

code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="ISO-8859-1"?>
<quickuploadplugin_protocol>
    <message></message>
    <images>0</images>
    <freespace>0</freespace>
    <spaceleft>999</spaceleft>
    <spaceused>0</spaceused>
    <totalgalleries>0</totalgalleries>
    <freegalleries>0</freegalleries>
    <usedgalleries>0</usedgalleries>
</quickuploadplugin_protocol>


nu gebruik ik de functie zo

code:
1
2
3
4
5
6
7
8
9
10
If getSearchText(xx, "<code>", "</code>") = 0 Then
// doe iets
End If

of zo

var xx = 'vorige bovenstaande code'
item = getSearchText(xx, "<spaceused>", "</spaceused>")

item moet nu 0 bevatten.


nu krijg ik alleen een fout (ERROR: y is less than x) en snap niet waarom, hebben jullie misschien een idee waaraan dit zou kunnen liggen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19:24

gorgi_19

Kruimeltjes zijn weer op :9

Zet eens een aantal 'tussenvariabelen' of output eens x en y tussendoor. :) Dan zie je gelijk waar het fout gaat.

Welke VB hebben we het trouwens over?

[ Voor 16% gewijzigd door gorgi_19 op 29-09-2004 23:22 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
VB 6.0 Professional.

Je bedoelt dat ik waarschijnlijk iets te veel tel? zo nee dan begrijp ik je uitleg niet geheel.

Ik heb even wat getest maar als ik MSGBOX(x) doe krijg ik het nummertje 6, maar dat klopt niet want <code> staat helemaal niet in de text? waarom krijg ik dan wel wat terug? :D

[ Voor 44% gewijzigd door Verwijderd op 29-09-2004 23:30 ]


  • The_Light
  • Registratie: Februari 2002
  • Laatst online: 30-11-2025
Waarschijnlijk krijg je 6 terug omdat je eerst in de text het woord "<code>" gaat zoeken maar die komt er niet in voor en hiervoor krijg je 0 terug, vervolgens tel je er 6 bij op voor Len(start).

Dus x = 6 zover ik kan zien.

Verwijderd

Topicstarter
Dom dom dom..

Functie ietsje aangepast en dus nu werkend.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Function getSearchText(ByVal text As String, 
ByVal Start As String, ByVal finish As String)
   
   Dim x As Integer
   Dim y As Integer
   Dim lng As Integer

   If (Len(text) > 0) Then

      lng = InStr(text, Start)
      x = lng + Len(Start)

      If (lng > 0) Then
         
         y = InStr(text, finish) - x

         If (y > 0) Then
            getSearchText = Mid(text, x, y)
         Else
            getSearchText = "error?"
         End If

      End If

   Else
       getSearchText = 0
   End If
End Function


indien jullie het beter kunnen, zie ik dat graag; kan er alleen maar van leren

[ Voor 4% gewijzigd door Verwijderd op 29-09-2004 23:50 ]