Avatar billede kewl Nybegynder
11. januar 2004 - 14:22 Der er 6 kommentarer og
1 løsning

Hente fra ini fil

jeg er ved at lave et lille app som henter en ini-fil ind i en listbox, dette er klaret, problemet er at når jeg klikker på 'Kanalnavnet' vil jeg gerne have den næste linje ind i en variabel = 'valgtURL'
Her kommer der lige lidt kode:

Dim FSO As Object, fsoText As Object
Dim inikanalnavn As String, inikanalurl As String, CurLine As String, ValgtURL As String

Set FSO = CreateObject("scripting.filesystemobject")
Set fsoText = FSO.opentextfile(App.Path & "\kanaler.ini")

Do While Not fsoText.atendofstream
    CurLine = fsoText.readline
    If Mid(CurLine, 1, 1) = "¤" Then 'Hvis dette er begyndelsen på en entry
        inikanalnavn = fsoText.readline
        inikanalurl = fsoText.readline
        List1.AddItem inikanalnavn
    End If
Loop
End Sub

Private Sub List1_Click()
ValgtURL = List1.Text
End Sub

'***************************
eksempel på ini-fil
'*** Start af kanaler.ini ***
¤
The Voice
http://dix.media.webpartner.dk/voice128
¤
DR P3
http://www.dr.dk/netradio/p3-wmp.asx
'*** Slut på kanaler.ini ***
Avatar billede kabbak Professor
11. januar 2004 - 15:21 #1
Dim inikanalurl() As String

Private Sub Command1_Click()
Dim FSO As Object, fsoText As Object
Dim inikanalnavn As String, CurLine As String, ValgtURL As String
Dim I As Integer
List1.Clear
I = -1
Set FSO = CreateObject("scripting.filesystemobject")
Set fsoText = FSO.opentextfile (App.Path & "\kanaler.ini")
Do While Not fsoText.atendofstream
    CurLine = fsoText.readline
    If Left(CurLine, 1) = "¤" Then  'Hvis dette er begyndelsen på en entry
        inikanalnavn = fsoText.readline
        I = I + 1
        ReDim Preserve inikanalurl(I)
        inikanalurl(I) = fsoText.readline
        List1.AddItem inikanalnavn
      End If
Loop
End Sub

Private Sub Command2_Click()
Form2.Show
End Sub

Private Sub List1_Click()
ValgtURL = inikanalurl(List1.ListIndex)
Text1 = ValgtURL
End Sub

har rettet lidt
inikanalurl er  dimmet global
Avatar billede kabbak Professor
11. januar 2004 - 15:23 #2
der kom lidt formeget med, så her er den

Dim inikanalurl() As String

Private Sub Command1_Click()
Dim FSO As Object, fsoText As Object
Dim inikanalnavn As String, CurLine As String, ValgtURL As String
Dim I As Integer
List1.Clear
I = -1
Set FSO = CreateObject("scripting.filesystemobject")
Set fsoText = FSO.opentextfile(App.Path & "\kanaler.ini")
Do While Not fsoText.atendofstream
    CurLine = fsoText.readline
    If Left(CurLine, 1) = "¤" Then  'Hvis dette er begyndelsen på en entry
        inikanalnavn = fsoText.readline
        I = I + 1
        ReDim Preserve inikanalurl(I)
        inikanalurl(I) = fsoText.readline
        List1.AddItem inikanalnavn
      End If
Loop
End Sub

Private Sub List1_Click()
ValgtURL = inikanalurl(List1.ListIndex)
End Sub
Avatar billede kewl Nybegynder
11. januar 2004 - 15:31 #3
Den melder 'Compile Error:' - 'Expected array'
Avatar billede kewl Nybegynder
11. januar 2004 - 15:31 #4
ups. ved
ReDim Preserve inikanalurl(I)
Avatar billede kabbak Professor
11. januar 2004 - 15:35 #5
har du husket
Dim inikanalurl() As String

uden for sub
Avatar billede kewl Nybegynder
11. januar 2004 - 16:42 #6
Fandt selv svaret:

Dim FSO As Object, fsoText As Object
Dim inikanalnavn As String, CurLine As String, ValgtURL As String
Dim inikanalurl As String
Dim Test1 As Integer

Private Sub Form_Load()

Set FSO = CreateObject("scripting.filesystemobject")
Set fsoText = FSO.opentextfile(App.Path & "\kanaler.ini")

Do While Not fsoText.atendofstream
    CurLine = fsoText.readline
    If Mid(CurLine, 1, 1) = "¤" Then
        inikanalnavn = fsoText.readline
        inikanalurl = fsoText.readline
        List1.AddItem inikanalnavn
    End If
Loop
fsoText.Close

'Volume
WindowsMediaPlayer1.settings.volume = 100
volume.BorderStyle = ccNone
TempVolume = 100
mute = 0

End Sub

Private Sub List1_Click()

Set FSO = CreateObject("scripting.filesystemobject")
Set fsoText = FSO.opentextfile(App.Path & "\kanaler.ini")
Do While Not fsoText.atendofstream
    CurLine = CStr(fsoText.readline)
    If StrComp(CurLine, CStr(List1.Text)) = 0 Then
        inikanalurl = fsoText.readline
        URL = inikanalurl
    End If
Loop

End Sub
Avatar billede sion Nybegynder
13. januar 2004 - 15:39 #7
Nu har du selv fundet svaret, men hvis du en anden gang skal benytte INI-filer vil jeg på det stærkeste anbefale at benytte følgende klasse til at håndtere læs- og skrivningsprocessen:
http://www.vbaccelerator.com/home/VB/Code/Libraries/Registry_and_Ini_Files/Easy_Ini_File_Access/cIniFile_Class_zip_CINIFILE_CLS.asp
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