mikrocontroller.net

Forum: PC-Programmierung PageBreak in Text File


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es moeglich einen PageBreak in eine Text file einzubauen??

ich habe schon eine weile gesucht und nichts gefunden. ausser einem 
linebreak mittels /r/n oder misterieosen befehlen wie print #9, chr(12) 
oder einem angeblichen ascii 12 befehl habe ich nichts gefunden. ich 
muesste es mittels einer Batch in eine txt file pipen....

hat einer von euch schon mal was von dem printerbefehl \u000C gehoert??

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "angebliche ascii 12" ist dasselbe wie der "Printerbefehl" - das ist 
ein Form-Feed.
Er wird von einigen Textterminals und eben Druckern ausgewertet, aber in 
Textdateien ist er nicht üblich.

Es gibt keine standardisierte Codierung für Seitenumbruch in reinen 
Textdateien; manche Textanzeiger oder Editoren mögen FormFeed auswerten, 
aber üblich ist das nicht.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kriege ich dann etwas in mein txt file rein (per batch file / pipe) 
damit ich am ende beim drucken seitenumbrueche habe?

danke im voraus!

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Texteditoren arbeiten normalerweise nicht seitenorientiert, deswegen
wird der Form-Feed (= chr(12) = ASCII 12 = \u000C = Strg-L = Ctrl-L =
^L = '\x0c' = '0014" = '\f') dort nicht ausgewertet, sondern
allenfalls als ^L angezeigt.

Man findet diesen Code manchmal in älterem Quellcode bspw. vor jedem
Unterprogramm. Damit wird erreicht, dass jedes Unterprogramm auf einer
neuen Seite ausgedruckt wird. In vielen Programmiersprachen wird ^L
als Leerraum (White Space, wie Leerzeichen, Zeilenvorschub und
Tabulator) behandelt (bspw. in C und Python), so dass es keinen
Einfluss auf die Funktionsweise des Programms selber hat.

Textverarbeitungsprogramme, die im Gegensatz zu reinen Texteditoren
seitenorientiert arbeiten, ersetzen i.Allg. einen Form-Feed in einer
importierten Textdatei durch einen Seitenumbruch (so z.B. Open
Office).

Wie der Form-Feed in eine Textdatei eingefügt wird, hängt vom
verwendeten Editor ab. Bei Vim geht das mit Strg-V Strg-L, bei Nano
mit Esc V Strg-L. Wie das in deinem Editor geht, wenn überhaupt, sagt
dir sicher die zugehörige Gebrauchsanleitung.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:
  • ff.txt (1 Byte, 231 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Nun, wenn Dein Drucker FormFeeds unterstützt, dann musst Du in der Tat 
FormFeeds ausgeben.
Ein FormFeed ist Ctrl+L; eine Textdatei, die nur FormFeed enthält, 
erhältst Du durch Eingabe von

  copy con ff.txt [RETURN]
  [Ctrl+L][Ctrl+Z]

Das Ergebnis einer solchen Aktion siehst Du im Anhang.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin wrote:
> wie kriege ich dann etwas in mein txt file rein (per batch file / pipe)
> damit ich am ende beim drucken seitenumbrueche habe?
>
> danke im voraus!

Du kannst dir zb. eine Datei vorbereiten in der nur dieses
eine Zeichen drinnen ist. Dieses File wird dann zwischendurch
auf den Drucker ausgegeben um den FormFeed zu erreichen.
Wie du das File erstellst:
  * Texteditor. Unter DOS gabs immer die Möglichkeit mittels
    AltGr und dem Zeichencode an der Zehnertastatur ein beliebiges
    Zeichen einzugeben. Wenn das mit deinem Texteditor noch geht:
    Bingo

  * Wenn du mit dem Texteditor nicht weiter kommst:
    Text File anlegen mit 1 Zeichen drinn, zb. A
    Dann besorgst du dir einen Hex Editor, machst das File
    auf und tauscht das A gegen einen FormFeed aus

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
krass, cool danke. das hoert sich echt nicht schlecht an. ich werde das 
mal ausprobieren :)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Eingabemethode mit der Alt-Taste und dem Zehnerblock existiert auch 
unter Windows noch (Alt, nicht AltGr!). Zwischen ANSI (CP1252) und "DOS" 
CP437/850 wird durch voranstellen einer 0 unterschieden:


Beispiel:
Alt + 148   ö ("DOS")
Alt + 0148  ø (ANSI)

Bei Zeichencodes kleiner als 128 ist eine solche Unterscheidung 
natürlich nicht nötig.

Zeichencodes kleiner als 32 können auch mit Ctrl + einer Buchstabentaste 
eingegeben werden, vom ASCII-Code des Großbuchstabens wird (dezimal) 64 
abgezogen.

Ctrl + A ist demnach dasselbe wie Alt + 1

Jedoch werten diverse Editoren solche Steuerzeichen auch selber aus und 
tragen diese nicht in die zu erzeugende Textdatei ein.

Hundertprozentige Sicherheit gewährt hier nur ein Hexeditor.

Wie man aber den Steuercode für FormFeed (0x0C) in eine Datei bekommt, 
habe ich bereits weiter oben beschrieben und auch eine ein solches 
Zeichen enthaltene Datei angehängt.

So etwas hat natürlich nur mit Primitivdruckern einen Sinn, die unter 
Umgehung des betriebssystemeigenen Druckertreibers DIREKT angesteuert 
werden, so, wie man es mit Nadelratzen und ähnlichem in der vorderen 
Altsteinzeit mal tat.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal danke fuer die hilfe, hat uebrigens wunderbar geklappt.

ich musste nur die ff.txt etwas erweitern, denn entweder wollte winword 
die seitenumbrueche nicht richtig fressen oder meine zuweisung und pipe 
haben das eine 0c hex zeichen nicht erkannt.

so habe ich ein weiteres 0c sowie ein a0 (fuer leerzeichen) eingefuegt, 
damit folgendes funktioniert:


set /P umbruch=<c:\temp\ff.txt
for /f "tokens=1,*" %%g in (text.txt) do (echo %%g %%h >> NEU.txt
IF %%g==keyword (echo %umbruch% >> NEU.txt)


jetzt haette ich noch zwei andere kurze fragen:

1. beim umleiten (echo >>) des textes aus text.txt in NEU.txt 
zerschiesst es mir die tabulator formatierung. gibt es eine methode in 
batch dies zu verhindern??


2. will ich beim umleiten einen abschnitten ins nirvana umleiten, kriege 
es aber irgendwie nicht gebacken das in meine forschleife einzubasteln. 
springt batch denn wirklich immer zurueck in die laufende forschleife, 
wenn sie noch nicht abgearbeitet ist? koennte ich also ein call zu einer 
unterprozedur machen und dieser sagen: OK jetzt beginnt ein teil den du 
weiter auslesen sollst, aber nicht in die NEU.txt reinschreiben sollst? 
um dann wieder zurueckzuspringen, wenn ein neues abschnitt beginnt der 
in die datei rein soll?

gruss
martin

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wenn meine Dos-Kenntnisse nicht ganz verblichen sind: Um etwas ins 
Nirwana zu schicken gibt es ein Nulldevice. Wird, so weit ich mich noch 
mit '>>nil' angesprochen.

MfG Spess

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fehlt ein 'erinnern kann'.

MfG Spess

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das umleiten ist ja nicht das problem :)

das geht mit

echo %%g > nul


mein problem ist ja, in der for schleife die meine text.txt ausliest 
(parst) einen gewissen abschnitten (markiert mit einem keywort) 
rauszuschneiden, aber dann bei einem zweiten keywort, wieder zurueck zum 
eigentlichen auslesen zurueckzukehren....

Autor: Matt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, batch-Programmierung ist seeehr lange her

irgendwie so ähnlich?

DATEI="blafasel.txt"

for ... do (
    if %%g==keyword1 (DATEI="nul")
    if %%g==keyword2 (DATEI="blafasel.txt")
    echo %%g >> $DATEI
)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.