ASCII Codepage
Moderator: Moderatoren
- Lutz Rübe
- Rekursionen-Architekt
- Beiträge: 144
- Registriert: Mi, 02. Aug 2006 18:13
- Wohnort: 24536 Neumünster
- Danksagung erhalten: 6 Mal
- Kontaktdaten:
ASCII Codepage
Hallo alle miteinander,
ich bin ein "frischling" unter den xBase++ Programmierern und habe nur wenig bzw. noch keine Erfahrungen Klassen und Methoden. Mein Problem sieht folgendermassen aus:
ich benötige Ausdrucke mit kleineren, monospaced Schriften als die Standardschrift "Courier 12". Dabei benötige ich die graphischen ASCII Sonderzeichen ab chr(192) und größer. Drucke ich in eine Datei
set printer TO &cFile
set device TO printer
werden sie ordnungsgemäß gedruckt, jedoch ist die Schriftart zu groß.
Benutze ich die XbpPrinter Klasse, habe ich zwar die richtige Schriftart
GraphicPrinter:setFont("9.Courier New")
jedoch bekomme ich die Sonderzeichen (Beispiel:)
┌─────┬──────┬─────────────────────┬
│ l │ │
├─────┼──────┼─────────────────────┼
nicht angedruckt, sondern "nur" ---- und |, welche mir überhaupt nicht weiterhelfen.
Muß ich irgendwie / irgendwo auf einen ASCII Zeichensatz umstellen ? Wenn ja, wie und wo ?
Danke
ich bin ein "frischling" unter den xBase++ Programmierern und habe nur wenig bzw. noch keine Erfahrungen Klassen und Methoden. Mein Problem sieht folgendermassen aus:
ich benötige Ausdrucke mit kleineren, monospaced Schriften als die Standardschrift "Courier 12". Dabei benötige ich die graphischen ASCII Sonderzeichen ab chr(192) und größer. Drucke ich in eine Datei
set printer TO &cFile
set device TO printer
werden sie ordnungsgemäß gedruckt, jedoch ist die Schriftart zu groß.
Benutze ich die XbpPrinter Klasse, habe ich zwar die richtige Schriftart
GraphicPrinter:setFont("9.Courier New")
jedoch bekomme ich die Sonderzeichen (Beispiel:)
┌─────┬──────┬─────────────────────┬
│ l │ │
├─────┼──────┼─────────────────────┼
nicht angedruckt, sondern "nur" ---- und |, welche mir überhaupt nicht weiterhelfen.
Muß ich irgendwie / irgendwo auf einen ASCII Zeichensatz umstellen ? Wenn ja, wie und wo ?
Danke
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Lutz,
herzlich willkommen - es wäre schön, wenn Du Dich kurz in dem entsprechenden Forum Guten Tag, mein Name ist ... und ich bin Programmierer vorstellen könntest.
Zu Deinem Problem: Wahrscheinlich arbeitest Du mit dem OEM-Zeichensatz?
Wenn ja, dann versuche doch mal statt die Zeichenkette direkt auf dem Drucker auszugeben, die Zeichenkette vorher mit ConvToAnsiCP() umzuwandeln (also GraStringAt( ..., ConvToAnsiCP("öüäß")) zu verwenden).
Viele Grüße,
Martin
herzlich willkommen - es wäre schön, wenn Du Dich kurz in dem entsprechenden Forum Guten Tag, mein Name ist ... und ich bin Programmierer vorstellen könntest.
Zu Deinem Problem: Wahrscheinlich arbeitest Du mit dem OEM-Zeichensatz?
Wenn ja, dann versuche doch mal statt die Zeichenkette direkt auf dem Drucker auszugeben, die Zeichenkette vorher mit ConvToAnsiCP() umzuwandeln (also GraStringAt( ..., ConvToAnsiCP("öüäß")) zu verwenden).
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Lutz Rübe
- Rekursionen-Architekt
- Beiträge: 144
- Registriert: Mi, 02. Aug 2006 18:13
- Wohnort: 24536 Neumünster
- Danksagung erhalten: 6 Mal
- Kontaktdaten:
ASCII CodePage
Hallo Martin,
danke für Deine schnelle Antwort. Natürlich hattest Du recht, dass eine Selbstdarstellung fehlt. Da dies aber mein erstes Forum ist, welches ich aktiv nutzen möchte und werde, war mir diese Gepflogenheit neu und ich wollte nicht alles in meine Anfrage reinstellen.
Zu meinem Problem: nach Deinem Vorschlag müßte ich da nicht jedes Zeichen einzeln, beim jeweiligen Druckaufruf umwandeln ? oder kann ich das auch irgendwo in einer #Include datei oder prozedur "vorbereiten"
Gruß
Lutz[/list]
danke für Deine schnelle Antwort. Natürlich hattest Du recht, dass eine Selbstdarstellung fehlt. Da dies aber mein erstes Forum ist, welches ich aktiv nutzen möchte und werde, war mir diese Gepflogenheit neu und ich wollte nicht alles in meine Anfrage reinstellen.
Zu meinem Problem: nach Deinem Vorschlag müßte ich da nicht jedes Zeichen einzeln, beim jeweiligen Druckaufruf umwandeln ? oder kann ich das auch irgendwo in einer #Include datei oder prozedur "vorbereiten"
Gruß
Lutz[/list]
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Lutz,
vielen Dank für Deine Vorstellung!
Viele Grüße,
Martin
vielen Dank für Deine Vorstellung!
Da sind mehrere Möglichkeiten denkbar - am besten postest Du einfach mal ein bischen von Deinem Code und dann finden wir vielleicht eine einfache Möglichkeit.Lutz Rübe hat geschrieben:Zu meinem Problem: nach Deinem Vorschlag müßte ich da nicht jedes Zeichen einzeln, beim jeweiligen Druckaufruf umwandeln ? oder kann ich das auch irgendwo in einer #Include datei oder prozedur "vorbereiten"
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Lutz Rübe
- Rekursionen-Architekt
- Beiträge: 144
- Registriert: Mi, 02. Aug 2006 18:13
- Wohnort: 24536 Neumünster
- Danksagung erhalten: 6 Mal
- Kontaktdaten:
Hallo Martin,
so spät am abend so schwere aufgaben für mich....
also, hier der code für die Device-Auswahl:
Und hier jetzt der Code, der gedruckt werden soll: im Notepad wird es mit "Sonderzeichen" dargestellt:
So werden die Zeichen in Notepad dargestellt. Aber als Ausdruck hätte ich gerne die Box-Zeichen... wie ich sie in meiner ersten Anfrage dargestellt habe. ich brauche eine monospaced-schrift ( "tabellarische darstellung") und unterschiedliche schriftgrößen (z.b.: "9.Courier New")
Bei Ausdruck in eine Datei (druck = "A") werden diese zeichen wie gewünscht dargestellt, aber leider läßt sich die schriftgröße / schriftart nicht ändern.
Danke für deinen Aufwand,
viele Grüße
Lutz
so spät am abend so schwere aufgaben für mich....
also, hier der code für die Device-Auswahl:
Code: Alles auswählen
DO CASE
CASE druck="D"
GraphicPrinter := MyPrinter():NEW()
GraphicPrinter:setFont(cFont)
CASE druck="A"
GraphicPrinter := NIL
SET PRINTER TO tag_OEM.txt
set device TO printer
ENDCASE
Code: Alles auswählen
@ xx+7,LiRa+69 SAY "Tages- ³"
@ xx+8,LiRa SAY "³ ³ ³ ³ ³ ³ ³ ³ergebnis³"
@ xx+9,LiRa SAY "ÃÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´"
x:=xx+10
ctr:=0
DO WHILE x < v_zhl .AND. .NOT. EOF() .AND. i<=max
** kz=IIF(einzel->frau="D","*"," ")
kz=IIF(einzel->frau="D","D"," ")
DO CASE
CASE na="J"
@ x, LiRa SAY "³"+STR(i,4)+" ³"+kz+" "+ ;
LEFT(ALLTRIM(stnr)+" ",4)+"³"+LEFT(RTRIM(einzel->name)+ ;
", "+einzel->vname+" ",20)+" ³"
CASE na<>"J"
@ x, LiRa SAY "³"+STR(i,4)+" ³"+kz+" "+LEFT(ALLTRIM(stnr)+" ",4)+"³"+SPACE(20)+" ³"
ENDCASE
zz:=1
nCol := LiRa + 37
DO WHILE (-1+beg+zz)<=nEnd
sx:=f_var("S",-1+beg+zz,15)
@ x,nCol SAY TRANSFORM( &sx, "@E 9,999") + " ³"
zz:=zz+1
nCol := nCol + 8
ENDDO
IF nCol<69 /* Beginn von IF */
@ x,LiRa+67 SAY "³"
ENDIF /* Ende von Endif */
@ x,LiRa+70 SAY TRANSFORM(&tt, "@E 9,999") + " ³"
Bei Ausdruck in eine Datei (druck = "A") werden diese zeichen wie gewünscht dargestellt, aber leider läßt sich die schriftgröße / schriftart nicht ändern.
Danke für deinen Aufwand,
viele Grüße
Lutz
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Lutz,
am einfachsten wäre es natürlich, wenn Du auf einen echten Presentationspace umstellen würdest und nicht mehr Hybrid, sondern echt-GUI gingest - dann könntest Du mit GraStringAt() Deinen Text ausgeben und mit GraBox() bzw. GraLine() Rahmen und Linien malen.
Was passiert denn, wenn Du Deine Strings, die Du mit say ausgibst, vorher in ConvToAnsiCP() schickst?
Also z.B. statt:
einfach:
Viele Grüße,
Martin
am einfachsten wäre es natürlich, wenn Du auf einen echten Presentationspace umstellen würdest und nicht mehr Hybrid, sondern echt-GUI gingest - dann könntest Du mit GraStringAt() Deinen Text ausgeben und mit GraBox() bzw. GraLine() Rahmen und Linien malen.
Was passiert denn, wenn Du Deine Strings, die Du mit say ausgibst, vorher in ConvToAnsiCP() schickst?
Also z.B. statt:
Code: Alles auswählen
@ x, LiRa SAY "³"+STR(i,4)+" ³"+kz+" "+LEFT(ALLTRIM(stnr)+" ",4)+"³"+SPACE(20)+" ³"
Code: Alles auswählen
@ x, LiRa SAY ConvToAnsiCP("³"+STR(i,4)+" ³"+kz+" "+LEFT(ALLTRIM(stnr)+" ",4)+"³"+SPACE(20)+" ³")
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi Lutz,Bei Ausdruck in eine Datei (druck = "A") werden diese zeichen wie gewünscht dargestellt, aber leider läßt sich die schriftgröße / schriftart nicht ändern.
wenn du in eine Datei druckst, mußt du auch die Steuerzeichen für deinen Drucker mit drucken, die diesen auf 12 oder 17 cpi umstellen. Wenn du dann diese Datei mit copy file dateiname to lpt1 sendest, müßte er korrekt drucken, falls er das kann, aber wie schon öffters beschrieben können das die neuen Drucker nicht mehr.
Dagegen ist das Drucken mit Linien und verschiedenen Schriften z.B. auch Symboltypen oder aber GIF und JPG mit den XbpPrinter (insbesondere mit meiner Druckerklasse) ein Kinderspiel ! Und das auf jedem Windowsdrucker !
Die Zeiten für DOS Druck ist vorbei.
Gruß
Hubert
Hubert
- Lutz Rübe
- Rekursionen-Architekt
- Beiträge: 144
- Registriert: Mi, 02. Aug 2006 18:13
- Wohnort: 24536 Neumünster
- Danksagung erhalten: 6 Mal
- Kontaktdaten:
ASCII Codepage
Hallo Martin,
leider hat es nicht geklappt. Ich habe mittlerweile festgestellt, dass die von mir gewünschten Sonderzeichen von ANSI nicht unterstützt werden. Dann muß ich halt vorläufig mit den "-" und "+" und "|" Zeichen im Ausdruck leben müssen, bis ich die Umstellung auf die XbpPrinter Class in Angriff nehmen kann. Zur Zeit stehe ich da etwas unter Zeitdruck.
Hallo Hubert,
danke für Deinen Tipp, hört sich leichter an, als es für mich als Neuling ist. Wie oben beschrieben, bin ich etwas unter Zeitdruck und muß dieses Thema ruhen lassen, bis ich etwas mehr Zeit habe...
Übrigens: LPT1 ist ja mein Problem, da kann und will ich nicht mehr drucken, sondern auf USB oder jeden anderen möglichen Druckeranschluß.
Vielen Dank erst mal für eure Bemühungen
Viele Grüße
Lutz
leider hat es nicht geklappt. Ich habe mittlerweile festgestellt, dass die von mir gewünschten Sonderzeichen von ANSI nicht unterstützt werden. Dann muß ich halt vorläufig mit den "-" und "+" und "|" Zeichen im Ausdruck leben müssen, bis ich die Umstellung auf die XbpPrinter Class in Angriff nehmen kann. Zur Zeit stehe ich da etwas unter Zeitdruck.
Hallo Hubert,
danke für Deinen Tipp, hört sich leichter an, als es für mich als Neuling ist. Wie oben beschrieben, bin ich etwas unter Zeitdruck und muß dieses Thema ruhen lassen, bis ich etwas mehr Zeit habe...
Übrigens: LPT1 ist ja mein Problem, da kann und will ich nicht mehr drucken, sondern auf USB oder jeden anderen möglichen Druckeranschluß.
Vielen Dank erst mal für eure Bemühungen
Viele Grüße
Lutz
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: ASCII Codepage
hi,
Cl*pper CHR(xxx) "Zeichen" verwenden. Also Box-Zeichen
klar das deine Fonts > 128 die entsprechenden Zeichen auch
haben muss.
eine von "den" Fonts benutzen, alles andere "könnte" auf dem nächsten
Drucker "komisch" aussehen (wenn nix mehr passt).
dann "komisch" aussehen.
alternative solltest du dir dir BOX.CH mal ansehen ob du mit den
"Linien" was anfangen kannst.
gruss by OHR
Jimmy
du solltest unter "Windows" nicht die "Zeichen" direkt sondern dieLutz Rübe hat geschrieben: jedoch bekomme ich die Sonderzeichen (Beispiel:)
+-----------------------------------
¦ l ¦ ¦
+-----+------+---------------------+
nicht angedruckt, sondern "nur" ---- und |, welche mir überhaupt nicht weiterhelfen.
Cl*pper CHR(xxx) "Zeichen" verwenden. Also Box-Zeichen
Code: Alles auswählen
218 196 194 191
179 179 179
195 197 180
192 196 193 217
haben muss.
hm ... schon mal in die FONT.CH geguckt ? Du solltest zum druckenLutz Rübe hat geschrieben: ... jedoch ist die Schriftart zu groß
...
GraphicPrinter:setFont("9.Courier New")
eine von "den" Fonts benutzen, alles andere "könnte" auf dem nächsten
Drucker "komisch" aussehen (wenn nix mehr passt).
Das Notepad macht ANSI, sodas deine "Sonderzeichen" darinLutz Rübe hat geschrieben: im Notepad wird es mit "Sonderzeichen" dargestellt:
dann "komisch" aussehen.
alternative solltest du dir dir BOX.CH mal ansehen ob du mit den
"Linien" was anfangen kannst.
gruss by OHR
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hallo Hubert,
Du screibst:
>
Die Zeiten für DOS Druck ist vorbei.
>
Das würde ich so nicht sagen. Wir nutzen den DOS Druck sehr intensiv (bei Nadeldruckern), allerdings wird der Druckjob nicht direkt an den Drucker bzw. Port gesendet, sondern über den Windows-Spooler an den Drucker gesendet, sodaß auch eine Auswahl des Druckers, etc. möglich ist.
Dachte Du wärst im Urlaub
Du screibst:
>
Die Zeiten für DOS Druck ist vorbei.
>
Das würde ich so nicht sagen. Wir nutzen den DOS Druck sehr intensiv (bei Nadeldruckern), allerdings wird der Druckjob nicht direkt an den Drucker bzw. Port gesendet, sondern über den Windows-Spooler an den Drucker gesendet, sodaß auch eine Auswahl des Druckers, etc. möglich ist.
Dachte Du wärst im Urlaub
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,Koverhage hat geschrieben:Das würde ich so nicht sagen. Wir nutzen den DOS Druck sehr intensiv (bei Nadeldruckern), allerdings wird der Druckjob nicht direkt an den Drucker bzw. Port gesendet, sondern über den Windows-Spooler an den Drucker gesendet, sodaß auch eine Auswahl des Druckers, etc. möglich ist.
DOS Druck bei Nadeldruckern macht wirklich Sinn, da diese im Grafikmodus nicht richtig drucken können (lahm und sieht schlecht aus). Diese Ausnahme habe ich aber nicht erwähnt, da die Nadeldrucker bis auf wenige Spezialaufgaben nicht mehr existent sind.
PS: Ich habe ab Montag Urlaub, bis dahin muß ich im Büro noch schuften um die 'letzten Wünsche' zu erfüllen fast wie an Weihnachten, auf den letzten Drücker haben alle noch dringende Aufgaben
Ab Montag bin ich dann zu Hause. Dann gibt es Radfahren, Wandern, Walken, Schwimmen damit Frau und Hund zufrieden sind und abends am Computer das nachzuholen, was die ganze Zeit liegen geblieben ist
Gruß
Hubert
Hubert
- Schubi
- Rekursionen-Architekt
- Beiträge: 139
- Registriert: Mi, 05. Okt 2005 15:10
- Wohnort: Wiesloch
- Hat sich bedankt: 5 Mal
Re: ASCII Codepage
Hallo Lutz,
Den habe ich in meinen "Windows-Anfangszeiten" für solche Drucke benutzt.
Wenn Du den Font unter Google nicht findest, schick mir eine Mail.
Schon mal "MS Linedraw" als Font versucht?Lutz Rübe hat geschrieben: Benutze ich die XbpPrinter Klasse, habe ich zwar die richtige Schriftart
GraphicPrinter:setFont("9.Courier New")
jedoch bekomme ich die Sonderzeichen (Beispiel:)
┌─────┬──────┬─────────────────────┬
│ l │ │
├─────┼──────┼─────────────────────┼
nicht angedruckt, sondern "nur" ---- und |, welche mir überhaupt nicht weiterhelfen.
Muß ich irgendwie / irgendwo auf einen ASCII Zeichensatz umstellen ? Wenn ja, wie und wo ?
Den habe ich in meinen "Windows-Anfangszeiten" für solche Drucke benutzt.
Wenn Du den Font unter Google nicht findest, schick mir eine Mail.
Grüße Steffen