17. december 2004 - 10:33Der er
9 kommentarer og 1 løsning
Fejl i ini-fil kode
Er der nogle der kan se hvorfor jeg ikke kan læse fra min ini-fil med den kode her. Der er ingen problemer med at skrive til filen.
'Declarations
Private Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
' skriv til fil strFileName = "C:\WINDOWS\futbk.ini" lngResult = WritePrivateProfileString("navn", "brugernavn", "MF", strFileName) If lngResult = 0 Then Call MsgBox("fejl!", vbExclamation) End If
' Læs fra fil (fungerer ikke) strFileName = "C:\WINDOWS\futkod.ini" lngResult = GetPrivateProfileString("navn", "Brugernavn", strFileName, strResult, Len(strResult), strFileName) If lngResult = 0 Then Call MsgBox("fejl!", vbExclamation) Else lable1.Text = lngResult End If
'Get' bruger jeg ikke meget, kun ved læsning af strenge i filer der ikke er ascii, som her med at læse ID3-tag fra en MP3 musikfil. Tag'et er de sidste 128 bytes.
Bemærk at filen åbnes inden der læses fra den!
sData = "" lfilepos = FileLen(thisfile) - 127 Open thisfile For Binary As #2 Get #2, lfilepos, sData Close #2
If Left(sData, 3) = "TAG" Then stitle = RTrim(Mid(sData, 4, 30)) sartist = RTrim(Mid(sData, 34, 30)) sAlbum = RTrim(Mid(sData, 64, 30)) sYear = RTrim(Mid(sData, 94, 4)) sComment = RTrim(Mid(sData, 98, 28)) 'MP3Info.sgenre = RTrim(sgenre(Asc(Mid(sData, 128, 1)))) -den originale linie sTrack = Asc(Mid(sData, 127, 1)) sgenre = Asc(Mid(sData, 128, 1)) If sgenre > 148 Then sgenre = 12 'tilføjet 11-12-2004 p.g.a. fejl ved Sidsels musik labascii.Caption = sgenre
hej Jørn Jeg har prøvet at lave dit eksempel om, men det er alt for omfattende for mig, så jeg ville høre om du ikke har et simpelt eksempel, der gør følgende:
1) Indsætter en tekststreng i en fil 2) Læser tekststrengen fra filen
jeg har nu ændret det sådan her, men det virker ikke:
strFileName = "C:\WINDOWS\futbk.ini" Open strFileName For Binary As #1 lngResult = GetPrivateProfileString("navn", "webkode", strFileName, strResult, Len(strResult), strFileName) If lngResult = 0 Then Form2.Show Form1.Hide Else Label3.Caption = lngResult End If
Som nævnt i tidligere svar, anvender jeg ikke 'get' for at læse data fra filer, der alene indeholder ascii-tegn. I så fald læser jeg en linie ad gangen med 'Line Input'
Open App.Path & "\fil.ini" for output as #1 print #1, "tekst" Close #1
Open App.Path & "\fil.ini" for input as #1 Line Input #1, var Close #1
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.