[gelöst] txt schreiben / auslesen ?

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

Moderator: Moderatoren

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

[gelöst] txt schreiben / auslesen ?

Beitrag von red2sign »

Hallo Leser,
bin ganz neu in OO und möchte die Makromöglichkeiten testen.
Ein wesentlicher Faktor für die Entscheidung hin zu OO ist für mich, ob die Makros bzw. Basic-Codes text-Files oder auch ini-Files schreiben, bzw auslesen (auch Zeile/Zeichen für Zeile/Zeichen) können.

Ihr hab da doch sicher Erfahrung und könnt mir da mal einen Tipp, bzw. ein Bsp schreiben/schicken?

Vielen Dank und Grüße,
red2sign
Zuletzt geändert von red2sign am Mi, 30.07.2008 16:27, insgesamt 1-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: txt schreiben / auslesen ?

Beitrag von ykcim »

Hallo,

Starbasic kann text-Files lesen und schreiben.

Um ini-dateien zu lesen und zu schreiben gibt es zwei Funktionen von mir:
writeini http://www.dannenhoefer.de/faqstarbasic/writeini.html
und
readini http://www.dannenhoefer.de/faqstarbasic/readini.html

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

Re: txt schreiben / auslesen ?

Beitrag von red2sign »

Hi Leute
Wisst ihr, wie man obigen Code anwendet?
Bei mir erstellt es kein ini.

Hab folgenden Aufruf:
Sub Main
writeini("D:\test\inifile.ini","4","Test","10")
End Sub


Liegt es an den Übergabeparametern?

Grüße!
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: txt schreiben / auslesen ?

Beitrag von turtle47 »

Hi red2sign,
red2sign hat geschrieben:Sub Main
writeini("D:\test\inifile.ini","4","Test","10")
End Sub
Wo hast Du das denn her?

Du musst zuerst ein Dokument erzeugen, in diesem Fall im Hintergrund (Hidden), und dann abspeichern.

Code: Alles auswählen

Sub Create_file
	Dim oDocument as object
	dim myFileProp(0) as New com.sun.star.beans.PropertyValue
    myFileProp(0).name="Hidden"
    myFileProp(0).value=True 
	oDocument = StarDesktop.loadComponentFromURL ("private:factory/swriter","_blank", 0, myFileProp())
	If Fileexists("File:///D:/Test/Inifile.ini")= false  then
	dim dummy()
	oDocument.storeToURL(("File:///D:/Test/Inifile.ini") , dummy())
	msgbox "Die Datei wurde erstellt"
    else
    msgbox "Die Datei ist schon vorhanden"
	exit sub
	end if	
End Sub
Wenn das Dokument erzeugt ist kannst Du Werte eintragen.

Code: Alles auswählen

Sub Write_Ini
   
	'*******Pfad anpassen******************************
	myfile="D:/Test/Inifile.ini"
	'***************************************************
	if FileExists("file:///" & myfile) then
   
		f1 = FreeFile()
       
		'#f1 = FreeFile()
		Open "file:///" & myfile for output as #f1 'Schreiben
		Print #f1, "Text 1"
		Print #f1, "Text 2"
		Print #f1, "Text 3"
		close #f1
	msgbox "Der Text wurde eingetragen"
	else
	msgbox "Datei nicht vorhanden"
        endif    
end sub
Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: txt schreiben / auslesen ?

Beitrag von ykcim »

Erstmal hallo re2dsign,

der Code erstellt auch keine ini-Datei. Er ändert vorhandene Werte in einer existierenden ini-Datei.
Um eine Ini-Datei zu erzeugen kann einfach eine neue Datei erzeugen und mit Werten beschreiben. Siehe unten.
mfg
Michael


Dann Hallo Jürgen,

sorry aber Dein Code ist, naja, murks :-).
Mit dem StoretoUrl und deinen Parmater erzeugt man eine odt-Datei mit der Endung ini.
Alles was mann danach macht führt nicht gerade zum Eintragen in eine text-datei.

Um eine neue Datei zu erzeugen langt das Öffnem als neuen Output.

Code: Alles auswählen

aFile = "c:\daten.txt"
iNumber = Freefile
Open aFile For Output As #iNumber
Print #iNumber, "Das ist eine Zeile Text"
Print #iNumber, "Das ist eine weitere Zeile Text"
Close #iNumber

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: txt schreiben / auslesen ?

Beitrag von turtle47 »

ykcim hat geschrieben:sorry aber Dein Code ist, naja, murks :-).
Mit dem StoretoUrl und deinen Parmater erzeugt man eine odt-Datei mit der Endung ini.
Alles was mann danach macht führt nicht gerade zum Eintragen in eine text-datei.
Wieso? Bei mir funktioniert der Code einwandfrei. Schreiben sowie auch das spätere auslesen. :D
Oder hast Du beim ausprobieren festgestellt das es irgendwo hakt?

Zugegeben, Dein code ist natürlicht etwas "feiner". :)
Schönen Dank.

Viele Grüsse.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: txt schreiben / auslesen ?

Beitrag von ykcim »

Oh, ich habe etwas übersehen.
Du erzeugst erst eine neue Datei mit Storetourl und überschreibst sie automatisch dann mit Open als output. Natürlich ist dann das Endergebnis richtig. Nur der Zwischenschritt mit Storetourl ist falsch. Wenn Du Dir dir erzeugte Datei anschaust bevor Du in die ini-Datei schreibst, wirst festellen das sie nicht leer ist sondern eine ODT-Datei mit leerem Inhalt.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: txt schreiben / auslesen ?

Beitrag von turtle47 »

Hallo Micheal,
ykcim hat geschrieben:Wenn Du Dir dir erzeugte Datei anschaust bevor Du in die ini-Datei schreibst, wirst festellen das sie nicht leer ist sondern eine ODT-Datei mit leerem Inhalt.
Das hatte ich auch schon mal gemacht und das gleiche festgestellt. War mir im Endeffekt aber egal weil das Endergebnis nach dem Beschreiben ja in Ordnung war.
Aber Dank Deines Hinweises kenne ich jetzt eine elegantere (fachlich richtige) Lösung. :wink:

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: txt schreiben / auslesen ?

Beitrag von red2sign »

Hi Leute!

Danke für eure Vorschläge, habe am Rande was einfacheres Gefunden.
Sehr viel einfacher. Wo der genaue Unterschied liegt, kann ich nicht sagen, bin ja Newbie.

Code: Alles auswählen

'Schreiben der Ini-Datei
sPfad = "D:\settings.ini"
FileNo = Freefile()
If FileExists(sPfad) Then
Open sPfad For Output As #FileNo
Print #FileNo, "Testtext"
Close #FileNo
End If

End Sub
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Antworten