Toon posts:

[VB] Strings uit TXT/INI halen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Ik had een vraag waar ik al een tijdje niet uitkom .. Ik ben nu bezig met een Voice Commander voor XP maar uit een heel simpel dingetje kom ik niet uit.

Het gaat om het ophalen van meerdere strings uit een text of ini bestand. Ik zal even een voorbeeld laten zien:

Textbestand:
Hier komt een vraag: Hier komt een antwoord
Hier komt vraag nummer2: Hier komt dan het antwoord op vraag nummer 2

Dit moet er dan in een text bestand komen te staan maar hoe kan ik de strings opdelen in 2 stukkies. Dus dat van de eerste string het eerste deel (voor de ':' ) in listbox 1 komt en de text na de ':' in listbox 2 komt.

En zo ook met zin 2, 3, 4 enz ..

Wie kan mij helpen ?

Alvast bedankt, Erik

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 17-08 14:00

MAZZA

Barbie is er weer!

Split() :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

En welke code heb je tot nu toe? Wat werkt er niet aan? Afaik heeft VB6 de Split-functie.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
De Split() heb ik wel maar die werkt ook niet helemaal jofel .. :S

Hier beneden heb ik een code die ik ooit eens eerder heb gebruikt maar deze zet een text bestand om naar een Combobox en deze werkt niet met dat ':' idee dat ik had .. Deze zet je het gewoon op een nieuwe regel en hij vult het in op een nieuwe regel in de combo .. Maar wie kan deze zodanig aanpassen dat hij gaat lijken op mijn idee helemaal bovenaan deze topic ?

Het hoeft niet helemaal te werken want ik kan zelf ook nog het een en ander veranderen ..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function OpenCombo(Combo As ComboBox, FileDir As String)
FileExist = Dir(FileDir)
If FileExist = "" Then
    MsgBox "File not found ..", vbCritical + vbSystemModal, "Error"
    Exit Function
End If
Open (FileDir) For Input As #1
    While Not EOF(1)
        DoEvents
        Input #1, strString
        Combo.AddItem strString
    Wend
Close #1
End Function

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 17-08 14:00

MAZZA

Barbie is er weer!

Ik ben een totale VB n00b maar waar zit die split() functie in dat voorbeeldje van je dan?

code:
1
Split(string, ";")

  • cvs79
  • Registratie: April 2002
  • Laatst online: 19:55
Heb je al gekeken naar het FileSystemObject. Zoek in de help van VB. Daarmee kun je in een file regel voor regel uitlezen

Zoiets dus:

Private Sub LeesFile()
Dim l_FSO As New FileSystemObject
Dim l_Textstream As TextStream

Set l_Textstream = l_FSO.OpenTextFile("TEST.INI", ForReading, False)

Debug.Print l_Textstream.ReadAll
'of
Debug.Print l_Textstream.ReadLine

End Sub

[ Voor 55% gewijzigd door cvs79 op 31-03-2003 15:49 ]


Verwijderd

Topicstarter
cvs79 schreef op 31 March 2003 @ 15:47:
Heb je al gekeken naar het FileSystemObject. Zoek in de help van VB. Daarmee kun je in een file regel voor regel uitlezen
Thnx ik zal eens even zoeken .. En wat betreft die Split(), die zit ook niet in die code maar ik zal eens kijken hoe ik dat kan gebruiken ..

Ik had al ergens iets gelezen over Split maar zal nog even verder zoeken .. in iedergeval bedankt ;)

  • cvs79
  • Registratie: April 2002
  • Laatst online: 19:55
Het FileSystemObject kun je pas gebruiken als de je reference naar de Microsoft Scripting Runtime hebt aangevinkt bij -->Project --> References

Verwijderd

wat je ook kan doen:

Instr() gebruiken om de positie van de ":" te bepalen en dan 1x Left en 1x Right om de 2 delen van de string te pakken.

code:
1
2
3
4
Str1 = "Hier komt een vraag: Hier komt een antwoord" 
Splitter = InStr(1,Str1,":")
Str2 = Left(Str1,Splitter)
Str3 = Right(Str1,Len(Str1)-Splitter)


(moet er misschien wel nog ergens + of - 1 bijzetten)

is misschien wel een beetje omslachtig maarja :)

[ Voor 58% gewijzigd door Verwijderd op 31-03-2003 15:59 ]


  • ShadowrunR
  • Registratie: Maart 2002
  • Laatst online: 17-08 20:13
