ASCII-Importfilter bauen

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

Moderator: Moderatoren

gsemmer
Beiträge: 7
Registriert: Fr, 28.11.2008 12:21

ASCII-Importfilter bauen

Beitrag von gsemmer »

Ich brauche Informationen, wie ich Filter für eine ASCII-Datei schreibe.
Ist für Dateien eines Triumph Adler BSM100 Bildschirmschreibsystems,
BJ vor der Jahrtausendwende und noch immer im Einsatz. Aber der Zahn
der Zeit .. ;)

Das hat so 'ne crude Codetabelle wie
Ä=$01
Ü= $03
Fett= $8C
Space = $20, Tabspace = $60 (kann Tabstopps nur mit Pseudo-Leerzeichen anspringen)
usw. usf.

Tips? Hilfen?

Danke im Voraus
gsemmer
Beiträge: 7
Registriert: Fr, 28.11.2008 12:21

Re: ASCII-Importfilter bauen

Beitrag von gsemmer »

mb2008 hat geschrieben:Hallo,
ist vielleicht ein naiver Ansatz, aber warum baust Du nicht eine einfache Schleife über alle Absätze:

Code: Alles auswählen

ParList = ThisDocument.text.CreateEnumeration
Do While ParList.HasMoreElements
	MyPar = ParList.NextElement
	If MyPar.SupportsService("com.sun.star.text.Paragraph") Then
		ParString = MyPar.string
und gehst diesen String dann Zeichen für Zeichen durch und erledigst die Übersetzung xder Codetabelle (die Du dann natürlich von Hand stricken musst, aber das ist ja bei maximal 256 Zeichen nicht so wild) durch eine Select-Anweisung in der Art

Code: Alles auswählen

Select Case asc(mid(MyChars,i,1))
		Case 32	' space
			mid(MyChars,i,1,chr(XXXX))
                        .....
	End Select
(dabei ist i die Position in dem Absatz und XXXX der Code, den Du statt 32 setzen willst). Oder habe ich da jetzt zu einfach gedacht?

Michael
Weil nach dem Importieren die ASCII-Werte schon uminterpretiert sind.
$01 (Ä) $02 (Ü) etc. werden alle zu #
Außerdem ... ein bischen Luxus darfs schon sein ...
Und im Header stehen außerdem Informationen über Pitch, Zeilen pro Seite, Zeichen pro Zeile, etc. (unproportionale Schrift, Courier). Das möchte ich schon einbauen ins erzeugte ODF
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: ASCII-Importfilter bauen

Beitrag von Karolus »

Hallo
Ich hab mir mal eine Testdatei mit einem Hex-editor erstellt mit den Hexcodes: 01 und 02.
Diese Testdatei hab dann mittels des Kommandos:
sed -e 's/\x01/ä/g;s/\x02/ö/g' inputtest > outputtest
Nachtrag: kürzer gehts mit:
sed -e 'y/\x01\x02/äö/' inputtest > outputtest
erfolgreich die hexcodes 01 in ä ;und 02 in ö gewandelt.
Allerdings arbeite ich mit einem LInux-system, falls du auf Windows arbeitest müsstes du "Cygwin " installieren
Versuchs doch mal damit.
http://www.pl-berichte.de/t_system/cygwin.html
hier gibts das Programm
ein Sed-Tuturial

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
gsemmer
Beiträge: 7
Registriert: Fr, 28.11.2008 12:21

Re: ASCII-Importfilter bauen

Beitrag von gsemmer »

Karolus hat geschrieben:Hallo
Ich hab mir mal eine Testdatei mit einem Hex-editor erstellt mit den Hexcodes: 01 und 02.
Diese Testdatei hab dann mittels des Kommandos:
sed -e 's/\x01/ä/g;s/\x02/ö/g' inputtest > outputtest
Nachtrag: kürzer gehts mit:
sed -e 'y/\x01\x02/äö/' inputtest > outputtest
erfolgreich die hexcodes 01 in ä ;und 02 in ö gewandelt.
Allerdings arbeite ich mit einem LInux-system, falls du auf Windows arbeitest müsstes du "Cygwin " installieren
Versuchs doch mal damit.
http://www.pl-berichte.de/t_system/cygwin.html
hier gibts das Programm
ein Sed-Tuturial

Gruß Karo
Das wäre schon eine Lösung, es soll aber auch eine einfache Lösung für Nur-Schreiber werden.
Es haben sich in den letzten Jahren schon etliche Diskette angesammelt. Und eine Herausforderung solls auch sein.
Hat niemand Infos zum Filterschreiben?
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: ASCII-Importfilter bauen

Beitrag von Karolus »

Hallo
Wenn das grundsätzlich auf diesem Weg geht kannst du die funktionierente Kommandofolge in ein Script schreiben und musst dann später nur noch das Skript per Doppelklick ausführen.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
gsemmer
Beiträge: 7
Registriert: Fr, 28.11.2008 12:21

Re: ASCII-Importfilter bauen

Beitrag von gsemmer »

mb2008 hat geschrieben:
gsemmer hat geschrieben:Weil nach dem Importieren die ASCII-Werte schon uminterpretiert sind.
Ich hab's ja geahnt, dass ich zu naiv bin ... Aber warum werden die Codes uminterpretiert (ich hätte gedacht, nur die Darstellung ist verhunzt, weil er die Codes als ASCII interpretiert)?
Und im Header stehen außerdem Informationen über Pitch, Zeilen pro Seite, Zeichen pro Zeile, etc. (unproportionale Schrift, Courier).
Das ist dann aber schon mehr als ein ASCII-Importfilter ... ;-)

Grüße

Michael
Genauso wie Filter für andere Dokumentformate (rtf, doc, wordperfect, etc.), bei denen Schriftart und -größe, Seitenformat, Tabstopps, usw. mit importiert werden.
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: ASCII-Importfilter bauen

Beitrag von Karolus »

Hallo
an verwertbaren Informationen lieferst du:
gsemmer hat geschrieben:....hat so 'ne crude Codetabelle wie
Ä=$01
Ü= $03
Fett= $8C
Space = $20, Tabspace = $60 (kann Tabstopps nur mit Pseudo-Leerzeichen anspringen)
usw. usf.
und möchtest daraus einen Filter analog zu:
gsemmer hat geschrieben:...genauso wie Filter für andere Dokumentformate (rtf, doc, wordperfect, etc.), bei denen Schriftart und -größe, Seitenformat, Tabstopps, usw. mit importiert werden.
gebaut kriegen ??
Ausser dir braucht das anscheinend sonst niemand ( auch Google weiss dazu nichts)
Daher solltest du vielleicht mal weitere Information zb. die komplette Codepage liefern
evtl. kannst auch mal 1 - 2 Beispielsdateien in ein .zip einpacken und hier anhängen. (mit sinnvollem Inhalt aber ohne private Daten)
Aber auch dann kann ich - (vielleicht ein anderer ? ) - dir keinen Importfilter schreiben, sondern nur eine umcodierte Textdatei die in Writer lesbar ist.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
gsemmer
Beiträge: 7
Registriert: Fr, 28.11.2008 12:21

Re: ASCII-Importfilter bauen

Beitrag von gsemmer »

Karolus hat geschrieben:Hallo
an verwertbaren Informationen lieferst du:
gsemmer hat geschrieben:....hat so 'ne crude Codetabelle wie
Ä=$01
Ü= $03
Fett= $8C
Space = $20, Tabspace = $60 (kann Tabstopps nur mit Pseudo-Leerzeichen anspringen)
usw. usf.
und möchtest daraus einen Filter analog zu:
gsemmer hat geschrieben:...genauso wie Filter für andere Dokumentformate (rtf, doc, wordperfect, etc.), bei denen Schriftart und -größe, Seitenformat, Tabstopps, usw. mit importiert werden.
gebaut kriegen ??
Ausser dir braucht das anscheinend sonst niemand ( auch Google weiss dazu nichts)
Daher solltest du vielleicht mal weitere Information zb. die komplette Codepage liefern
evtl. kannst auch mal 1 - 2 Beispielsdateien in ein .zip einpacken und hier anhängen. (mit sinnvollem Inhalt aber ohne private Daten)
Aber auch dann kann ich - (vielleicht ein anderer ? ) - dir keinen Importfilter schreiben, sondern nur eine umcodierte Textdatei die in Writer lesbar ist.

Gruß Karo
Ufffff ... eigentlich will ich ja "nur" Informationen zum Schreiben von Importfiltern.
Wenn ich guugele, dann bekomme ich nur Klagen, dass ein vorhandener Filter nicht funzt, oder Support für SVG-Filter, oder Import von PDFs, oder oder oder!
Ich bekomme aber keine Informationen, wie ich einen Filter schreibe ...
Dirk Reusswig
Beiträge: 3
Registriert: Mo, 19.01.2009 21:46

Re: ASCII-Importfilter bauen

Beitrag von Dirk Reusswig »

Ufffff ... eigentlich will ich ja "nur" Informationen zum Schreiben von Importfiltern.
Wenn ich guugele, dann bekomme ich nur Klagen, dass ein vorhandener Filter nicht funzt, oder Support für SVG-Filter, oder Import von PDFs, oder oder oder!
Ich bekomme aber keine Informationen, wie ich einen Filter schreibe ...gsemmer
Ich habe das hier in VB gebastelt:

Code: Alles auswählen

' Strukturbeschreibung für Microsoft Word Merge (Docmd.TransferText acExportMerge,...):
oo_ds.URL = "sdbc:flat:" & str_filepath
Set arr(0) = createStruct("com.sun.star.beans.PropertyValue", oocr)
arr(0).Name = "HeaderLines"
arr(0).Value = True
Set arr(1) = createStruct("com.sun.star.beans.PropertyValue", oocr)
arr(1).Name = "FieldDelimiter"
arr(1).Value = Chr(9)
Set arr(2) = createStruct("com.sun.star.beans.PropertyValue", oocr)
arr(2).Name = "StringDelimiter"
arr(2).Value = Chr(34)
Set arr(3) = createStruct("com.sun.star.beans.PropertyValue", oocr)
arr(3).Name = "Charset"
arr(3).Value = "iso-8859-1"
Set arr(4) = createStruct("com.sun.star.beans.PropertyValue", oocr)
arr(4).Name = "Extension"
arr(4).Value = "txt"
oo_ds.Info = arr()
Kannst Du damit was anfangen?

Schöne Grüße, Dirk
Antworten