06. juli 2002 - 12:01Der er
7 kommentarer og 1 løsning
Problemer med læsning af INI fil
Jeg har en smule problemer med nedenstående kode.
Jeg ønsker at skrive en værdi i en inifil - det går fint. Men når jeg så skal læse værdien så får jeg den defaulte værdi i dette tilfælde "tom" i stedet for "værdi" som er gemt i filen.
Hvad er det lige jeg gør galt??
Module Module1 Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lsString As String, ByVal lplFilename As String) As Long Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Sub Main() Dim test As String test = Space(255) WritePrivateProfileString("Overskrift", "Emne", "Værdi", "c:\konv.ini") GetPrivateProfileString("Overskrift", "Emne", "tom", test, 255, "C:\konv.ini")
Jeg har lige klippet din kode direkte, og kørt den. -Fungerer fint hos mig. Den eneste ændring:
Sub Main() Dim test As String, a test = Space(255) a = WritePrivateProfileString("Overskrift", "Emne", "Værdi", "c:\konv.ini") a = GetPrivateProfileString("Overskrift", "Emne", "tom", test, 255, "C:\konv.ini")
Kode for at skrive i en ini..... WritePrivateProfileString("Overskrift", "Emne", "Værdi", "c:\konv.ini")
Kode for at hente: GetPrivateProfileString("Overskrift", "Emne", "tom", test, 255, "C:\konv.ini")
Men det skal være sådan her: GetPrivateProfileString("Overskrift", "Emne", test, 255, "C:\konv.ini")
Når du sætter "tom" så replacer du den værdi du henter med strengen "tom".....
når jeg selv har brugt det er det som følger(godt nok i en form):
'Kode i et modul
Public Declare Function WritePrivateProfileString _ Lib "kernel32" Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationname As String, ByVal _ lpKeyName As Any, ByVal lsString As Any, _ ByVal lplFilename As String) As Long
'Declaretion for read from an .ini file
Public Declare Function GetPrivateProfileString Lib _ "kernel32" Alias "GetPrivateProfileStringA" _ (ByVal lpApplicationname As String, ByVal _ lpKeyName As String, ByVal lpDefault As _ String, ByVal lpReturnedString As String, _ ByVal nSize As Long, ByVal lpFileName As _ String) As Long
'variables for reading and writing .ini files 'They are dimensioned here becaus then the module 'can be freely moved to other programs
Global lngResult As Long Global strFileName Global strResult As String * 50
Jeg vil starte med at sige, at jeg er nybegynder inden for faget.
Men kan det have noget at sige, at jeg bruger .net versionen. Den vil for eksempel ikke kendes ved ordet global, eller typen Any. Skal man sætte noget specielt op for at få det til at virke.
Hvis jeg gør som tubber foreslog, er den sur over, at felte som jeg har undladt mangler. Jeg har prøvet helt uden feltet samt GetPrivateProfileString("Overskrift", "Emne",, test, 255, "C:\konv.ini")
Jeg kan få det til at virke hvis jeg skriver dette i stedet for. Jeg kan ikke lige helt gennemskue forskellen, men det virker.
Public Declare Function GetPrivateProfileStringA Lib "kernel32.dll" (ByVal inisection As String, ByVal inientry As String, ByVal returndefault As String, ByVal inientrystring As String, ByVal inientrysize As Integer, ByVal inifilename As String) As Integer
Så skal man bare kalde GetPrivateProfileStringA i stedet for.
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.