AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UFT-8 Zeichen aus TXT an Drucker

Ein Thema von HAWK_ · begonnen am 12. Mai 2009 · letzter Beitrag vom 13. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
HAWK_

Registriert seit: 7. Apr 2009
Ort: zu Hause
9 Beiträge
 
#1

UFT-8 Zeichen aus TXT an Drucker

  Alt 12. Mai 2009, 15:54
Hallo Profis,

ich habe mal wieder kleines Problemchen.
Ich möchte gern polnischen Text aus einer Textdatei auslesen und diesen dann per Assign auf eine Druckerschnittstelle (LPT1 o. Netzwerkpfad) schreiben.
Leider ist das für mich absolutes Neuland. Ich habe hier schon mal ein paar Threads durchgelesen, aber leider bis jetzt aber noch nichts brauchbares gefunden.
Derzeit lese ich Textdateien mit AssignFile ein. Bei der Übergabe der Daten an den Drucker müssen ebenfalls die UFT8 Zeichen erhalten bleiben.
Vielen Dank vorrab.


Gruß HAWK
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 12. Mai 2009, 16:43
Du wirst eine Unicdefähgies Assign benötigen oder mit CreateFileW direkt arbeiten müssesn. Der Drucker wird kein UTF8 verstehen sondern nur per Widestrings den Text annehmen können.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 12. Mai 2009, 17:43
Willst du den Drucker direkt in seiner eigenen Druckersprache ansteuern (wenn ja, welche) oder den Windows Druckertreiber verwenden?
Andreas
  Mit Zitat antworten Zitat
HAWK_

Registriert seit: 7. Apr 2009
Ort: zu Hause
9 Beiträge
 
#4

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 07:08
den Drucker steuer ich direkt in seiner eigenen Sprache an. Ist ein CAB-Etikettendrucker. Der kann UFT-8, die Zeichen über die Schnittstelle retten, ist mir noch unklar.
Was ist ein Unicode-fähiges Assign?
-> CreateFileW schaue ich mir gleich mal an.

Die Programmierung sieht zur Zeit so aus...

Delphi-Quellcode:
  UTF8String = type string;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var lv_matnr,lv_data,lv_text:string;
    fdata:textfile;
    lv_data2 :widestring;
label jump;
begin
     lv_matnr := '50008045002990';
     AssignFile(fdata,'c:\polen.txt');
     {$I-}
     Reset(fdata);
     {$I-}
     If ( IOResult = 0 ) Then
     begin
          While not EOF(fdata) do
          begin
               Readln(fdata,utf8string(lv_data));
               lv_data2 := UTF8encode(UTF8String(lv_data));
               If Copy(lv_data2,1,14) = lv_matnr then
               begin
                    lv_text:=Copy(lv_data2,16,30);
                    goto jump;
               end;
          end;
          jump:
          closefile(fdata);
     end;
in lv_data steht der UTF-8 string. Nach dem Encode sind fast alle überflüssigen Zeichen weg, nur an erster Stelle steht noch ein "?". Ist das normal?
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#5

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 08:20
Mit welcher Delphi-Version arbeitest du eigentlich? Ist gerade bei dem Unicode-Thema seit D2009 eine ziemlich wichtige Info.

Bis denn
Bommel
  Mit Zitat antworten Zitat
HAWK_

Registriert seit: 7. Apr 2009
Ort: zu Hause
9 Beiträge
 
#6

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 08:30
Sorry, ich benutze D7
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#7

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 08:43
Hm, okay, in dem Fall verstehe ich entweder die Fragestellung oder den bisherigen Code noch nicht so ganz.

Also: Du hast eine Textdatei, die UTF8-Codiert ist. Und du willst einen Text ebenfalls UTF8-codiert an den Drucker weitergeben. Zwischendurch willst du mit diesem Text eigentlich nix anderes machen (also bspw. in Unicode umwandeln, um ihn irgendwie am Bildschirm auszugeben oder so). Richtig soweit?

Denn dann könntest du dir diese ganzen Umwandlungen, die du da machst, eigentlich sparen:

Delphi-Quellcode:
var lv_matnr,lv_data,lv_text:string;
    fdata:textfile;
    lv_data2 :widestring;
