Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sonderzeichenproblem bei Ausdruck auf den Drucker

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 21.08.2022, 19:50    Titel: Sonderzeichenproblem bei Ausdruck auf den Drucker Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 22.08.2022, 10:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 22.08.2022, 13:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 22.08.2022, 14:22    Titel: Antworten mit Zitat

JA, das war die Lösung!
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 22.08.2022, 14:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 26.08.2022, 17:03    Titel: Antworten mit Zitat

LPRINT ist mir von früher uch noch in Erinnerung lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz