Res /

Qlibrary Inc

Documentation

Resources

The Wiki

edit SideBar

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

Recent Changes (All) | Edit SideBar Page last modified on August 17, 2007, at 06:50 PM Edit Page | Page History
Powered by PmWiki