von Heinz Bär » Fr, 04.02.2011 11:12
Hallo MHage
Ich habe so eine Funktion gebraucht, weiss aber nicht mehr woher ich sie geholt habe.
Hier hast Du meine ganze Subroutine:
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Sub mm_ini_lesen(p_array(), pfad)
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim myDoc As Object
myDoc=ThisComponent
' INI-Datei lesen
Dim inifile as string
Dim bereich as string
Dim param as string
Dim OS as string
Dim Schraeger as string
Dim d_Url as string
Dim d_Pfad as string
dim zw_string as string
' Welches Betriebs-System wird verwendet?
OS = GetGUIType()
if OS = 1 then Schraeger = "\" ' Windows
if OS = 3 then Schraeger = "\" ' Mac
if OS = 4 then Schraeger = "/" ' Unix / Linux
' Pfad vom Programm bestimmen
dim dummy()
d_Url=myDoc.getUrl()
d_pfad=ConvertFromUrl(d_Url)
if pfad = "H" then ' Hauptpfad ?
p_array(0)=DirectoryNameoutofPath(d_pfad,Schraeger) & Schraeger
p_array(1)=ConvertToUrl(p_array(0))
else
d_pfad=DirectoryNameoutofPath(d_pfad,Schraeger) ' Vorlagenpfad ?
p_array(0)=DirectoryNameoutofPath(d_pfad,Schraeger) & Schraeger
p_array(1)=ConvertToUrl(p_array(0))
end if
inifile = p_array(0) & "boot.ini"
' Datenbank-Name holen
bereich = "MySQL"
param = "DbName"
p_array(2) = readini(inifile, bereich, param)
' Datenbank-Host holen
bereich = "MySQL"
param = "Host"
p_array(3) = readini(inifile, bereich, param)
' Verzeichnis-Pfade holen
bereich = "Verzeichnisse"
param = "Vorlagen"
p_array(4) = readini(inifile, bereich, param)
' Druckausgabe-Pfade holen
bereich = "Verzeichnisse"
param = "Drucken"
zw_string = readini(inifile, bereich, param)
p_array(5) = ConvertToUrl(zw_string)
' URL der Bilder und Skizzen holen
bereich = "Verzeichnisse"
param = "Bilder_Typ"
p_array(6) = readini(inifile, bereich, param)
p_array(7) = ConvertToUrl(p_array(6))
bereich = "Verzeichnisse"
param = "Bilder_Boot"
p_array(8) = readini(inifile, bereich, param)
p_array(9) = ConvertToUrl(p_array(8))
bereich = "Verzeichnisse"
param = "Bilder_LP"
p_array(10) = readini(inifile, bereich, param)
p_array(11) = ConvertToUrl(p_array(10))
' URL der Serienbriefe holen
bereich = "Verzeichnisse"
param = "SB_einfach"
zw_string = readini(inifile, bereich, param)
p_array(12) = ConvertToUrl(zw_string)
bereich = "Verzeichnisse"
param = "SB_komplex"
zw_string = readini(inifile, bereich, param)
p_array(13) = ConvertToUrl(zw_string)
' Pfad OpenOffice-Makros
bereich = "Verzeichnisse"
param = "Makro"
p_array(17) = readini(inifile, bereich, param)
' Benutzer-Name
bereich = "Benutzer"
param = "Name"
p_array(14) = readini(inifile, bereich, param)
' Benutzer-Passwort
bereich = "Benutzer"
param = "Passwd"
p_array(15) = readini(inifile, bereich, param)
' Programm Run-Parameter
p_array(16) = "0"
bereich = "Programm"
param = "Run"
p_array(16) = readini(inifile, bereich, param)
if p_array(16) = "" then
p_array(16) = "1" ' Programm ausführen
end if
End Sub
' ----------------------------------------------------------------------------------------
Function readini( inifile as string, bereich as string, param as string) as string
Dim inBereich as boolean
Dim aFile as String
Dim inumber as integer
Dim szeile as string
Dim para as String
Dim Start as String
Dim ipos as integer
inBereich=false
Bereich="["+bereich+"]"
iNumber = Freefile
aFile = inifile
on error goto ende
if FileExists(inifile) then
Open aFile For Input As iNumber
While not eof(iNumber)
Line Input #iNumber, sZeile
if szeile=Bereich then inBereich=true
if inBereich then
ipos=InStr(sZeile,"=")
if ipos>0 then
para=mid(szeile,1,ipos-1)
if para = param then
readini=mid(szeile,ipos+1)
inBereich=false
end if
end if
end if
if inBereich then
start=left(sZeile,1)
if start="[" then inbereich=false
end if
if szeile=bereich then inBereich=true
wend
Close #iNumber
end if
exit function
ende:
end function
Die INI-Datei sieht bei mir so aus:
Code: Alles auswählen
[MySQL]
DbName=boot_db
Host=localhost
[Verzeichnisse]
Vorlagen=/home/heinz/Projekt_Boot_V4/Vorlagen/
Drucken=/home/heinz/Projekt_Boot_V4/Druck-Ausgabe/
Bilder_Typ=/home/heinz/Projekt_Boot_V4/Bilder/Typ/
Bilder_Boot=/home/heinz/Projekt_Boot_V4/Bilder/Boot/
Bilder_LP=/home/heinz/Projekt_Boot_V4/Bilder/Leinenplan/
SB_einfach=/home/heinz/Projekt_Boot_V4/Serienbrief/Einfach/
SB_komplex=/home/heinz/Projekt_Boot_V4/Serienbrief/Komplex/
Makro=/home/heinz/Projekt_Boot_V4/Makro/Boot_Verw/
[Benutzer]
Name=uuuuuu
Passwd=xxxx
[Programm]
Run=1
Ich hoffe, dass dies Dir weiterhilft.
Gruss
Heinz
Hallo MHage
Ich habe so eine Funktion gebraucht, weiss aber nicht mehr woher ich sie geholt habe.
Hier hast Du meine ganze Subroutine:
[code]
REM ***** BASIC *****
Option Explicit
Sub mm_ini_lesen(p_array(), pfad)
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim myDoc As Object
myDoc=ThisComponent
' INI-Datei lesen
Dim inifile as string
Dim bereich as string
Dim param as string
Dim OS as string
Dim Schraeger as string
Dim d_Url as string
Dim d_Pfad as string
dim zw_string as string
' Welches Betriebs-System wird verwendet?
OS = GetGUIType()
if OS = 1 then Schraeger = "\" ' Windows
if OS = 3 then Schraeger = "\" ' Mac
if OS = 4 then Schraeger = "/" ' Unix / Linux
' Pfad vom Programm bestimmen
dim dummy()
d_Url=myDoc.getUrl()
d_pfad=ConvertFromUrl(d_Url)
if pfad = "H" then ' Hauptpfad ?
p_array(0)=DirectoryNameoutofPath(d_pfad,Schraeger) & Schraeger
p_array(1)=ConvertToUrl(p_array(0))
else
d_pfad=DirectoryNameoutofPath(d_pfad,Schraeger) ' Vorlagenpfad ?
p_array(0)=DirectoryNameoutofPath(d_pfad,Schraeger) & Schraeger
p_array(1)=ConvertToUrl(p_array(0))
end if
inifile = p_array(0) & "boot.ini"
' Datenbank-Name holen
bereich = "MySQL"
param = "DbName"
p_array(2) = readini(inifile, bereich, param)
' Datenbank-Host holen
bereich = "MySQL"
param = "Host"
p_array(3) = readini(inifile, bereich, param)
' Verzeichnis-Pfade holen
bereich = "Verzeichnisse"
param = "Vorlagen"
p_array(4) = readini(inifile, bereich, param)
' Druckausgabe-Pfade holen
bereich = "Verzeichnisse"
param = "Drucken"
zw_string = readini(inifile, bereich, param)
p_array(5) = ConvertToUrl(zw_string)
' URL der Bilder und Skizzen holen
bereich = "Verzeichnisse"
param = "Bilder_Typ"
p_array(6) = readini(inifile, bereich, param)
p_array(7) = ConvertToUrl(p_array(6))
bereich = "Verzeichnisse"
param = "Bilder_Boot"
p_array(8) = readini(inifile, bereich, param)
p_array(9) = ConvertToUrl(p_array(8))
bereich = "Verzeichnisse"
param = "Bilder_LP"
p_array(10) = readini(inifile, bereich, param)
p_array(11) = ConvertToUrl(p_array(10))
' URL der Serienbriefe holen
bereich = "Verzeichnisse"
param = "SB_einfach"
zw_string = readini(inifile, bereich, param)
p_array(12) = ConvertToUrl(zw_string)
bereich = "Verzeichnisse"
param = "SB_komplex"
zw_string = readini(inifile, bereich, param)
p_array(13) = ConvertToUrl(zw_string)
' Pfad OpenOffice-Makros
bereich = "Verzeichnisse"
param = "Makro"
p_array(17) = readini(inifile, bereich, param)
' Benutzer-Name
bereich = "Benutzer"
param = "Name"
p_array(14) = readini(inifile, bereich, param)
' Benutzer-Passwort
bereich = "Benutzer"
param = "Passwd"
p_array(15) = readini(inifile, bereich, param)
' Programm Run-Parameter
p_array(16) = "0"
bereich = "Programm"
param = "Run"
p_array(16) = readini(inifile, bereich, param)
if p_array(16) = "" then
p_array(16) = "1" ' Programm ausführen
end if
End Sub
' ----------------------------------------------------------------------------------------
Function readini( inifile as string, bereich as string, param as string) as string
Dim inBereich as boolean
Dim aFile as String
Dim inumber as integer
Dim szeile as string
Dim para as String
Dim Start as String
Dim ipos as integer
inBereich=false
Bereich="["+bereich+"]"
iNumber = Freefile
aFile = inifile
on error goto ende
if FileExists(inifile) then
Open aFile For Input As iNumber
While not eof(iNumber)
Line Input #iNumber, sZeile
if szeile=Bereich then inBereich=true
if inBereich then
ipos=InStr(sZeile,"=")
if ipos>0 then
para=mid(szeile,1,ipos-1)
if para = param then
readini=mid(szeile,ipos+1)
inBereich=false
end if
end if
end if
if inBereich then
start=left(sZeile,1)
if start="[" then inbereich=false
end if
if szeile=bereich then inBereich=true
wend
Close #iNumber
end if
exit function
ende:
end function
[/code]
Die INI-Datei sieht bei mir so aus:
[code]
[MySQL]
DbName=boot_db
Host=localhost
[Verzeichnisse]
Vorlagen=/home/heinz/Projekt_Boot_V4/Vorlagen/
Drucken=/home/heinz/Projekt_Boot_V4/Druck-Ausgabe/
Bilder_Typ=/home/heinz/Projekt_Boot_V4/Bilder/Typ/
Bilder_Boot=/home/heinz/Projekt_Boot_V4/Bilder/Boot/
Bilder_LP=/home/heinz/Projekt_Boot_V4/Bilder/Leinenplan/
SB_einfach=/home/heinz/Projekt_Boot_V4/Serienbrief/Einfach/
SB_komplex=/home/heinz/Projekt_Boot_V4/Serienbrief/Komplex/
Makro=/home/heinz/Projekt_Boot_V4/Makro/Boot_Verw/
[Benutzer]
Name=uuuuuu
Passwd=xxxx
[Programm]
Run=1
[/code]
Ich hoffe, dass dies Dir weiterhilft.
Gruss
Heinz