'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 '------------------------------------------------------