Professor
asked on
ini files in vb6
I am currently working on a visual frontend for pisg, a statistics generator for irc.
I would very much like to include multi language support for this so i have decided to use ini files for this.
So my question would be, are there built in functions in vb6 that allow reading and/or modification of ini files? Or is there a FREE activex control/library that allows me to do this ?
I would very much appreciate an answer very quickly.
Thankx very much in advance ;)
I would very much like to include multi language support for this so i have decided to use ini files for this.
So my question would be, are there built in functions in vb6 that allow reading and/or modification of ini files? Or is there a FREE activex control/library that allows me to do this ?
I would very much appreciate an answer very quickly.
Thankx very much in advance ;)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Another thing you can do is add a reference to the Microsoft Scripting Runtime. Then use this kind of thing:
Dim fso as New FileSystemObject, mFile as file, stream as TextStream
Public Sub OpenFile(oFile as String, oReadWrite as IOMODE)
Set mFile = fso.GetFile(oFile)
Set stream = mFile.OpenAsTextStream(oRe adWrite)
End Sub
Public Sub CloseFile()
stream.Close
End Sub
Public Sub ReadLinesFromFile() as Collection
Dim tmp as New Collection
start:
tmp.Add(stream.ReadLine)
if stream.AtEndOfStream Then Exit Sub
GoTo start
End Sub
Public Sub AddLineToFile(wText as String)
stream.WriteLine(wText)
End Sub
Private Sub Form_Load()
Dim lines as New Collection 'Used as "variable-size" array here
OpenFile("C:\file.ini", ForReading)
Set lines = ReadLinesFromFile
'You get the idea...
End Sub
Hope it's useful,
Burningmace
Dim fso as New FileSystemObject, mFile as file, stream as TextStream
Public Sub OpenFile(oFile as String, oReadWrite as IOMODE)
Set mFile = fso.GetFile(oFile)
Set stream = mFile.OpenAsTextStream(oRe
End Sub
Public Sub CloseFile()
stream.Close
End Sub
Public Sub ReadLinesFromFile() as Collection
Dim tmp as New Collection
start:
tmp.Add(stream.ReadLine)
if stream.AtEndOfStream Then Exit Sub
GoTo start
End Sub
Public Sub AddLineToFile(wText as String)
stream.WriteLine(wText)
End Sub
Private Sub Form_Load()
Dim lines as New Collection 'Used as "variable-size" array here
OpenFile("C:\file.ini", ForReading)
Set lines = ReadLinesFromFile
'You get the idea...
End Sub
Hope it's useful,
Burningmace
Professor,
These are very good references for forking with ini files.
http://www.mvps.org/vbnet/code/file/pprofilebasic.htm
http://www.mvps.org/vbnet/code/file/pprofilesections.htm
Dang123
These are very good references for forking with ini files.
http://www.mvps.org/vbnet/code/file/pprofilebasic.htm
http://www.mvps.org/vbnet/code/file/pprofilesections.htm
Dang123
Usage is as follows:
dim oIni as cIniAccess
dim sValue as String
set oIni = new cIniClass
with oIni
.File = "my.ini"
.Section = "General"
'read value from the Ini file
sValue = .ReadSection("SomeSetting"
'write value to the Ini file
.WriteSection "New Value", "SomeSetting"
end with
set oIni = nothing
'******START HERE*********
Option Explicit
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileString
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA"
Private mstrFile As String
Private mstrSection As String
Private mstrEntry As String
Private mstrValue As String
Private mstrDefault As String
Public Property Get Default() As String
Default = mstrDefault
End Property
Public Property Let Default(ByVal strValue As String)
mstrDefault = strValue
End Property
Public Property Get Value() As String
Value = mstrValue
End Property
Public Property Let Value(ByVal strValue As String)
mstrValue = strValue
End Property
Public Property Get Entry() As String
Entry = mstrEntry
End Property
Public Property Let Entry(ByVal strEntry As String)
mstrEntry = strEntry
End Property
Public Property Get Section() As String
Section = mstrSection
End Property
Public Property Let Section(ByVal strSection As String)
mstrSection = strSection
End Property
Public Property Get File() As String
File = mstrFile
End Property
Public Property Let File(ByVal strFile As String)
mstrFile = strFile
End Property
Public Function ReadSection(Optional Entry As Variant, Optional Default As Variant, Optional Section As Variant, Optional File As Variant) As String
Dim ReturnString As String
Dim NullPointer As Integer
If Not IsMissing(Entry) Then mstrEntry = Entry
If Not IsMissing(Section) Then mstrSection = Section
If Not IsMissing(File) Then mstrFile = File
If Not IsMissing(Default) Then mstrDefault = Default
ReturnString = String$(255, Chr$(0))
GetPrivateProfileString mstrSection, mstrEntry, mstrDefault, ReturnString, Len(ReturnString) + 1, mstrFile
'If left$(ReturnString, InStr(ReturnString, Chr(0)) - 1) = "NotFound" Then
' WritePrivateProfileString section$, "SpySample.FileEventSpy", "0", "VB.INI"
'End If
NullPointer = InStr(ReturnString, Chr$(0))
If NullPointer <= 1 Then
mstrValue = ""
Else
mstrValue = Left$(ReturnString, NullPointer - 1)
End If
ReadSection = mstrValue
End Function
Public Sub WriteSection(Optional Value As Variant, Optional Entry As Variant, Optional Section As Variant, Optional File As Variant)
If Not IsMissing(Entry) Then mstrEntry = Entry
If Not IsMissing(Section) Then mstrSection = Section
If Not IsMissing(File) Then mstrFile = File
If Not IsMissing(Value) Then mstrValue = Value
WritePrivateProfileString mstrSection, mstrEntry, mstrValue, mstrFile
End Sub
Sub FlushIni()
'forces the memory contents of the ini writing to actually be written to the disk
WritePrivateProfileString "x", "x", "x", mstrFile
End Sub
Public Sub DeleteSection()
'Dim retcode As Long
'retcode = WritePrivateProfileString(
WritePrivateProfileString mstrSection, 0&, 0&, mstrFile
End Sub
'********END HERE********