Die Split() moet idd wel lukken, en anders kun je nog altijd iedere regel in je tekstbestand met een InStr() controleren op een ':', en dan met Mid() de lijn verdelen in de 2 nodige strings (vraag, antwoord)

Verwijderd

Test = Instr(1, String, ":")

Verwijderd

Topicstarter
Hmmz het is al bijna gelukt maar ik heb nog een vraagje ..

Ik heb ook met een stukkie code (Split) de datum gesplit maar het is nog niet helemaal zoals ik wil en wil graag het volgende:

De datum:
Saturday, March 27, 2003 (Format(Date, "Long Date"))

Maar dan wil ik het zo:
Saturday, 27th of March, 2003

Dit is de code die ik heb:
code:
1
2
3
4
5
Di = Format(Date, "Long Date")
Di2 = Right(Di, 2)
Di = Split(Di, ", ")

Label1.Caption "The date is " & Di(0) & ", " & Di(1) & ", " & Di(2)


Maar hoe verander ik dat ?

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 17-08 14:00

MAZZA

Barbie is er weer!

Heb je zelf al wel gezocht :? :{

[ Voor 4% gewijzigd door MAZZA op 01-04-2003 09:13 ]


  • DarkSilence
  • Registratie: December 2002
  • Laatst online: 19-12-2025

DarkSilence

W3designer.nl

Je kan het best een string splitten met de functies:

Left
Right
Mid
Len
Instr
InstrRev

Voor hoe je zet moet toepassen en de functies kun je ff in VB > Object Browser zoeken. Hier kom je er wel mee uit. Met de bovenstaande functies kun je heel war string bewerkingen uitvoeren. Deze functies maken een deel van de module String in de Object Browser.

Suc6

W3designer.nl


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

MAZZA schreef op 01 april 2003 @ 09:13:
Heb je zelf al wel gezocht :? :{
Nope ...

Naja hintje dan maar, kijk eens in de help, om een datum te formatteren heb je meer mogelijkheden dan alleen maar "long format", "dddd dd mmmm yyyy" bijvoorbeeld :)
en daar heb je de split functie totaal niet voor nodig...

[ Voor 13% gewijzigd door Crazy D op 01-04-2003 13:24 ]

Exact expert nodig?


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Misschien heb je hier wel helemaal nix aan, maar goed:
Ik heb hier geen VB, maar wel VBA van Word 97. Als je daarmee een ini-bestand wilt lezen dat er zo uit ziet:

[Filelocations]
AExec=c:\Autoexec.bat
Temporary=c:\Temp
[Cool websites]
1=www.tweakers.net
2=gathering.tweakers.net

...dan kan dat met...
code:
1
strFavouriteSite(1)=System.PrivateProfileString("KingRichard.ini", "Cool Websites", 1)
Werkt alleen als het scheidingsteken een = is en de [koppen] zijn ook verplicht. Bovendien weet ik niet of VB dit ook kent.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


Verwijderd

Topicstarter
Crazy D schreef op 01 april 2003 @ 13:23:
[...]

Nope ...

Naja hintje dan maar, kijk eens in de help, om een datum te formatteren heb je meer mogelijkheden dan alleen maar "long format", "dddd dd mmmm yyyy" bijvoorbeeld :)
en daar heb je de split functie totaal niet voor nodig...
Kan je dus PHP vergelijken met VB ?
Want al die datum zooi van PHP ken ik uit mijn hoofd ..

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Verwijderd schreef op 01 April 2003 @ 15:55:
Kan je dus PHP vergelijken met VB ?
Want al die datum zooi van PHP ken ik uit mijn hoofd ..
Nee, al ken ik ze van php niet uit m'n hoofd, ik dacht dat php meer met "d" of "D" werkt, in VB zijn het meerdere d's ;) (zie help voor meer info, of een beetje spelen tot je het gewenste resultaat hebt). Ik geloof dat "d" de dag van de maand is zonder voorloop 0, "dd" is dag van de maand met voorloop 0, "ddd" is afkorting van de dagnaam, en "dddd" is de hele dag. Zo ongeveer ;)

Exact expert nodig?


Verwijderd

Topicstarter
Ik heb iets op MSDN gevonden ofzo .. Heel erg bedankt allemaal voor de hulp .. Ik ben weer iets wijzer geworden. Het is trouwens ook gelukt nog met de datum:

Format(Date, "d MMMM") <-- Even een voorbeeld: ! April :-D

Bedankt allemaal voor jullie hulp ;-)
Pagina: 1