label jump;
begin
     lv_matnr := '50008045002990';
     AssignFile(fdata,'c:\polen.txt');
     {$I-}
     Reset(fdata);
     {$I-}
     If ( IOResult = 0 ) Then
     begin
          While not EOF(fdata) do
          begin
               Readln(fdata,lv_data);
[...]
In D7 sollte es nun eigentlich so sein, dass lv_data nach dem Readln den UTF8-String enthält, der in der Textdatei steht. Delphi sollte den nicht verändern. Wenn du einen UTF8-String an den Drucker weitergeben willst, dann nimm lv_data und mach das.

Oder übersehe ich hier gerade irgendwas?

Bis denn
Bommel
  Mit Zitat antworten Zitat
HAWK_

Registriert seit: 7. Apr 2009
Ort: zu Hause
9 Beiträge
 
#8

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 10:41
im prinzip war das nur ne spielerei. Wenn ich die Datei einlese und eine Breakpoint setze, sehe ich ja was in der Variable drin steht. Egal in welchenm Fall (mit oder ohne UFT8STring) stehen dort einige kryptische Zeichen drin. Mit denen kann ich nicht arbeiten. Der Drucker übernimmt die 1:1

Beispiel das Wort Krążek
Das sollte nach dem Einlesen ja genauso in der Varaible stehen. Bisher hab ich noch kein Mittel gefunden, dass es das auch tut.
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#9

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 10:58
Zitat von HAWK_:
im prinzip war das nur ne spielerei. Wenn ich die Datei einlese und eine Breakpoint setze, sehe ich ja was in der Variable drin steht. Egal in welchenm Fall (mit oder ohne UFT8STring) stehen dort einige kryptische Zeichen drin. Mit denen kann ich nicht arbeiten. Der Drucker übernimmt die 1:1

Beispiel das Wort Krążek
Das sollte nach dem Einlesen ja genauso in der Varaible stehen. Bisher hab ich noch kein Mittel gefunden, dass es das auch tut.
Hallo,

wenn du das sowieso 1:1 weiterleitest, warum liest du die Datei dann nicht einfach als Bytes ein?

Gruss Reinhard
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#10

Re: UFT-8 Zeichen aus TXT an Drucker

  Alt 13. Mai 2009, 11:10
Zitat von HAWK_:
im prinzip war das nur ne spielerei. Wenn ich die Datei einlese und eine Breakpoint setze, sehe ich ja was in der Variable drin steht. Egal in welchenm Fall (mit oder ohne UFT8STring) stehen dort einige kryptische Zeichen drin. Mit denen kann ich nicht arbeiten. Der Drucker übernimmt die 1:1

Beispiel das Wort Krążek
Das sollte nach dem Einlesen ja genauso in der Varaible stehen. Bisher hab ich noch kein Mittel gefunden, dass es das auch tut.
Das Wort sollte dann etwa so aussehen: Krążek

Genau das wäre das UTF8-Format (das sieht halt nicht so schön aus, wenn man es sich als normalen String anguckt). Wenn dein Drucker UTF8 kann, dann sollte er genau damit zurecht kommen.

Im Widerspruch dazu steht allerdings deine Aussage "mit denen kann ich nicht arbeiten" - watt denn nun?

Um aus diesem UTF8-codierten String nun wieder das mit polnischen Zeichen lesbare Unicode zu machen, bräuchtest du übrigens UTF8Decode (also "de", nicht "en").

Um bei dem Beispiel von vorhin zu bleiben:

Delphi-Quellcode:
var lv_matnr,lv_data,lv_text:string;
    fdata:textfile;
    lv_data2 :widestring;
label jump;
begin
     lv_matnr := '50008045002990';
     AssignFile(fdata,'c:\polen.txt');
     {$I-}
     Reset(fdata);
     {$I-}
     If ( IOResult = 0 ) Then
     begin
          While not EOF(fdata) do
          begin
               Readln(fdata,lv_data);
               lv_data2:=UTF8Decode(lv_data);
lv_data enthält nun "Krążek" (UTF8), lv_data2 enthält "Krążek" (als "echten" Widestring in Delphi).

Vielleicht hilft dir das noch ein bisschen weiter, was auch immer genau du nun brauchst...

Bis denn
Bommel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz