Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 21.08.2022, 19:50 Titel: Sonderzeichenproblem bei Ausdruck auf den Drucker |
|
|
Nachdem ihr mir das Problem der Darstellung der Sonderzeichen in der Console so schön gelöst habt komme ich jetzt mit dem nächsten Sonderzeichenproblem:
In meinen Dateien gibt es Namen und Bezeichnungen mit Sonderzeichen die ich ausdrucken möchte. Dabei zeigt sich aber, dass hier die Codeumsetzung die ich für die Console verwende nicht hilft.
Ein paar Beispiele:
Der Name heißt richtig "Am schönen Bronnen",
in der CSV-Datei steht ""Am schönen Bronnen"" (mit je 2 "),
in der von mir erzeugten Datei steht ""Am schönen Bronnen""
Console nach Umwandlung der Umlaute "Am schönen Bronnen"
Beim ersten Ausdruck am Drucker wurde es so gedruckt wie der Name gespeichert ist: ""Am schönen Bronnen""
Dann habe ich die
sub ersetzeUmlaute(byref text as string)
angepasst indem ich
text = ersetzeZeichenkette(text, chr(199, 244), chr(148))
ergänzt habe.
Allerdings war das Ergebnis jetzt "Am sch"nen Bronnen"
Gibt es dafür auch Umwandlungsmöglichkeiten? _________________ Grüße
kilix |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4531 Wohnort: ~/
|
Verfasst am: 22.08.2022, 10:42 Titel: |
|
|
Wenn der Drucker einen ANSI-Zeichensatz verwendet (schätze ich mal, aber ich kenne mich da nicht aus), könntest du versuchen, diesen String auszudrucken
Code: | dim as string teststring = ""
for i as integer = 33 to 254
teststring &= chr(i)
next
lprint teststring |
und auszuzählen, an welchen Positionen sich die (hoffentlich auftretenden) Umlaute befinden. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 22.08.2022, 13:46 Titel: |
|
|
Danke für den raschen Hilfeversuch, aber da bekomme ich die folgende Fehlermeldung:
Build-Fehler:
F:\SVS\Programtst\Code Beispiele\teststring.bas(5) error 146: Only valid in -lang deprecated or fblite or qb, found 'lprint' in 'lprint teststring'
Ich hatte es inzwischen mit dem folgenden Programm probiert (allerdings hatte ich zuerst For I = 1 TO 255, da brachte er von I=1 bis 26 nur Punkte und ein Herz und brach nach 26 ab). Mit deinem Grenzen von 33 bis 255 hatte ich Erfolg:
Code: |
DIM AS ULONG I, fd = FREEFILE
OPEN "\SVS\QBDruck\Testdruck.txt" FOR OUTPUT AS #fd
'
PRINT #fd, "$DO USEFONT Drafting* Mono Medium,18,0"
PRINT #fd,
FOR I = 33 to 254
PRINT #fd, STR(I),CHR(I)
NEXT
CLOSE #fd
SHELL "\SVS\QBDruck\rghdruck.exe \SVS\QBDruck\Testdruck.txt"
END
|
Offenbar wurde LPRINT nicht verstanden. Mit der Verwendung des von mir gefundenen Drucksystems RGHDRUCK bekam ich eine Liste der Zeichen. Jetzt kann ich doch die für die Konsole verwendete SUB ersetzeUmlaute für den Drucker umschreiben. Die Inpiutcodes aus den Dateien sind die gleichen, ich muss eigentlich nur die Outputcodes lt. meiner Liste einsetzen.
Ich werde berichten. _________________ Grüße
kilix |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 22.08.2022, 14:22 Titel: |
|
|
JA, das war die Lösung! _________________ Grüße
kilix |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4531 Wohnort: ~/
|
Verfasst am: 22.08.2022, 14:54 Titel: |
|
|
Ja, LPRINT war früher ein Druckerausgabebefehl, den gibt es aber in -lang fb nicht mehr (habe ich offensichtlich auch vor zehn Jahren in die Referenz geschrieben - ich mache mir mal eine geistige Notiz).
Hinter den ASCII-Zeichen 0-31 verstecken sich Steuerzeichen (z. B. auch Zeilenvorschub), die ich bewusst ausgenommen habe, damit nicht versehentlich irgendwelche Steuerbefehle geschickt werden, die den weiteren Ausdruck durcheinander bringen. ASCII-Zeichen 27 ist das Escape-Zeichen und vielleicht auch heute noch Startzeichen der Escape-Sequenzen zur Druckersteuerung. (Das würde erklären, warum dein Programm nach Zeichen "abgebrochen" ist - hätte aber auch sein können, dass ab sofort nur noch Unsinn gedruckt wird; ich hatte da früher manchmal ... lustige Ergebnisse.) ASCII-Zeichen 32 ist das Leerzeichen und das erste druckbare Zeichen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
kilix
Anmeldungsdatum: 05.02.2022 Beiträge: 175
|
Verfasst am: 26.08.2022, 17:03 Titel: |
|
|
LPRINT ist mir von früher uch noch in Erinnerung
Die Ascii-Werte bis 32 hab ich mir angesehen, die kann man hier sicher überspringen.
Ich bin froh, dass ich die SUB ersetzeUmlaute so leicht für den Drucke anpassen konnte. Ich habe mir auf jeden Fall die Liste der Zeichen, die der Drucken den Ascii-Werten zuordnet aufgehoben, die werde ich sicher noch brauchen. _________________ Grüße
kilix |
|
Nach oben |
|
 |
|