ASCII Codepage

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Lutz Rübe
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 144
Registriert: Mi, 02. Aug 2006 18:13
Wohnort: 24536 Neumünster
Danksagung erhalten: 6 Mal
Kontaktdaten:

ASCII Codepage

Beitrag von Lutz Rübe »

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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

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
:grommit:
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.
Benutzeravatar
Lutz Rübe
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 144
Registriert: Mi, 02. Aug 2006 18:13
Wohnort: 24536 Neumünster
Danksagung erhalten: 6 Mal
Kontaktdaten:

ASCII CodePage

Beitrag von Lutz Rübe »

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]
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Lutz,
vielen Dank für Deine Vorstellung!
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"
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.

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Lutz Rübe
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 144
Registriert: Mi, 02. Aug 2006 18:13
Wohnort: 24536 Neumünster
Danksagung erhalten: 6 Mal
Kontaktdaten:

Beitrag von Lutz Rübe »

Hallo Martin,
so spät am abend so schwere aufgaben für mich.... :wink:
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
Und hier jetzt der Code, der gedruckt werden soll: im Notepad wird es mit "Sonderzeichen" dargestellt:

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") + " ³"
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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

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:

Code: Alles auswählen

@ x, LiRa SAY "³"+STR(i,4)+" ³"+kz+" "+LEFT(ALLTRIM(stnr)+"  ",4)+"³"+SPACE(20)+" ³"
einfach:

Code: Alles auswählen

@ x, LiRa SAY ConvToAnsiCP("³"+STR(i,4)+" ³"+kz+" "+LEFT(ALLTRIM(stnr)+"  ",4)+"³"+SPACE(20)+" ³")
Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

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.
Hi Lutz,

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
Benutzeravatar
Lutz Rübe
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 144
Registriert: Mi, 02. Aug 2006 18:13
Wohnort: 24536 Neumünster
Danksagung erhalten: 6 Mal
Kontaktdaten:

ASCII Codepage

Beitrag von Lutz Rübe »

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: ASCII Codepage

Beitrag von AUGE_OHR »

hi,
Lutz Rübe hat geschrieben: jedoch bekomme ich die Sonderzeichen (Beispiel:)
+-----------------------------------
¦ l ¦ ¦
+-----+------+---------------------+
nicht angedruckt, sondern "nur" ---- und |, welche mir überhaupt nicht weiterhelfen.
du solltest unter "Windows" nicht die "Zeichen" direkt sondern die
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
klar das deine Fonts > 128 die entsprechenden Zeichen auch
haben muss.
Lutz Rübe hat geschrieben: ... jedoch ist die Schriftart zu groß
...
GraphicPrinter:setFont("9.Courier New")
hm ... schon mal in die FONT.CH geguckt ? Du solltest zum drucken
eine von "den" Fonts benutzen, alles andere "könnte" auf dem nächsten
Drucker "komisch" aussehen (wenn nix mehr passt).
Lutz Rübe hat geschrieben: im Notepad wird es mit "Sonderzeichen" dargestellt:
Das Notepad macht ANSI, sodas deine "Sonderzeichen" darin
dann "komisch" aussehen.

alternative solltest du dir dir BOX.CH mal ansehen ob du mit den
"Linien" was anfangen kannst.

gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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:

Beitrag von Koverhage »

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 ;-)
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

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.
Hi,

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 8)
Gruß
Hubert
Benutzeravatar
Schubi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 139
Registriert: Mi, 05. Okt 2005 15:10
Wohnort: Wiesloch
Hat sich bedankt: 5 Mal

Re: ASCII Codepage

Beitrag von Schubi »

Hallo Lutz,
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 ?
Schon mal "MS Linedraw" als Font versucht?
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
Antworten