[VB6] ReadLine probleem met quotes

Pagina: 1
Acties:

  • RAZORDUDE
  • Registratie: September 2001
  • Laatst online: 02-12-2021

RAZORDUDE

aka MARAUD3R

Topicstarter
Ik wil uit een bestand een regel uitlezen en uit die regel dan weer een woord halen.
Maar het probleem is namelijk dat dat woord tussen quotes staat in het bestand van de betreffende regel.

Het lijkt erop dat de ReadLine functie (zie hieronder) problemen heeft met het "ophalen" van quotes in een regel.
Ik heb mijn research wel gedaan, maar het is voor mij ook nog redelijk nieuw, en het enige wat ik heb gevonden is chr(34) waar ik misschien wel iets mee kan.

Het zoeken naar een string, dus chr(34) bijvoorbeeld is geen probleem maar ik weet zo niet hoe ik het voor elkaar krijg dat de ReadLine functie daar gebruik van maakt.

Voorbeeld van een regel met quotes:
code:
1
dit is een voorbeeldregel met "dit stukje wil ik alleen laten zien" quotes


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
29
30
31
32
33
34
35
Public Function ReadLine(fName1 As String, LineNumber As Long) _
     As String

'Parameters: fName1 = FullPath to File
'            LineNumber = LineToRead

'Returns:    Contents of the line, or a blank string if
'            LineNumber is greater than the total number of lines

'Requires:   Reference to Microsoft Scripting Runtime

'Example: MsgBox ReadLine("C:\AutoExec.bat", 3)
'           Displays third line of autoexec.bat
  
  Dim oFSO As New FileSystemObject
  Dim oFSTR As Scripting.TextStream
  Dim ret As Long
  Dim lCtr As Long

  If oFSO.FileExists(fName1) Then
     Set oFSTR = oFSO.OpenTextFile(fName1)
     Do While Not oFSTR.AtEndOfStream
        lCtr = lCtr + 1
        If lCtr = LineNumber Then
            ReadLine = oFSTR.ReadLine
            Exit Do
        End If
        oFSTR.SkipLine
    Loop
     oFSTR.Close
     Set oFSTR = Nothing

   End If

 End Function

[ www.coredamage.com ] - [ Z mod (W40k:DOW) ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
De " heeft als ascii code 34. chr(34) zet deze code om in een string. Hetzelfde kan je ook bereiken door escapecodes te gebruiken: een " zet je in string door "" te schrijven. Samen met de " en " van de stringconstante, wordt het dus """".

Voorbeeldje (functie doet niets met foutieve invoer):
Visual Basic:
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
Option Explicit

Const quote As String = """"

Function krijgStukjeTussenQuotes(regel As String) As String
    Dim stukje As String
    
    Dim lpos As Integer
    Dim rpos As Integer
    
    lpos = InStr(1, regel, quote) + 1
    rpos = InStr(lpos, regel, quote)

    stukje = Mid(regel, lpos, rpos - lpos)

    krijgStukjeTussenQuotes = stukje
End Function

Sub test()
    Dim regel As String
    Dim stukje As String
    
    regel = "dit is een voorbeeldregel met ""dit stukje wil ik alleen laten zien"" quotes"
    stukje = krijgStukjeTussenQuotes(regel)
    MsgBox "Regel: " & regel & vbNewLine & _
           "Stukje: " & stukje
End Sub

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-11 15:14

ZaZ

Tweakers abonnee

Het FileSystemObject voor zoiets gebruiken is imho een beetje overkill. Gebruik gewoon Line Input van VB6 zelf. Dat volstaat prima.

[ Voor 10% gewijzigd door ZaZ op 26-02-2007 00:25 ]

Lekker op de bank