von Devil » Do, 09.07.2015 15:55
Weiteres Problem: Ich habe einen code, der liefert mir eine Zeile der Konfig Datei nach der anderen. Das funktioniert auch (habe mit mit "Print" die einzelnen Werte ausgeben lassen.)
An der stelle des "Print" befehls die Prozedur zum ersetzen aufgerufen, damit ich jedes Feld durchlaufe. Nun mein Problem: wenn die Prozedur da aufgerufen wird wird der komplette code nur einmal durchlaufen...
Hier der ausschnitt aus dem Code:
Code: Alles auswählen
Sub Main
ReadInicomplete("C:\Users\Devil\Datei.INI", "DatenAnTextverarbeitung", "")
Print "Fertig"
End Sub
function readinicomplete( inifile as string, bereich as string, default as string) as string
Dim inBereich as boolean
Dim aFile as String
Dim #inumber
Dim INIzeile as String
Dim Start as String
Dim parameter as String
Dim breich as String
inBereich=false
readinicomplete=default
breich=bereich
Bereich="["+bereich+"]"
#iNumber = Freefile
aFile = inifile
on error goto ende
if FileExists(inifile) then
Open aFile For Input As #iNumber
Print eof(#iNumber)
While not eof(#iNumber)
Line Input #iNumber, INIZeile
if INIzeile=Bereich then inBereich=true
if inBereich then
ipos=InStr(INIZeile,"=")
if ipos>0 then
Print INIZeile
'################################################################
Variablen(INIZeile) 'Wenn ich diese Zeile Weg lasse, dann funktioniert der Code einwandfrei.
'################################################################
end if
end if
wend
Close #iNumber
end if
exit function
ende:
end function
Sub Variablen(Datazeile as String)
'Prozedur von "komma4" (http://de.openoffice.info/viewtopic.php?f=18&t=66003&p=257020#p257020)
oDok = ThisComponent
oTFM = oDok.getTextFieldMasters()
' hier eine...
' Zeile aus Konfigurationsdatei
aZeile = SPLIT(Datazeile, "=")
var = aZeile(0)
txt = aZeile(1)
IF oTFM.hasByName("com.sun.star.text.fieldmaster.User." & var) THEN
oFeld = oTFM.getByName("com.sun.star.text.FieldMaster.User." & var)
oFeld.Content = txt
END IF
' ggfs. aktualisieren
Dok.getTextFields.refresh()
End Sub
Und das dir mal ein Fehler passiert ist doch nicht schlimm... Da merkt man wieder das alle nur menschlich sind und Fehler machen dürfen

ausserdem hast du bereits so viel schon geholfen

Weiteres Problem: Ich habe einen code, der liefert mir eine Zeile der Konfig Datei nach der anderen. Das funktioniert auch (habe mit mit "Print" die einzelnen Werte ausgeben lassen.)
An der stelle des "Print" befehls die Prozedur zum ersetzen aufgerufen, damit ich jedes Feld durchlaufe. Nun mein Problem: wenn die Prozedur da aufgerufen wird wird der komplette code nur einmal durchlaufen...
Hier der ausschnitt aus dem Code:
[code]
Sub Main
ReadInicomplete("C:\Users\Devil\Datei.INI", "DatenAnTextverarbeitung", "")
Print "Fertig"
End Sub
function readinicomplete( inifile as string, bereich as string, default as string) as string
Dim inBereich as boolean
Dim aFile as String
Dim #inumber
Dim INIzeile as String
Dim Start as String
Dim parameter as String
Dim breich as String
inBereich=false
readinicomplete=default
breich=bereich
Bereich="["+bereich+"]"
#iNumber = Freefile
aFile = inifile
on error goto ende
if FileExists(inifile) then
Open aFile For Input As #iNumber
Print eof(#iNumber)
While not eof(#iNumber)
Line Input #iNumber, INIZeile
if INIzeile=Bereich then inBereich=true
if inBereich then
ipos=InStr(INIZeile,"=")
if ipos>0 then
Print INIZeile
'################################################################
Variablen(INIZeile) 'Wenn ich diese Zeile Weg lasse, dann funktioniert der Code einwandfrei.
'################################################################
end if
end if
wend
Close #iNumber
end if
exit function
ende:
end function
Sub Variablen(Datazeile as String)
'Prozedur von "komma4" (http://de.openoffice.info/viewtopic.php?f=18&t=66003&p=257020#p257020)
oDok = ThisComponent
oTFM = oDok.getTextFieldMasters()
' hier eine...
' Zeile aus Konfigurationsdatei
aZeile = SPLIT(Datazeile, "=")
var = aZeile(0)
txt = aZeile(1)
IF oTFM.hasByName("com.sun.star.text.fieldmaster.User." & var) THEN
oFeld = oTFM.getByName("com.sun.star.text.FieldMaster.User." & var)
oFeld.Content = txt
END IF
' ggfs. aktualisieren
Dok.getTextFields.refresh()
End Sub
[/code]
Und das dir mal ein Fehler passiert ist doch nicht schlimm... Da merkt man wieder das alle nur menschlich sind und Fehler machen dürfen :D ausserdem hast du bereits so viel schon geholfen :D