Ich benutze einen DB-Compiler und habe Probleme Zahlen-
Ergebnisse FORMATIERT , d.h. mit den gewünschten Spaltenabständen, in eine Textdatei zu bekommen. Mit ?? Chr(9) bekommt man einen Tabulator im Abstand von 8 Spalten. Ich würde gerne diese Tabulatorweite in der Textdatei reduzieren, bekomme aber nicht die richtige Esc Sequenz „gebacken“. Es gibt Schlaumeier , die auf die Hp PCL verweisen.
Habe ich auch versucht (abgesehen davon, dass von Tabulator-Modifikation dort nichs geschrieben steht).
Es gibt sicher Freaks , die mir helfen könnten die Tabulatorschrittweite zu justiern (ohne dass die Steuerzeichen
gedruckt bzw. ausgegeben werden, evtl geht sowas
auch gar nicht, daran glaube ich indes nicht)
Mahlzeit,
Ich benutze einen DB-Compiler
welchen? Welches RDBMS? Wenn du allgemeine Informationen gibst, wirst du auch nur allgemeine Infos bekommen.
Mit ?? Chr(9)
bekommt man einen Tabulator im Abstand von 8 Spalten.
Nein. Man bekommt einfach nur ein Tabulatorzeichen.
Die Spaltendarstellung ist Sache der Betrachtung. Gute Texteditoren bieten dir die Möglichkeit, die Tabulatorbreite zu definieren. Du wirst sehen: ohne Änderung der Datei sieht sie je nach Spaltenbreite ganz anders aus.
Es
gibt Schlaumeier , die auf die Hp PCL verweisen.
Hmmm. Wenn ich das hier lese, weiß ich nicht, ob ich weiterhelfen möchte. Warum bist du auf Helfer aggressiv?
Gruß
Sancho
Hallo erstmal,
ich komme noch nicht so ganz hinter dein Problem. Willst Du einfach nur, dass in allen Zeilen alle Werte identisch untereinanderstehen, oder brauchst Du eine Druckausgabe mit Druckersteuerzeichen?
So oder so, ich würde hierbei nicht über Tabulatoren arbeiten. Viel einfacher und besser ist es, pro Zeile einen kompletten String mit Leerzeichen als Füller zu bilden und dann die komplette Zeile in die Datei zu schreiben. Dazu gibt es grundsätzlich zwei mögliche Varianten. Entweder Du formatierst gleich die Datenfelder entsprechend breit und klebst die dann aneinander, oder Du bestimmst die Länge des einzelnen Datenfeldes und füllst dann mit zusätzlichen Leerstellen auf.
Gruß vom Wiz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
So oder so, ich würde hierbei nicht über Tabulatoren arbeiten.
Viel einfacher und besser ist es, pro Zeile einen kompletten
String mit Leerzeichen als Füller zu bilden und dann die
komplette Zeile in die Datei zu schreiben. Dazu gibt es
grundsätzlich zwei mögliche Varianten. Entweder Du formatierst
gleich die Datenfelder entsprechend breit und klebst die dann
aneinander, oder Du bestimmst die Länge des einzelnen
Datenfeldes und füllst dann mit zusätzlichen Leerstellen auf.Gruß vom Wiz
Hallo Wiz,
vielen Dank erstmal für den konstruktiven Beitrag. Ich skizziere nochmal das Problem. Ich schreibe Ergebnisse in eine Texdatei. Bsp.
? "Rendite SEGMENT b1 : "
?? tranform(R1, "@E,„999.99“) // neue Zeile
? "RENDITE SEGMENT B2 : "
?? Transform(R2, "@E, „999.99“)
Obwohl beide Zeilen diesselbe Anzahl Zeichen aufweisen, werden diese Zeilen in Windows bei Auswahl einer Schriftart (Truetype) wie Times New Roman versetzt angezeigt. Dies wohl liegt daran, dass die Zeichen nicht proportional sind, d.h. das b ist kürzer wie das B. Bei Proportionalschrift kein Problem (Schriftart Courier New oder Terminal),aber darauf muss der User erstmal kommen. Bei Angabe eines Tabulators wird in der Tat eine feste Position angesteuert, die Schrittweite ist allerdings am Bildschirm auf 8 Spalten festgelegt. D.h. das Bsp.
? "Rendite SEGMENT b1 : "
?? chr(9)
?? transform(R1, "@E,„999.99“) // neue Zeile
? "RENDITE SEGMENT B2 : "
?? chr(9)
?? Transform(R2, "@E, „999.99“)
führt zu einer bündigen und formatierten Ausgabe, die allerdings durch die 8 Spalten weite des Tabs etwas arg auseinander gezogen wird.
Tipps nehme ich gerne entgegen.
Hallo nochmal,
OK, jetzt verstehe ich was Du meinst. Allerdings gibt es für diese Problematik keine richtige Lösung. D.h. wenn sich jemand eine Textdatei auf dem Bildschirm mit einem x-beliebigen Viewer ansieht, kannst Du nie wissen, ob dieser einen Proportionalfont eingestellt hat oder nicht. Und es gibt auch keine Möglichkeit dies sauber von außen bzw. innerhalb der Datei zu beeinflussen. Denn auch die Standard-Tabs aus alten DOS-Zeiten (mit den unveränderbaren 8 Spalten) wären ja nur die halbe Miete, weil in einem proportionalen Fond die Zahlen auch nicht unbedingt alle gleich breit sein müssen und Texte ohnehin wieder flattern und hierbei gerne auch mal Tabs mitreißen. Sauber klappt die Sache wirklich nur mit einem unproportionalen Font, und bei dem kannst Du mit Leerzeichen dann auch beliebige Abstände setzten.
Alternativ kann man natürlich den Weg eines eigenen Viewers bzw. entsprechend formatierter Berichte nutzen, wenn dies möglich ist. Da bestimmt man dann die Spalten grafisch und bekommt hinterher eine saubere Anzeige.
Etwas aufwändiger, aber vielleicht machbar, wäre natürlich auch der Export im CSV/XLS-Format mit Darstellung in Excel, oder als Worddokument mit passender Font-Angabe oder die Erzeugung einer PS-Datei mit Umwandlung in PDF, …
Gruß vom Wiz
vielen Dank erstmal für den konstruktiven Beitrag. Ich
skizziere nochmal das Problem. Ich schreibe Ergebnisse in eine
Texdatei. Bsp.
? "Rendite SEGMENT b1 : "
?? tranform(R1, "@E,„999.99“) // neue Zeile
? "RENDITE SEGMENT B2 : "
?? Transform(R2, "@E, „999.99“)
Obwohl beide Zeilen diesselbe Anzahl Zeichen aufweisen, werden
diese Zeilen in Windows bei Auswahl einer Schriftart
(Truetype) wie Times New Roman versetzt angezeigt. Dies wohl
liegt daran, dass die Zeichen nicht proportional sind, d.h.
das b ist kürzer wie das B. Bei Proportionalschrift kein
Problem (Schriftart Courier New oder Terminal),aber darauf
muss der User erstmal kommen. Bei Angabe eines Tabulators wird
in der Tat eine feste Position angesteuert, die Schrittweite
ist allerdings am Bildschirm auf 8 Spalten festgelegt. D.h.
das Bsp.
? "Rendite SEGMENT b1 : "
?? chr(9)
?? transform(R1, "@E,„999.99“) // neue Zeile
? "RENDITE SEGMENT B2 : "
?? chr(9)
?? Transform(R2, "@E, „999.99“)
führt zu einer bündigen und formatierten Ausgabe, die
allerdings durch die 8 Spalten weite des Tabs etwas arg
auseinander gezogen wird.
Tipps nehme ich gerne entgegen.
Einen hab ich noch: XML owT
Was mich nun allerdings wundert :
Ich habe vorhin eine DPG-Textdatei (Deutsche Performance Messgesellschaft) angeschaut. Die Zeilen dieser Datei
stehen wie ne Eins und die Spalten verrutschen auch nicht bei Wahl
einer anderen Schriftart !!!??
Es ist auch kein Problem die Felder dieser Textdatei in
meine Datenbank zu transferieren (low level Funktionen).
Also was wird da an der Formatierung geschraubt ,was ich offenbar
bei meiner Ausgabe in eine Textdatei nicht in die Reihe bekomme ??
Wird ja immer nebulöser det Janze
.
Anm. Die DPG Datei besteht aus Zeilen mit 80 Spalten (Datenfelder
enthaltend).
Hallo nochmal,
ohne die Datei zu kennen kann ich da nur mutmaßen. Entweder enthält die Datei keine Buchstaben, oder zumindest pro Zeile nur identische Texte, oder es ist doch keine normale Textdatei. Auch bei proportionalen Schriftarten laufen die Zahlzeichen üblicherweise gleich weit. D.h. wenn nur Zahlen gleicher Länge vorkommen und diese mit einer identischen Zahl von Leerzeichen pro Zeile getrennt sind, dann habe ich auch in einer proportionalen Schrift üblicherweise eine anständige Darstellung. Dabei ich zusätzlich pro Zeile auch noch identische Texte, laufen deren Buchstaben zwar innerhalb der Zeile unterschiedlich weit, aber man merkt natürlich von Zeile zu Zeile keine Unterschiede. Erst wenn unterschiedliche Texte pro Zeile verwendet werden, merkt man dann die Unterschiede zwischen den proportionalen und unproportionalen Fonts.
Kleines Beispiel:
unproportional
12345.67890
12345.67890
11111.22222
99999.99999
12345.67890 The quick brown fox ... 12345.67890
12345.67890 The quick brown fox ... 12345.67890
12345.67890 Mary has a little lamb 12345.67890
99999.99999 Mary has a little lamb 12345.67890
proportional
12345.67890
12345.67890
11111.22222
99999.99999
12345.67890 The quick brown fox … 12345.67890
12345.67890 The quick brown fox … 12345.67890
12345.67890 Mary has a little lamb 12345.67890
99999.99999 Mary has a little lamb 12345.67890
Du siehst, dass nur der zwar gleich lange, aber aus unterschiedlichen Buchstaben bestehende Text in der proportionalen Schrift für Verschiebungen sorgt.
Wenn es nichts zu geheimes ist (ohne den Zusammenhang fängt man mit Daten ja üblicherweise nichts an), kannst Du mir ja mal einige Dateien zumailen.
Gruß vom Wiz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
wie Sancho schon sagte, besteht der Tabulator in einer Textdatei nur aus einem Zeichen (ASCII-Code 9, so hast Du die Ausgabe ja auch programmiert). Der Texteditor macht dann daraus die Tabulatorposition am Bildschirm (üblicherweise alle 8 Zeichen).
In bestimmten Textverarbeitungen kannst Du die Tabulatorbreite individuell einstellen. Dies gilt dann jedoch nur für die aktuelle Anzeige des Dokuments, am Inhalt der Datei ändert sich nichts!
Schau Dir z.B. mal das Programm Notepad++ an. Dort kannst Du die Tabulatorbreite beliebig einstellen oder den Tabulatorsprung durch Leerzeichen ersetzen.
Gruß,
Christoph