Autor Beitrag
hansg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 168

Win XP Professional SP3, Vista Ultimate 32 SP1
Delphi 6 Professional
BeitragVerfasst: Fr 10.01.03 18:34 
Hallo,
ich möchte eine Textdatei die alte Dos Zeichen (Rahmenlinie etc.) enthält in ein Richedit laden und ausdrucken, das ganze funktioniert schon.
Das einzige was falsch angezeigt wird sind die Sonderzeichen dafür werden Ö bzw. andere angezeigt.
Wie kann man das heraus filtern?, der Rahmen hat immer die gleiche Größe nur der Textinhalt ändert sich.

Gruß Hans


Zuletzt bearbeitet von hansg am Sa 11.01.03 14:11, insgesamt 1-mal bearbeitet
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Fr 10.01.03 22:17 
kann die Bilder nciht sehen, abgesehen davon, dass ich auch sonst vielleicht keine Lösung wüsste *ggg*

Fiji-Fighter
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Sa 11.01.03 00:52 
Hallo Hans!

Vor einem ähnlichen Problem stehe ich leider auch gerade.
Bei mir ist es ein Programm, das Druckdateien in ESC/P unter Windows ausdrucken soll. Das funzt für Grafik-Druck bestens, aber nicht beim Textdruck.

1. Um einen großen Teil der DOS-Zeichen (ASCII) anzeigen zu können, muß der Canvas des Ausgabemediums ein neues Font-Objekt zugeordnet werden. Dazu gibt es die Windows-API-Funktion CreateFont. Wichtig ist dabei Folgendes: Der Parameter
ausblenden Quelltext
1:
DWORD fdwCharSet,            // character set identifier					

muß mit "OEM_CHARSET" belegt werden. Und natürlich darf nicht vergessen werden, den Font nach Gebrauch mit DeleteObject wieder freizugeben.

2. Das ganze funktioniert nur eingeschränkt! Da Deine Grafiken nicht dargestellt werden, kann ich nicht sagen, ob dies für Dich zutrifft. Leider verwendet Windows die universelle Codepage 850, während die beste DOS-Codepage 437 (USA) ist. 437 enthält einfache und doppelte Linien sowie alle Verknüpfungen (Winkel, T und Kreuz in allen Kombinationen Einfach/Doppelt). 850 hat leider keine Verknüpfungen Einfach/Doppelt! Zusätzlich fehlen die griechischen Buchstaben (z.B. Omega). Insgesamt fand ich 47 Abweichungen!

Alternativ ergibt sich folgende Möglichkeit: Die Linien-Grafikzeichen gemäß ASCII-Tabelle identifizieren und durch MoveTo und LineTo nachbilden, die übrigen Zeichen mit "OemToChar" oder OemToCharBuff" in einen ANSI-String umwandeln und ausgeben. Das klappt natürlich nicht mit den Griechen etc.!

Unter Windows NT soll ggf. etwas mit Unicode gehen. Da ich nur Windows 98 habe, kann ich nur feststellen, daß Unicode auch die Linien fehlerhaft darstellt - "|", "+" und "-" ersetzen die Linien. Aber dann sind wenigstens die Akzent-Buchstaben an den Ecken etc. weg und der Mangel fällt nicht gleich auf - dafür habe ich dann 74 Abweichungen :mrgreen:

Gruß

Dietmar Brüggendiek
hansg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 168

Win XP Professional SP3, Vista Ultimate 32 SP1
Delphi 6 Professional
BeitragVerfasst: Sa 11.01.03 14:08 
Hallo,
konnte nicht antworten da mein Account nicht mehr ging.

Die Zeichen befinden sich immer an der gleichen Position, kann man diese
irgendwie rauskopieren und den übrigen Text in ein 2. Richedit anzeigen?


Gruß Hans
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 11.01.03 14:45 
Hallo Hans!

Ich denke, dass machst du am einfachsten mit der Funktion StringReplace, indem du einfach das nichtgewollte Zeichen durch "" (nix) ersetzt!

Gruß Hans ;)!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
delphist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

WIN XP, 98, 95; SUSE LINUX 8.1, 6.1, 6.0

BeitragVerfasst: So 16.02.03 20:39 
Titel: OEMtoChar(PChar(s),PChar(s));
ausblenden Quelltext
1:
OEMtoChar(PChar(string),PChar(string));					

Damit hast du den Text von ASCII nach ANSI konvertiert und nun kannst du den konvertierten Text, in die RichTextBox laden!
Hoffentlich klappt es so!
Viel Spaß damit!
delphist
Tazidus
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 29.11.04 11:47 
Titel: OEMtoChar
Hallo,
unten haben ich gelsen, dass man mit OEMtoChar einen ASCII Text in ANSI umwandeln kann.

Leider funktioniert diese Funktion nicht bei mir. Muss ich noch eine Unit implementieren. In der Delphi-Hilfe gibt es keinen Eintrag hierzu.

Kann mir einer diese Funktion näher beschreiben?
Danke
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 29.11.04 13:11 
Du musst für das TRichEdit noch den richtigen Zeichensatz wählen. Mit "Courier New" müsste die Konvertierung dann funktionieren. Andere Zeichensätze kennen die Grafikzeichen nämlich gar nicht.