/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Hent data fra en ini fil
Fra : Tue Hellstern


Dato : 29-09-02 14:56

Hej NG,
I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den samme
funktion i Visual Basic 6.0, men jeg får en fejl.

Function HentData(FILNAVN As String, Sektion As String, Nøgle As String) As
String
HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
End Function

Er det ikke muligt at bruge de samme funktion i VBA og VB?
Findes en anden måde at hente og skrive data fra en ini fil?

Tue



 
 
Peter Lykkegaard (29-09-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 29-09-02 15:50

Som svar på skriblerier forfattet af Tue Hellstern

> I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den
> samme funktion i Visual Basic 6.0, men jeg får en fejl.
>
> HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)

System er et Word objekt
Lav nogle API kald i stedet

Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As
String, ByVal KeyDefault As String, ByVal FileName As String) As Long

Declare Function GetPrivateProfileString Lib "kernel32" Alias _
"GetPrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As
String, ByVal keydefault As String, ByVal ReturnString As String, ByVal
NumBytes As Long, ByVal FileName As String) As Long

Søg i Google på GetPrivateProfileString eller WritePrivateProfileString

mvh/Peter Lykkeegaard



Carsten Marcussen (30-09-2002)
Kommentar
Fra : Carsten Marcussen


Dato : 30-09-02 11:07

> I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den
samme
> funktion i Visual Basic 6.0, men jeg får en fejl.
>
> Function HentData(FILNAVN As String, Sektion As String, Nøgle As String)
As
> String
> HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
> End Function
>
> Er det ikke muligt at bruge de samme funktion i VBA og VB?
> Findes en anden måde at hente og skrive data fra en ini fil?
>

Nej , som der Lykkegaard nævnte ER det et Word object og du skal bruge nogle
API kald some han nævnte.
Men for lige at uddybe disse API'er.

Jeg har 3 stk.
Til strenge
Public 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

Til tal
Public Declare Function GetPrivateProfileInt Lib "kernel32.dll" Alias
"GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName
As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long

Både tal og strenge (konverter tal til en streng først)
Public 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


Og benyttes nogenlunde sådan her..:
Lav noget kode til at oprette selve ini-filen først (tom fil).

Skriv værdi..:
Dim sRetVal
sRetVal = WritePrivateProfileString("Min sektion", "Min entry", "Min værdi",
"C:\MinIniFil.ini")

Ini-filen bør nu se sådan ud..:

[Min sektion]
Min entry=Min værdi


Læs værdi..:
(Jeg har lavet noget ekstra (function) da API'en returner noget streng misk
mask.)

Public Function GetPrivateProfileStr(Section As String, Entry As String,
IniFilePath As String) As String
Dim sRetVal
Dim RtnStr As String

RtnStr = Space(255)
sRetVal = GetPrivateProfileString(Section, Entry, "error", RtnStr,
Len(RtnStr) - 1, IniFilePath)
GetPrivateProfileStr = Left(RtnStr, InStr(RtnStr, Chr(0)) - 1)
End Function

Dim Iniværdi As String
Iniværdi = GetPrivateProfileStr("Min sektion", "Min entry",
"C:\MinIniFil.ini")

Iniværdi skulle nu indholde værdien "Min værdi"

Indeholder Iniværdi = "error" er Sektion/entrien IKKE fundet.


Håber det leder dig på rette spor

Carsten Marcussen



Klaus Ambrass (30-09-2002)
Kommentar
Fra : Klaus Ambrass


Dato : 30-09-02 13:33

"Tue Hellstern" <info@f1-support.dk> wrote in
news:3d9708e2$0$84687$edfadb0f@dspool01.news.tele.dk:

> Hej NG,
> I VBA i Word bruger jeg følgende funktion. Nu prøver jeg at bruge den
> samme funktion i Visual Basic 6.0, men jeg får en fejl.
>
> Function HentData(FILNAVN As String, Sektion As String, Nøgle As
> String) As String
> HentData = System.PrivateProfileString(FILNAVN, Sektion, Nøgle)
> End Function
>
> Er det ikke muligt at bruge de samme funktion i VBA og VB?
> Findes en anden måde at hente og skrive data fra en ini fil?
>
> Tue
>
>

Hej Tue,

det kald virker da fint i Word 2000 VBA. Du skal bare være 100% sikker på
at ini-filen eksisterer. Og så ville jeg nok omdøbe Nøgle til Noegle, samt
tjekke at min sti/filnavn ikke indeholder mellemrum.



--
Klaus Ambrass

IT - Storstrøms Amt
kam@it.stam.dk

Tue Hellstern (30-09-2002)
Kommentar
Fra : Tue Hellstern


Dato : 30-09-02 17:50

Hej Klaus,

> det kald virker da fint i Word 2000 VBA.
Ja, det er ikke noget problem, men det er i VB 6.0 jeg skal bruge det og
ikke i Word VBA.

Tue



Klaus Ambrass (01-10-2002)
Kommentar
Fra : Klaus Ambrass


Dato : 01-10-02 09:15

"Tue Hellstern" <info@f1-support.dk> wrote in news:3d988302$0$18128
$edfadb0f@dspool01.news.tele.dk:

> Hej Klaus,
>
>> det kald virker da fint i Word 2000 VBA.
> Ja, det er ikke noget problem, men det er i VB 6.0 jeg skal bruge det og
> ikke i Word VBA.
>
> Tue

Sorry.


--
Klaus Ambrass

IT - Storstrøms Amt
kam@it.stam.dk

Tue Hellstern (30-09-2002)
Kommentar
Fra : Tue Hellstern


Dato : 30-09-02 17:51

Hej
Det var lige det jeg havde brug for.
Jeg var ikke klar over at det var et Word VBA kald. Jeg trode at det også
virkede, men så blev man da så klog.
Jeg har fået det til at virke helt efter hensigten, mange tak for hjælpen.

Tue



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste