Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Textfile Einlesen problem mit Umlauten (https://www.delphipraxis.net/86934-textfile-einlesen-problem-mit-umlauten.html)

mr.johnnyb 21. Feb 2007 11:15


Textfile Einlesen problem mit Umlauten
 
Hallo zusammen,

habe gerade ein kleines Problemchen ich lese eine mit ; seperierte Datei zeilenweise ein und Schreibe die einzelnen Spalten in ein Stringgrid. Dies funktioniert im Grunde auch schon nun habe ich einen Datensatz mit einem umlaut hier wird mir aber nur gewurstel eingelesen.

Hier ein Ausschnitt mit dem meiner sei achten relevanten teil, wenn ich die Variable sTmp nun einsehe hat diese schon den Fehler:
Delphi-Quellcode:
Var
  slFilePrev: TStringList;
  iChar, iRow, iCol, iLenDelimiter, iRows, iCols, iColsCk: Integer;
  F: Textfile;
  sGetLn, sTmp, sDelimiter: string;
begin

  try
  //Set important Parameters
    iRow:= 0;
    iRows:= 0;
    iCols:= 0;
    iColsCk:= 0;
     sDelimiter := ';';
    iLenDelimiter := Length(sDelimiter);

  //File Settings
     AssignFile(F,'C:\Test.txt');
    Reset(F);

  //File Validation and count of Col's and Row's
    while not eof(F) do
       begin
        iCols := 0;
        readln(F,sTmp);
Viele Grüße und mit bestem Dank im Vorraus
Johannes

Bernhard Geyer 21. Feb 2007 11:26

Re: Textfile Einlesen problem mit Umlauten
 
Zitat:

Zitat von mr.johnnyb
... nun habe ich einen Datensatz mit einem umlaut hier wird mir aber nur gewurstel eingelesen.

Wie schaut das gewustel aus? Ich nehme fast Wetten an das die Textdatei UTF8-Codiert ist.

marabu 21. Feb 2007 11:28

Re: Textfile Einlesen problem mit Umlauten
 
Hallo Johannes,

wenn deine Eingabedatei UTF-8 kodiert ist, dann hilft dir eine Konvertierung:

Delphi-Quellcode:
 sTmp := Utf8ToAnsi(sTmp);
Freundliche Grüße

mr.johnnyb 21. Feb 2007 11:49

Re: Textfile Einlesen problem mit Umlauten
 
Ja danke an alle beide,

hab die Datei auf ANSI umgestellt und es klappt mit sämtlichen verschiedenen umlauten und Sonderzeichen usw.

Nun stellt sich mir die Frage, kann ich aus Delphi, meinem Programm direkt von einer ein zu lesenden Datei diese Codierung

auch aufrufen oder besser noch ändern? Da ich auf dieses Format keinen Einfluss habe.

himitsu 21. Feb 2007 12:09

Re: Textfile Einlesen problem mit Umlauten
 
Wenn beim Speichern der Datei ein passendes [dp]BOM/dp] mit eingefügt wurde, dann kannst du dieses am Anfang auslesen und dann je nach Format die Datei entsprechend auslesen.

siehe z.B.:
http://www.delphipraxis.net/internal...ight=ansi+utf8


Also nach dem Öffnen das Format prüfen
und dann z.B. beim Auslesen (kurz nach Read/ReadLn) eventuell konvertieren.
Delphi-Quellcode:
// für Ansi und UTF8

Var isUTF8: Boolean;

Reset(F);
// hier versuchen das BOM auszulesen und z.B. isUTF8 setzen

...

ReadLn(F, sTmp);
If isUTF8 Then sTmp := Utf8ToAnsi(sTmp);

DP-Maintenance 21. Feb 2007 13:26

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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