Seite 1 von 1

Bug in der Open for Output/Print-Anweisung?

Verfasst: Mi 5. Mär 2014, 10:20
von gogo
Hallo zusammen!

könnte jemand das mal testen:

Code: Alles auswählen

iNumber = Freefile
Open "c:\temp\test.txt" for Output as #iNumber
  Print #iNumber, Chr$(13)
  Print #iNumber, Chr$(10)
Close #iNumber
Bei mir werden immer nur Zeilenvorschübe (Chr$(10)) geschrieben niemals Carriage-Returns Chr$(13)!

Re: Bug in der Open for Output/Print-Anweisung?

Verfasst: Mi 5. Mär 2014, 15:48
von karolus
Hallo

Was hast du eigentlich vor, ausser Zeilenvorschübe und Carriagereturns in .txt files zu schreiben ?

Karolus

Re: Bug in der Open for Output/Print-Anweisung?

Verfasst: Mi 5. Mär 2014, 17:20
von gogo
ich habe eine Software, die diese aus LO exportierten Files liest, da müssen einfache \r die Zeilenenden sein.

Ich hab's mittlerweile so gelöst - das ist aber nicht wirklich "elegant" :roll:

Code: Alles auswählen

dim aCC(50)
sCC=""
i=0
Open sMyPath For Output as #iNumber
  sSt = oResultset.getstring(2) & " "
  sCC=sCC & sSt
  aCC(i)=len(sCC)
  Print #iNumber, sSt
  oResultset.beforefirst
  do while oResultset.next
	i=i+1
	sSt = oResultset.getstring(2) & "	" & i & "	U	0	0	0" & " "
	sCC=sCC & sSt
	aCC(i)=len(sCC)+i
	Print #iNumber, sSt
  loop
Close #iNumber

Open sMyPath For Binary as #iNumber
	for ii=0 to i
		put #iNumber,aCC(ii) ,Chr(13)
	next ii
Close #iNumber
msgbox "Murks beendet!"
... d.h. am Ende jeder Zeile steht ein Leerzeichen, nach dem Schreiben jeder Zeile wird die Position dieses Leerzeichens im Array aCC() gespeichert. Nachdem die Datei geschrieben wurde wird sie im Binary-Modus geöffnet, und an den in aCC() gespeicherten Positionen wird mit "put" ein CHR$(13) gesetzt ... :geek:

Re: Bug in der Open for Output/Print-Anweisung?

Verfasst: Mi 5. Mär 2014, 18:08
von karolus
Hallo
Davon kriegt man ja Kopfschmerzen - hast du mal über die Verwendung einer vernünftigen(1) Programmiersprache nachgedacht - oder wenigstens an die Umstellung auf Api-Methoden(2) zum Schreiben der Dateien ?
(1) LO hat eine vollständige Python-umgebung an Bord
(2) com.sun.star.ucb.SimpleFileAccess

Karolus

Re: Bug in der Open for Output/Print-Anweisung?

Verfasst: Mi 5. Mär 2014, 19:48
von gogo
Elefantenjagd - ich bleib' bei dem mit Samt gepolsterten Einspänner - Programmiererzeit ist teuerer als Rechenzeit. Und eine neue Sprache lern' ich wegen eines Carriage-Returns nicht ;)

Re: Bug in der Open for Output/Print-Anweisung?

Verfasst: Mi 5. Mär 2014, 20:19
von karolus
Hallo
Programmiererzeit ist teuerer..
Dein oben gezeigter "Murks" [Zitat aus deinem Quelltext] ist ein Gegenargument für diese Aussage.

Beispiel zum Schreiben von Textfiles mit CR:

Code: Alles auswählen

...
with open("c:/bla/blub/beispiel.txt", "w") as txt_datei:
    txt.datei.write( "zeile1\rzeile2\rzeile3\r")
... 

Re: Bug in der Open for Output/Print-Anweisung?

Verfasst: Do 6. Mär 2014, 11:01
von gogo
thx - welche Sprache ist das? - ich nehme mal an Python

Code: Alles auswählen

Open "c:\temp\test.txt" for Output as #iNumber
  Print #iNumber, Chr$(13)
... würde ich vorschlagen - wenn's nicht verbuggt wäre :cry:

oder einfach so:

Code: Alles auswählen

Open sMyPath  For Binary as #iNumber
	for i=1 to len(sText)
		put #iNumber,i , mid(sText,i,1)
	next i
Close #iNumber
Die put-Anweisung schafft's mit dem CHR$(13).