na een aantal leters pas lezen.

Status
Niet open voor verdere reacties.

djpommes

Gebruiker
Lid geworden
27 mrt 2007
Berichten
127
hoi ik heb een programmatje gemaakt een aantal dingen leest uit een .ini file.
hij leest het met de code:
Code:
On Error Resume Next
Dim Xtoplabel As String
Open App.Path + "\wlaunch.ini" For Input As #1
Line Input #1, Xtoplabel
top_label.Text = Xtoplabel
close #1
end sub

nu ziet het wlaunch.ini file er zo uit:
Code:
hello

maar als je zo een hele lijst hebt in die .ini files (me program leest ze lijn per lijn en voegd ze in de goeie textbox) dan is het niet echt duidelijk wat wat is.
dus wil ik de .ini zo maken:

Code:
 Top Text=hello
bottom text= etc.

hoe kan ik hem pas na die "=" laten lezen en alleen het gene op die regel achter de "=" in een textbox laten stoppen?
 
Je zult dan een parser moeten schrijven. Het hangt een beetje van de structuur van je configuratiebestand af hoe je dit het beste/makkelijkste kunt doen. Als je een configuratiebestand hebt met de structuur die je nu geeft(alles op 1 regel), dan zou je iets als onderstaande kunnen schrijven:

Code:
const string TOP_TEXT = "#TOP_TEXT#" 
'dit voor alles wat je wilt inlezen

'open bestand om te lezen
'lees de huidige regel in
if mid( sHuidigeRegel, len(TOP_TEXT)) = TOP_TEXT then
   sData =mid(sHuidigeRegel, len(TOP_TEXT)+1, len(sHuidigeRegel)-len(TOP_TEXT)+1)
   'top.text = sData 
end if

(het kan zijn dat de code niet helemaal klopt, ik heb 'm niet getest.)
 
ik heb werkelijk geen idee wat dat allemaal betekent.
ik doe het wel op andere manier die ik had. is meer werk maar dat snap ik. thnx anyway ;)
 
ik heb werkelijk geen idee wat dat allemaal betekent.
ik doe het wel op andere manier die ik had. is meer werk maar dat snap ik. thnx anyway ;)

De code is niet zo heel moeilijk hoor. (over die constante waarde ben ik trouwens geeneens zeker of ik het op de juiste manier heb gedaan voor VB6);

Je zou het kunnen herschrijven naar:

Code:
dim sTmp as string, sData as string
dim sZoekNaar as string
dim iLengte as integer

sZoekNaar = "#TOP_TEXT#" 
iLengte = len(sZoekNaar)

open "c:\jouwbestand.txt" for input as #1
  do while not eof(1)
      input #1, sTmp
      
      if mid(sTmp, iLengte) = sZoekNaar then
           sData = ltrim(mid(sTmp, iLengte+1, len(sTmp) - iLengte+1)) 
      end if

  loop
close #1

mid(string, lengte) geeft je de substring van 0 to de opgegeven lengte terug. Als de string 'hallo' is en de lengte is '3' dan krijg je 'hal' terug.
mid(string, start, lengte) doet hetzelfde alleen begint deze vanaf start. Als de string dus 'hallo' is en start is 2 en de lengte is 4, dan krijg je als resultaat 'allo'.
ltrim verwijdert de spaties vanaf de linkerzijde.
len geeft de lengte van een string

edit:
jouwbestand.txt zou er dan dus als volgt moeten uitzien:
#TOP_TEXT# Deze tekst wilde ik laten zien
 
Laatst bewerkt:
.ini's zijn zooo windows95

tip : gebruik XML. kan door bijna alle programmeertalen worden gelezen. oa. Flash/VB/C#/C++/Dreamweaver/HTML/JAVA ect.

programmeren in VB maakt de structuur veel makkelijker en overzichtelijker.
er is 1 probleem . dat zijn ampersand (&) tekens en groter dan (>) en kleiner dan (<).
dit is te voorkomen als je CDATA gaat gebruiken.

<XML>
<HOOFD>
<EERSTE> Eerste item </EERSTE>
</HOOFD>
</XML>

VB :

Imports System.Xml

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim doc As New XmlDocument()
doc.Load("mijnxml.xml")
Dim Eerste As XmlNode = doc.SelectSingleNode("/XML/HOOFD/EERSTE")
TextBox1.Text = Eerste.InnerText

End Sub

End Class
 
het heb het al met het replace function.
alleen hoe replace ik ik de " ? want replace (text1.text,""", "")
werkt niet
 
leg ff uit wat je precies wilt doen dan ...

je wilt een ini lezen als textbestand en dan de variabelen verwijderen?
 
nee, natuurlijk niet, 'Replace(text1.text, "","")' vervangt niets met niets :p

Replace functie werkt zo:
Code:
Function Replace(sText as string, sWhat as string, sReplaceWith as string) as string

dus dan wordt het zoiets
(chr(34) is een ")
Code:
dim iChar as integer: iChar = 34
msgbox Replace("Hallo"Hallo",Chr(iChar),"") [COLOR="SeaGreen"]'krijg je 'HalloHallo' te zien[/COLOR]
noot wel dat de code niet werkt vanwege de _"_ in het midden, maar het gaat om het idee.
:thumb:


ps: INI's zijn vet retro, ik gebruik ze ook (vb6 :p)
 
Laatst bewerkt:
Het is volgens mij lang geleden dat ik nog een post van jou heb gezien, Vegras. :P
 
Het is volgens mij lang geleden dat ik nog een post van jou heb gezien, Vegras. :P
tsja, vakantie, luiheid, luiheid en andere dingen te doen enzo
Code:
hehe ini's retro
het is zo. Alle coole mensen gebruiken ze!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan