Hej igen! Här får du fler sätt att göra det på. Skickar med två stycken. har inte testat någon av dom än.. undrar en sak till.. kan man spara just den raden som börjar med "adress=" i txt filen? Om du tittar i mitt tidigare förslag så används funktionen "ReadIni" för att läsa information från inifilen och subrutinen "WriteIni" används för att spara godtycklig information i ini-filen, t ex din adress. ah just det.. tittade lite på kurser & artiklar.. där finns en artikel om inifiler.. fast det funkar inge vidare för mig. Hur gör man för att läsa in siffror (integer)??välja rad
Jag har en txtfil till mitt program som ska funka som configuerings fil.
Kan man på något sätt plocka ut just den rad som tex börjar med "adress="
Fast det ska inte komma med sen.. Så om koden i txtfilen är:
<code>adress=c:\hoj.txt</code>
Så ska bara c:\hoj komma med.. Hoppas ni förstår
//simonSv: välja rad
Du kan använda dig av API funktionerna "GetPrivateProfileString" och "WritePrivateProfileString", se onlinehjälpen för mer info.
Koden nedan kanske ger dig några ideer.
Innehållet i ini-filen i exemplet ser ut så här,
[MyIniData]
Adress=C:\hoj.txt
<code>
Option Explicit
Private Declare Function GetPrivateProfileString Lib "kernel32" 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" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Const INI_FILE_NAME As String = "c:\test.ini"
Private Const INI_SECTION As String = "MyIniData"
Private Const INIKEY_ADDRESS As String = "Adress"
Sub main()
Dim strX As String
Dim strY As String
strX = "C:\hoj.txt"
Call WriteIni(INI_FILE_NAME, INI_SECTION, INIKEY_ADDRESS, strX)
strY = ReadIni(INI_FILE_NAME, INI_SECTION, INIKEY_ADDRESS, "DefaultValue")
MsgBox strY
'Radera test ini-filen
Stop 'Stoppar programmet för att kunna titta på inifilen innan den raderas
Kill INI_FILE_NAME
End Sub
Private Function ReadIni(ByVal IniFileName As String, _
ByVal Section As String, _
ByVal KeyValue As String, _
Optional ByVal Default As String = "") As String
Dim strRet As String
Dim lngNoOfChars As Long
strRet = String(255, 0)
lngNoOfChars = GetPrivateProfileString(Section, KeyValue, Default, strRet, Len(strRet), IniFileName)
ReadIni = Left$(strRet, lngNoOfChars)
End Function
Private Sub WriteIni(ByVal IniFileName As String, _
ByVal Section As String, _
ByVal KeyValue As String, _
ByVal Value As String)
WritePrivateProfileString Section, KeyValue, Value, IniFileName
End Sub
</code>Sv: välja rad
<code>
'För att ta emot den array som funktionen Split returnerar.
Dim vntPath As Variant
Dim strString, strSubString, strPath As String
strString = "adress=c:\hoj.txt"
strSubString = "adress="
'Man kan göra på det här sättet.
strPath = Mid$(strString, Len(strSubString) + 1)
'Eller så kan man göra såhär.
vntPath = Split(strString, strSubString)
'Sökvägen kommer nu att finnas på plats 1 i vntPath (vntPath(1)).
'OBS inte första platsen, som är 0.
'Skriv ut båda strängarna.
Debug.Print strPath
Debug.Print vntPath(1)
</code>
/HåkanSv: välja rad
//simonSv: välja rad
Call WriteIni("DinFil.xxx", "MinConfig1", "Adress", "C:\Hoj.txt")
Efter att kör detta kommer din fil att se ut så här,
DinFil.xxx
[MinConfig1]
Adress=C:\Hoj.txt
//
Janne. Sv: välja rad
//simonSv: välja rad
För att spara en integer.
Dim intMyValue as Integer
Dim intMySavedValue as Integer
intMyValue = 20
Call WriteIni("DinFil.xxx", "MinConfig1", "MinInteger", Cstr(intMyValue))
intMySavedValue= CInt(ReadIni("DinFil.xxx", "MinConfig1", "MinInteger", "0"))
Msgbox intMySavedValue