'File source from OnClickSoftware
'QLibrary.Inc - Common Routines & Functions
'Version: 1
'Date: July 21, 2001
'------------------------------------------
$IFNDEF QLIBRARY '<---Checks if routines, etc are defined...
'------------------------------------------
'******************************************************
'* String Functions & Subroutines *
'******************************************************
Function Trim$ (Datum As String) As String
Result = LTrim$(RTrim$(Datum))
End Function
FunctionI CatStr$ (...) As String
Dim I As Byte
Result = ParamStr$(1)
For I = 2 to ParamStrCount
Result = Result + ParamStr$(I)
Next I
End FunctionI
'******************************************************
'* File Functions & Subroutines *
'******************************************************
Function AddPath$ (Path As String, File As String) As String
AddPath$ = Path + "\" + File
End Function
Type QIniFile Extends QObject
Public:
Name As String
Lines As QStringList
LineCount As Integer
Function AddBrackets$(Datum As String) As String
Datum = Trim$(Datum)
If InStr(Datum,"[") = 0 Then
Result = "[" + Datum
End If
If InStr(Datum,"]") <> Len(Datum) Then
Result = Result + "]"
End If
End Function
Function ReadEntry (Section As String, KeyWord As String) As String
Dim StrLength As Integer
Dim Point As Byte
Dim StrLine As String
Dim StrWord As String
Dim Bracket As String
Dim LinesIdx As Integer
KeyWord = Trim$(KeyWord)
Section = QIniFile.AddBrackets$(Section)
QIniFile.Lines.Clear
If FileExists(QIniFile.Name) Then
QIniFile.Lines.LoadFromFile(QIniFile.Name)
LinesIdx = 0
While LinesIdx < QIniFile.Lines.ItemCount
StrWord = Left$(Trim$(QIniFile.Lines.Item(LinesIdx)),Len(Section))
If UCase$(StrWord) = UCase$(Section) Then
Inc LinesIdx
StrLine = QIniFile.Lines.Item(LinesIdx)
Bracket = Left$(Trim$(StrLine),1)
While Bracket <> "[" AND LinesIdx < QIniFile.Lines.ItemCount
StrLength = Len(StrLine)
StrWord = Left$(StrLine,Len(KeyWord))
If UCase$(StrWord) = UCase$(KeyWord) Then
Point = InStr(StrLine,"=") + 1
Result = Mid$(StrLine,Point,StrLength - Point + 1)
LinesIdx = QIniFile.Lines.ItemCount
Else
Inc LinesIdx
StrLine = QIniFile.Lines.Item(LinesIdx)
Bracket = Left$(Trim$(StrLine),1)
End If
Wend
Else
Inc LinesIdx
End If
Wend
End If
QIniFile.LineCount = QIniFile.Lines.ItemCount
End Function
Sub ReadSection (Section As String)
Dim StrLength As Integer
Dim Point As Byte
Dim StrLine As String
Dim StrWord As String
Dim Bracket As String
Dim LinesIdx As Integer
Dim Buffer As QStringList
Section = QIniFile.AddBrackets$(Section)
QIniFile.Lines.Clear
QIniFile.LineCount = -1
If FileExists(QIniFile.Name) Then
Buffer.LoadFromFile(QIniFile.Name)
LinesIdx = 0
While LinesIdx < Buffer.ItemCount
StrWord = Left$(Trim$(Buffer.Item(LinesIdx)),Len(Section))
If UCase$(StrWord) = UCase$(Section) Then
Inc LinesIdx
StrLine = Buffer.Item(LinesIdx)
Bracket = Left$(StrLine,1)
While Bracket <> "[" AND LinesIdx < Buffer.ItemCount
QIniFile.Lines.AddItems StrLine
Inc LinesIdx
StrLine = Buffer.Item(LinesIdx)
Bracket = Left$(StrLine,1)
Wend
LinesIdx = Buffer.ItemCount
Else
Inc LinesIdx
End If
Wend
End If
QIniFile.LineCount = QIniFile.Lines.ItemCount
End Sub
Sub WriteEntry (Section As String, KeyWord As String, KeyEntry As String)
Dim StrLength As Integer
Dim StrLine As String
Dim StrWord As String
Dim Point As Byte
Dim Bracket As String
Dim LinesIdx As Integer
Dim Fin As Byte
KeyWord = Trim$(KeyWord)
KeyEntry = Trim$(KeyEntry)
Section = QIniFile.AddBrackets$(Section)
QIniFile.Lines.Clear
If FileExists(QIniFile.Name) Then
QIniFile.Lines.LoadFromFile(QIniFile.Name)
LinesIdx = 0
While LinesIdx < QIniFile.Lines.ItemCount
StrWord = Left$(Trim$(QIniFile.Lines.Item(LinesIdx)),Len(Section))
If UCase$(StrWord) = UCase$(Section) Then
Inc LinesIdx
StrLine = QIniFile.Lines.Item(LinesIdx)
Bracket = Left$(Trim$(StrLine),1)
While Bracket <> "[" AND LinesIdx < QIniFile.Lines.ItemCount
StrLength = Len(StrLine)
StrWord = Left$(StrLine,Len(KeyWord))
If UCase$(StrWord) = UCase$(KeyWord) Then
Point = InStr(StrLine,"=") + 1
StrWord = Mid$(StrLine,Point,StrLength - Point + 1)
StrLine = CatStr$(KeyWord," = ",KeyEntry)
QIniFile.Lines.DelItems(LinesIdx)
QIniFile.Lines.InsertItem(LinesIdx,StrLine)
Fin = True
LinesIdx = QIniFile.Lines.ItemCount
Else
Inc LinesIdx
StrLine = QIniFile.Lines.Item(LinesIdx)
Bracket = Left$(Trim$(StrLine),1)
End If
Wend
If Fin <> True Then
QIniFile.Lines.AddItems CatStr$(KeyWord,"=",KeyEntry)
Fin = True
End If
Else
Inc LinesIdx
End If
Wend
End If
If Fin <> True Then
QIniFile.Lines.AddItems Section
QIniFile.Lines.AddItems CatStr$(KeyWord,"=",KeyEntry)
End If
QIniFile.Lines.SaveToFile(QIniFile.Name)
QIniFile.LineCount = QIniFile.Lines.ItemCount
End Sub
Sub WriteSection (Section As String,SectionList As QStringList)
Dim StrLength As Integer
Dim Point As Byte
Dim StrLine As String
Dim StrWord As String
Dim Bracket As String
Dim LinesIdx As Integer
Dim Buffer As QStringList
QIniFile.Lines.Clear
Point = False
Section = QIniFile.AddBrackets$(Section)
If FileExists(QIniFile.Name) Then
Buffer.LoadFromFile(QIniFile.Name)
LinesIdx = 0
While LinesIdx < Buffer.ItemCount
StrLine = Buffer.Item(linesIdx)
StrWord = Left$(Trim$(Buffer.Item(LinesIdx)),Len(Section))
If UCase$(StrWord) = UCase$(Section) Then
Point = LinesIdx
Inc LinesIdx
StrLine = Buffer.Item(LinesIdx)
Bracket = Left$(StrLine,1)
While Bracket <> "[" AND LinesIdx < Buffer.ItemCount
Inc LinesIdx
StrLine = Buffer.Item(LinesIdx)
Bracket = Left$(StrLine,1)
Wend
Else
QIniFile.Lines.AddItems StrLine
Inc LinesIdx
End If
Wend
End If
SectionList.InsertItem(0,Section)
If Point > False Then
For LinesIdx = 0 To SectionList.Itemcount -1
StrLine = SectionList.Item(LinesIdx)
QIniFile.Lines.InsertItem(Point,StrLine)
Inc Point
Next LinesIdx
Else
QIniFile.Lines.AddItems " "
Point = QIniFile.Lines.ItemCount
QIniFile.Lines.AddList SectionList
End If
QIniFile.Lines.SaveToFile(QIniFile.Name)
QIniFile.LineCount = QIniFile.Lines.ItemCount
End Sub
Sub Edit
Dim CurName As String
Dim Editor As String
CurName = QIniFile.Name
QIniFile.Name = "QLibrary.Ini"
Editor = QIniFile.ReadEntry("QIniFile","TextEditor")
QIniFile.Name = CurName
Editor = CatStr$(Editor," ",QIniFile.Name)
Shell Editor
QIniFile.LineCount = 0
End Sub
End Type
'------------------------------------------------------
$EndIf '<---- End QLibrary definition check
'------------------------------------------------------