ini schreiben - ohne Zeilen zu überschreiben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

ini schreiben - ohne Zeilen zu überschreiben

Beitrag von red2sign »

Hallo zusammen,

habe jetzt mehrere Wege, wie ich eine ini schreiben/lesen kann. Jedoch habe ich folgende Probleme:

Problem beim schreiben: Beim schreiben überschreibt es mir die komplette ini - und nicht nur die eine gezielte Sektion mit Schlüsseln und Werten.
Außerdem muss ich neue Zeilen am bisherigen Ende der ini einfügen. Der Inhalt davor soll natürlich nicht überschrieben werden.
Problem beim lesen: Ich muss immer eine Sektion angeben, kann praktisch kein "Vorscan" machen, der mir erstmal alle vorhandenen Sektionen liefert.

Was würdet iht tun?
Dank und Gruß,
red2sign
Zuletzt geändert von red2sign am Di, 05.08.2008 11:25, insgesamt 2-mal geändert.
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: ini schreiben/lesen - Eure Meinung / Empfehlung

Beitrag von ykcim »

Hallo,
Problem beim schreiben: Beim schreiben überschreibt es mir die komplette ini - und nicht nur die eine gezielte Sektion mit Schlüsseln und Werten.
Das ist kein Problem. Entscheidend ist das Ergebnis und das ist die ini-Datei mit einem neuem Wert.
Problem beim lesen: Ich muss immer eine Sektion angeben, kann praktisch kein "Vorscan" machen, der mir erstmal alle vorhandenen Sektionen liefert.
Dann musst Du Dir den Vorscan selber schreiben. Ist nicht kompliziert Du mußt nur die Begriffe in ein Array listen die mit eckigen Klammern geschachtelt sind. Um das Array liste() zu füllen geht es so:

Code: Alles auswählen

   Dim liste() as string
   a=0
   #iNumber = Freefile
   aFile = "e:\test.ini"
   Open aFile For Input As #iNumber
   While not eof(#iNumber)
    Line Input #iNumber, sZeile
    start=left(sZeile,1)
    if start="[" then 
      m=Len(sZeile)-2
      wert=mid(sZeile,2,m)
      liste(a)=wert
      a=a+1
    end if  
   wend
   Close #iNumber
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: ini schreiben/lesen - Eure Meinung / Empfehlung

Beitrag von komma4 »

wäre in diesem Fall vielleicht overhead, aber StarBasic hat Routinen zum Bearbeiten von XML-Dateien.

Die lassen sich auch prima mit Fremdprogrammen bearbeiten und darstellen (!). während die Behandlung einer INI-Datei mit einem eigenen Format eher problematisch ist.

Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: ini schreiben/lesen - Eure Meinung / Empfehlung

Beitrag von red2sign »

Hi! XML ist leider nur ein Thema für die Zunkunft.
Momentan ist noch ini zwingend.

Habe den Befehl writeString() gefunden, mit dem man anscheinend einen übergebenen String an die aktuelle Position in der Datei (Dateizeiger) schreiben kann.

Hat das schonmal jemand gemacht?
Finde nichts zum Stichwort Dateizeiger.
Stelle mir das so vor, dass ich der Methode irgendwie sagen muss, bei welcher Zeile der String hin muss.
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: ini schreiben/lesen - Empfehlung

Beitrag von ykcim »

Kenne keine writeString()-Anweisung. Nur eine write-Anweisung.
Und mit der lässt sich auch nur eine Zeile an eine vorhandene Datei anhängen.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: ini schreiben/lesen - Empfehlung

Beitrag von red2sign »

Ich hab zwischenzeitlich den Dateizeigerbefehl gefunden. Er heißt seek(#n, position). Jedoch wird die Position in Zeichen, nicht in Zeilen angegeben.
Also leider unbrauchbar....

Die wirite-Anweisung klingt interessant. Mein Ziel ist es ja, lediglich in einer schon vorhandenen, mit Daten gefüllten Datei, weitere Zeilen unten anzuhängen / zu ergänzen.
Jedoch muss ich der doch auch irgenwie sagen, an welcher Zeile sie schreiben soll?
Gruß
---------------------------------------------------------------------------------------------
ykcim hat geschrieben:Kenne keine writeString()-Anweisung. Nur eine write-Anweisung.
Und mit der lässt sich auch nur eine Zeile an eine vorhandene Datei anhängen.

mfg
Michael[/[uote]
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: ini schreiben - ohne Zeilen zu überschreiben

Beitrag von red2sign »

Mal vorsichtig *push*
Komme nicht weiter

Eine Alternative wäre noch die Sektionsnamen in der Ini zu ändern. Wenn ich wüsste wie.
Hab mal was probiert, aber klappt leider nicht.
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Antworten