geloescht_sinhtoren Geschrieben 7. März 2007 Geschrieben 7. März 2007 Hi! Hat jemand ne Ahnung wie ich INI-Dateien in Open-Office auslesen kann? Zitieren
xk4fu Geschrieben 7. März 2007 Geschrieben 7. März 2007 hi das könnte das falsche forum sein; versuchs lieber mal hier: >>klick<< Zitieren
Klotzkopp Geschrieben 9. März 2007 Geschrieben 9. März 2007 das könnte das falsche forum sein;Glaube ich nicht, er will das ja mit OpenOffice Basic machen, da ist er hier schon genau richtig. Allerdings habe ich auf Anhieb nichts gefunden, womit man direkt ini-Dateien einlesen könnte. Wenn OOoBasic ein Konstrukt wie "Declare Function" aus VBA unterstützt, könnte man versuchen, GetPrivateProfileStringA aus Kernel32.dll einzubinden. Ansonsten muss man es wohl zu Fuß machen, d.h. zeilenweise einlesen wie eine Textdatei. Zitieren
xk4fu Geschrieben 9. März 2007 Geschrieben 9. März 2007 hab da was gefunden, vielleicht hilts dir weiter: Sub IniLesen ' Variablendeklaration: '----------------------- dim WinDir as String 'Windows Systemverzeichnis dim DateiNr as Integer 'Dateinummer für einen freien Dateikanal dim Zeile as String 'Variable für die aktuell aus der Datei eingelesenen Zeile dim Position as Integer 'Positionsangabe für die Suche nach Elementen zur Zeilenzerlegung dim Werte(0,1) as String 'Array für die aus der Ini eingelesenen Werte (1. Element(0) = Name , 2. Element(1) = Wert) dim W_Anzahl as Integer 'Zähler für die Werteanzahl, die eingelesen wurde dim i as integer 'die berühmte Zählvariable i 'Initialiserung '---------------------------------------- WinDir = Environ ("WinDir") 'das Eindows-Verzeichnis wird ermittelt W_Anzahl = 0 'Die Anzahl der eingelesenen Werte ist momentan ja noch nicht groß 'Jetzt geht es los, ich versuche die Daten einzulesen und muss diese dazu erst einmal öffnen: '-------------------------------------------------------------------------------------------- DateiNr = freefile 'freie Dateinummer ermitteln On Error GoTo Fehler 'Fehler führen hiermit zum Abbruch (zum Debuggen auskommentieren) Open WinDir & "\meine.ini" for input as DateiNr 'INI öffnen 'Nun muss die relevante Sektion gefunden werden: '----------------------------------------------- do Line Input #DateiNr, Zeile Position = Instr (Zeile, "[Sektionsname]") loop until Position > 0 'Wenn ich nicht mit EOF abgeflogen bin, geht es hier weiter 'Nun werden die Werte und Wertenamen extrahiert und in das Datenarray übernommen '------------------------------------------------------------------------------- do 'dazu ist eine Schleife die beste Wahl der Waffen Line Input #DateiNr, Zeile 'es wird die nächste Zeile eingelesen Position = Instr (Zeile, "=") 'und die Position des Zeichens = ermittelt if Position > 0 then 'dann wurde das Zeichen gefunden Werte (W_Anzahl,0) = mid(Zeile, 1, Position - 1) 'und es kann der Parametername in das Array übernommen werden Werte (W_Anzahl,1) = mid(Zeile, Position + 1, len(Zeile) 'dazu kommt jetzt noch der Parameterwert in´s Array W_Anzahl = W_Anzahl + 1 'Wertezähler hoch ReDim Preserve Werte(W_Anzahl,1) 'Array vergrößern else 'ansonsten könnte es sein, dass eine fehlerhafte Zeile vorgekommen ist, oder die nächste sektion beginnt Position = Instr (Zeile, "[") + Instr (Zeile, "]") 'daher prüfe ich mal, ob die beien markanten Zeichen für eine neue Sektion vorkommen if Position > 1 then exit Do 'dann beginnt vermutlich eine neue Sektion und das Einlesen ist beendet end if loop until EOF(DateiNr) 'wenn keine neue Sektion kommt, dann geht es bis zum Dateiende weiter Close #DateiNr 'die Datei brauche ich jetzt nicht mehr, ich habe alles im Array Exit Sub 'Hier ist Ende, das Fehlerhandling braucht ja nun nicht mehr durchlaufen werden Fehler: On Error resume next Close #DateiNr 'Falls der Fehler erst nach dem Öffnen aufgetreten ist MsgBox "Es ist ein Fehler bei der Datenübernahme aufgetreten!" End Sub Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.