Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine TextDatei öffnen mit Utf-8 Zeichensatz (https://www.delphipraxis.net/43565-eine-textdatei-oeffnen-mit-utf-8-zeichensatz.html)

dwagner 5. Apr 2005 21:57


Eine TextDatei öffnen mit Utf-8 Zeichensatz
 
Hallo,

Ich muß eine Textdatei einlesen. Das Problem ist das der Inhalt polnisch ist.
Die Textdatei wurde mit dem UTF-8 Zeichensatz gespeichert.

Erst habe ich versucht die Datei mit AssignFile(f,s) zu öffnen.
f ist vom type TextFile und s vom Type Widestring. Im Debugmodus erkenne ich jedoch schon das
die Zeichen in s nicht richtig dargestellt werden.

Mein zweiter Versuch war dann die Datei mit TFileStream zu öffnen jedoch habe ich hier auch das gleiche Porblem. Die Zeichen werden nicht richtig dargestellt.

Hier mein Quellcode zu meinem ersten Versuch:
Delphi-Quellcode:
var
  s : WideString;
  f : TextFile;
begin
  OpenDialog1.Execute;
  AssignFile(f, OpenDialog1.Filename);
  Reset(f);
  While not eof(f) do begin
    Readln(f,s);
    Image1.Canvas.Font.Charset := EASTEUROPE_CHARSET;
    Image1.Canvas.Font.Size := 8;
    TextOutW(Image1.Canvas.Handle, 0, 0, PWideChar(s), Length(s));
  end;
  CloseFile(f);
end;
Und mein Quellcode zum zweiten Versuch:
Delphi-Quellcode:
var
  s : WideString;
  f : TFileStream;
begin
  OpenDialog1.Execute;
  f := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  SetLength(s, 10);
  f.Read(s[1], 10);
  f.Free;
  Label3.Caption := s;
  Image1.Canvas.Font.Charset := EASTEUROPE_CHARSET;
  TextOutW(Image1.Canvas.Handle, 0, 0, PWideChar(s), 10);
end;
In der Textdatei ist folgender Wert : 'Wewnętrzne szczegóły'

Ps. TextOutW ist eine Api Funktion wenn ich für s zum Beispiel #9787 angebe wird mir auch das richtige Zeichen in meinem Image ausgegeben.

Kann mir einer erklären wie man eine Textdatei (Utf-8) richtig auslies?

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Christian Seehase 5. Apr 2005 22:22

Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
 
Moin dwagner,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

[EDIT]
Mist, entsprach Deinem zweiten Beispiel :?
Hatte ich wegen der fehlenden Formatierung übersehen ;-)
[/EDIT]

dwagner 5. Apr 2005 22:41

Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
 
Hallo Christian,

Erst mal Danke für Dein Hilfe.
Ich habe Deinen Ansatz wie folgt getestet:
Delphi-Quellcode:
var
  fs   : TFileStream;
  wsBuf : WideString;

begin
OpenDialog1.Execute;
  fs := TFileStream.create(OpenDialog1.FileName, fmOpenRead);
  try
    wsBuf := StringOfChar(#00,fs.Size);
    fs.Read(wsBuf[1],fs.Size);
    Label3.Caption := wsBuf[1];
    Image1.Canvas.Font.Charset := EASTEUROPE_CHARSET;
    TextOutW(Image1.Canvas.Handle, 0, 0, PWideChar(wsBuf), fs.Size);
  finally
    FreeAndNil(fs);
  end;
end;
Leider funktioniert dies nicht. Ich hatte ebenfalls schon versucht die Datei mit Hilfe von
FileStream zu öffnen jedoch werden die Zeichen falsch dargestellt.
Ich bin ziemlich sicher das das Problem beim einlesen der Textdatei entsteht da ich erstens eine
Label Komponente installiert habe die Unicode unterstützt und mit dem Zeichen #8797 auch getestet habe und zweitens die Ausgabe der Api Funktion TextOutW ebnfalls funktioniert.

[edit=Christian Seehase]Delphi-Tags gesetzt. Mfg, Christian Seehase[/edit]

Christian Seehase 5. Apr 2005 22:49

Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
 
Moin dwagner,

leider hab' ich keine passende Datei zur Hand, um etwas auszuprobieren, da ich nicht sicher weiss, wie solche Dateien auszulesen sind.
Falls es geht, könntest Du ja mal ein Beispiel anhängen. (aber ich denke mal, es wird sich auch so noch jemand finden der Dir weiterhelfen kann ;-))

dwagner 5. Apr 2005 23:07

Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich arbeite eigentlich mit einer csv Datei. Also ein Textdatei derren Inhalt durch ';' getrennt sind.
Beispiel:
b_kfzfinanz.gif;b_kfzfinanz.gif;Finanzierung;Finan sowanie
b_kfzintern.gif;b_kfzintern.gif;Interne Details;Wewnętrzne szczegóły

Am Ende Jeder Zeile sind die Polnischen Wörter die ich mit den Umlauten brauche.

Um jedoch mein Problem zu lösen gehe ich einfach hin und schreibe in eine Textdatei ein einzelnes polnisches Wort.


Im den Anhang koppiere ich Dir mal meine Beispieldatei.

Wenn Du Zeit und Lust hast kannst Du es ja mal porbieren ich währe Dir sehr dankbar.

Bernhard Geyer 6. Apr 2005 07:22

Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
 
Zitat:

Zitat von dwagner
Kann mir einer erklären wie man eine Textdatei (Utf-8) richtig auslies?

Nimm doch das ElPack.

Die Stringlist-Klassen müßten in der aktuellen Version auch UTF8-Dateien einlesen können (in meiner verwendeten Version nur Unicode-Files mit Big/Little-Endian). Auch sind alle Oberflächen-Controls Unicode-Enabled. Als keine notwendigkeit mit der Krüppellösung Codepages/Charset zu arbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz