Avatar billede ghazaleh Nybegynder
17. december 2004 - 10:33 Der 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
Avatar billede ghazaleh Nybegynder
17. december 2004 - 10:36 #1
Rettelse: filen hedder "futbk.ini" begge steder

' Læs fil ser sådan her ud:

strFileName = "C:\WINDOWS\futbk.ini"
    lngResult = GetPrivateProfileString("navn", "Brugernavn", strFileName, strResult, Len(strResult), strFileName)
If lngResult = 0 Then
    Call MsgBox("fejl!", vbExclamation)
Else
    Label1.Text = lngResult
End If
Avatar billede joern Nybegynder
17. december 2004 - 13:01 #2
Hej.

Jeg har indsat et eksempel på det andet spørgsmål

'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
       
        Text1.Text = stitle
        Text2.Text = sartist
        Text3.Text = sAlbum
        Text4.Text = sYear
        Text5.Text = sComment
        text8.Text = gen(sgenre)
        Text9.Text = sTrack
        labingen.Visible = False
        labtag.Visible = True
        Exit Sub
    End If

Filen skal åbnes før du kan læse fra den.

M.v.h. Jørn
Avatar billede ghazaleh Nybegynder
03. januar 2005 - 11:29 #3
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
Avatar billede ghazaleh Nybegynder
03. januar 2005 - 14:21 #4
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
Avatar billede ghazaleh Nybegynder
03. januar 2005 - 14:22 #5
Close #1

^ manglede sidste linie
Avatar billede joern Nybegynder
03. januar 2005 - 18:08 #6
Hej.

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

text1.text = var

M.v.h. Jørn
Avatar billede ghazaleh Nybegynder
04. januar 2005 - 09:08 #7
jaja jeg lærer lige så langsomt, men nu lykkedes det, så smid at svar, så er der hårdt tjente point :-)
Avatar billede ghazaleh Nybegynder
04. marts 2005 - 09:41 #8
Jeg kan ikke så godt lide at have åbne spørgsmål, men jeg tager på ferie i en uges tid, så du kan nå at svare endnu :-), men ellers ryger de tilbage.
Avatar billede joern Nybegynder
04. marts 2005 - 10:40 #9
Hej  God ferie - et svar.
Avatar billede ghazaleh Nybegynder
04. marts 2005 - 10:48 #10
tak, ok du nåede det :-)
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