[gelöst]Finden von Variablen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst]Finden von Variablen

Re: Finden von Variablen

von Devil » Do, 09.07.2015 16:18

Ok Sorry hat sich erledigt... hab das kleine o in der Refresh Zeile übersehen... das muss heissen oDok und nicht Dok...
Trotzdem danke an alle die Gegrübelt haben :D Jetzt funktioniert es :D

Re: Finden von Variablen

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 :D ausserdem hast du bereits so viel schon geholfen :D

Re: Finden von Variablen

von komma4 » Do, 09.07.2015 15:18

Entschuldige, hat sich ein Kopier-Fehler eingeschlichen... die Abfrage muss lauten:

Code: Alles auswählen

IF oTFM.hasByName("com.sun.star.text.fieldmaster.User." & var) THEN 

Re: Finden von Variablen

von Devil » Do, 09.07.2015 14:47

Ich habe noch ein Problem gerade festgestellt und weiss nicht weiter :? Kann es sein, dass das Makro komplett abgebrochen wird, wenn die entsprechende Variable nicht vorhanden ist? Denn das wäre eher Kontraproduktiv, da ich ja in keinem Dokument alle 400 Variablen vergebe (Gott bewahre :shock: ). Das ist mir gerade beim Testen aufgefallen.

Beispiel:
Aufbau INI:

Dokument:Test.odt
User:ich
Name:Devil
Vorname:Satan

Vergebene Variablen im Dokument:
Dokument
User
Vorname

Nach durchlaufendes Makros:
Test.odt
ich
Vorname

Re: Finden von Variablen

von Devil » Do, 09.07.2015 13:56

Danke Danke Danke ;)
Ich beschäftige mich um ehrlich zu sein noch nicht allzulange mit OOo...
Aber danke für deine Geduld mit mir :D

Re: Finden von Variablen

von komma4 » Do, 09.07.2015 13:50

STRG+F9 schaltet um

Re: Finden von Variablen

von Devil » Do, 09.07.2015 13:43

Ersteinmal vielen vielen Dank dafür. Aber noch eine Frage: besteht die Möglichkeit das Benutzerfeld komplett zu ersetzen? also quasi so, dass danach nur noch Text da steht und nicht "Benutzerfeld XY=BlaBlaBla" ?
Wenn nicht ist es auch nicht allzuschlimm, denn dann sollte das auch so gehen. ;)

Re: Finden von Variablen

von komma4 » Do, 09.07.2015 13:06

Richtig verstanden

Re: Finden von Variablen

von Devil » Do, 09.07.2015 12:18

Nur damit ich dich richtig verstehe...

Ich lade aus meiner Konfig-Datei eine Zeile und der Teil

Code: Alles auswählen

aZeile = SPLIT(zeile, ":")
Trennt dann die Zeile an dem ":" in 2 Teile und setzt diese in ein Array richtig???

Re: Finden von Variablen

von komma4 » Do, 09.07.2015 12:00

Naja - eine Variable hat den Vorteil nur *einmal* an *einer Stelle* geändert werden zu müssen.

Der folgende Code liefert ein Beispiel zum Zugriff... und eine Möglichkeit, mit einer Konfigurationsdatei Deine 400 Variablen (!) zu setzen. Musst jetzt "nur noch" die Datei einlesen und zeilenweise abarbeiten. :)

Code: Alles auswählen

Sub de66003
' 20150709
' Benutzer definiertes Feld:
' Einfügen>Feldbefehl>Andere...>Variablen>Benutzerfeld>[Format]Text

oDok = ThisComponent
oTFM = oDok.getTextFieldMasters()

' hier eine...
' Zeile aus Konfigurationsdatei
zeile = "var1:neuer Inhalt !"

aZeile = SPLIT(zeile, ":")
var = aZeile(0)
txt = aZeile(1)

' 
IF oFeld = 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
oDok.getTextFields.refresh()
End Sub
Achtung! die unterschiedliche Schreibweise beim hasByName/getByName ist bei meiner aktuell genutzten / der getesteten Version (AOO 4.1.1) nötig, um die Variable zu finden und auf sie zuzugreifen. Weiss der Geier warum (wahrscheinlich ein Fehler)

Viel Spass damit

Re: Finden von Variablen

von Devil » Do, 09.07.2015 10:34

Sie stehen als Text im Dokument.
Ist es Evtl Sinnvoll diese z.B. als Feldbefehl/Variabel in den Text zu schreiben? wenn ja, dann muss ich allerdings noch wissen wie ich diese durch Text ersetze. Bisher nutze ich die Suchen_und_ersetzen funktion von Karolus: viewtopic.php?f=18&t=64515

Re: Finden von Variablen

von komma4 » Do, 09.07.2015 10:00

Wie "stehen" die Variablen denn im Dokument?

Als Text - in der beschriebenen Syntax, oder als Feldbefehl eingefügt?

[gelöst]Finden von Variablen

von Devil » Do, 09.07.2015 09:02

Ich habe ein OOo Writer Dokument, in welchem beliebig viele Variablen mit einer bestimmten Syntax verbaut sind (als beispiel "{<Test>}").
gibt es irgndeine möglichkeit herauszufinden welche Variablen im Text vorkommen? Denn dadurch liesse sich mein Makro vermutlich um einiges beschleunigen wenn ich nicht alle 400 möglichkeiten suchen und ersetzen muss.
Bei Fragen einfach melden. Vielen Dank im Vorraus

Devil

Nach oben