Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Text richtig einlesen (https://www.delphipraxis.net/175402-text-richtig-einlesen.html)

stahli 18. Jun 2013 23:32

Text richtig einlesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine Textdatei, die ich zeilenweise einlese (XE3, StringList).
Weiß jemand auf Anhieb, wie ich das am einfachsten im richtigen Textformat verarbeiten kann?
Ich kenne mich damit noch gar nicht aus. :oops:
Unter D7 hatte ich mal eine AnsiToAscii-Funktion. Jetzt wird das aber sicher anders gelöst.

Die Umlaute und ß werden falsch dargestellt und importiert.

Sir Rufo 19. Jun 2013 00:57

AW: Text richtig einlesen
 
Delphi-Referenz durchsuchenTStrings.LoadFromStream das mit dem Encoding ;)
oder analog
Delphi-Referenz durchsuchenTStrings.LoadFromFile

p80286 19. Jun 2013 10:02

AW: Text richtig einlesen
 
Zitat:

Zitat von stahli (Beitrag 1218970)
Die Umlaute und ß werden falsch dargestellt und importiert.

Naja "richtig" liegt wohl eher im Auge des Betrachters.
Wenn Windows für Batch-Dateien einen anderen Zeichensatz verwendet als für "normalen" Text sind solche Konflikte eigentlich vorprogrammiert.
Eigentlich kaum zu glauben, daß diese CP/M - Altlasten immer noch existieren.

Wenn's darauf ankommt arbeite ich immer noch mit den Numerischen Werten.

Gruß
K-H

stahli 19. Jun 2013 23:37

AW: Text richtig einlesen
 
Ich verstehe nix. :oops:

Also ich habe mit LoadFromFile(FileNme, TEncoding.ASCII) und allen verfügbaren anderen Typen versucht.
Korrekt wurde die Datei nie eingelesen. Umlaute waren immer falsch oder es waren gar keine Datensätze eingelesen.

Ich kann natürlich händisch die falschen "Sonderzeichen" durch "korrekte Umlaute" ersetzen.
Aber wie würde man es denn richtig machen?

Im Grunde reicht mir aber auch, die zu importierenden Zeilen umzuwandeln.

Ich habe aber keine Ahnung, in welchem Format die Datei vorliegt.
Die ist so gegeben und nicht zu beeinflussen.

Ich werde es wohl doch selbst mit StringReplace regeln...

ralfschwalbe 20. Jun 2013 06:55

AW: Text richtig einlesen
 
Ich werfe mal spontan ein "OemToAnsiBuff" ein? 8-)

DeddyH 20. Jun 2013 07:23

AW: Text richtig einlesen
 
Fast richtig, OEMToCharBuff ;), siehe auch hier: http://www.delphipraxis.net/1218493-post6.html

jobo 20. Jun 2013 07:29

AW: Text richtig einlesen
 
OEM, ANSI, ASCI codierte Texte wären auch mein Tip.
Erstmal wäre spannend, ob Du selbst die Herkunft/Codierung Deiner Texte kennst.
Ohne Deine Delphi Routinen zu ändern, könntest Du mit einem "handelsüblichen" Editor, die Codierung ändern und feststellen, was Du überhaupt vorliegen hast.
Wenn Du die Texte "selbst" generierst, könntest Du natürlich schon von Anfang an wissen, wie die Codierung ist.
Wenn die Texte bspw. aus irgendeinem dritt-Programm exportiert werden, da einfach mal die Doku befragen...
M.E. gibt es kein einfaches Rezept, diese Codierung automatisch zu erkennen. Das ginge vielleicht noch am besten bei Unicode Texten, die ordnungsgemäß mit BOM versehen sind...
Für einen Importvorgang brauchst Du notfalls verschiedene Routinen, die ASCII, ANSI, OEM beherrschen, eine Vorschau anbieten und den Benutzer wählen lassen.

Sir Rufo 20. Jun 2013 07:35

AW: Text richtig einlesen
 
Odda mit diesem Encoding probieren
Delphi-Quellcode:

Encoding := TEncoding.GetEncoding(GetOEMCP);
Quelle http://stackoverflow.com/questions/5...e-oem-encoding

jobo 20. Jun 2013 08:01

AW: Text richtig einlesen
 
Oh! Ist das deterministisch?

ralfschwalbe 20. Jun 2013 08:07

AW: Text richtig einlesen
 
Zitat:

Zitat von DeddyH (Beitrag 1219136)
Fast richtig, OEMToCharBuff ;), siehe auch hier: http://www.delphipraxis.net/1218493-post6.html

:oops: Siiicher, siiicher... :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr.
Seite 1 von 2  1 2      

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