Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unicode Zeichensatz erkennen (https://www.delphipraxis.net/52146-unicode-zeichensatz-erkennen.html)

naujo 24. Aug 2005 13:47


Unicode Zeichensatz erkennen
 
Moin,

ich habe das folgende Problem: Das Programm soll zeilenweise eine Textdatei einlesen. Da bei ist das Programm das die Datei aus ASCII, UFT-8, UTF-16 oder Unicode bestehen kann.

Ich weiß es gibt schon Sammlungen wie ElPak oder TNT-Unicode oder JEDI nur leider stellen diese Komponenten nicht die Funktionalität zur Verfügung, die ich benötige.

Denn das Programm soll die entsprechenden Dateien nach bestimmten Zeichenketten durchsuchen und filtern. Das ganze soll dann wieder in eine Textdatei des gleichen Formats geschrieben werden.

Eine TStringList möchte ich nicht verwenden, weil diese Komponte bei großen Dateien (einige 100 MB) nicht besonders performant ist, denn das Tool soll auch auf älteren Kisten laufen.

Zur verwende ich die POS-Funktion zur Bestimmung, ob der Suchstring eventuell in der Zeichenkette vorhanden ist.

Und funktioniert eigentlich
Delphi-Quellcode:
ReadLN
auch mit Unicode??? Mit einer Intensiven Google recherche habe ich nichts brauchbares gefunden.


Vielen Dank schon mal

MfG

Naujo

Bernhard Geyer 24. Aug 2005 13:54

Re: Unicode Zeichensatz erkennen
 
Zitat:

Zitat von naujo
Und funktioniert eigentlich
Delphi-Quellcode:
ReadLN
auch mit Unicode??? Mit einer Intensiven Google recherche habe ich nichts brauchbares gefunden.

Njet. Mußt dir schon selbst was basteln welche Unicode-Textdateien einließt und blockweise in den speicher holt.
Aber die Implementierungen von ElPack/TntWare können dir ja als vorlage dienen wie man die verschiedenen Formate (Unicode/Ansi/...) erkennt. Darst halt nicht wie dort alles in einen schwung einlesen sondern "nur" blockweise eine Erkennung machen

naujo 24. Aug 2005 13:57

Re: Unicode Zeichensatz erkennen
 
Ok.

Dann werde ich das mal versuchen.

Danke.

MfG

Naujo

Olli 24. Aug 2005 14:17

Re: Unicode Zeichensatz erkennen
 
Wenn es solche Dateien sind, die nicht nur den Text als UTF-8/16 oder ANSI enthalten, sondern die bei den UTFs auch noch ein Kennbyte enthalten, dann mußt du nur die ersten beiden Bytes auswerten.

Wie müssen die Werte sein? Nunja, man nehme sich Notepad zur Hand, starte es. Tippsele etwas Text und speicher diesen einmal als "Unicode" (UTF-16) und einmal als "UTF-8" ab. Danach schaue man sich das Resultat und davon die ersten 2 Bytes in einem Hexeditor an. Voila, damit hast du's.

Wenn du einen String hast, gibt dir u.U. die Funktion MSDN-Library durchsuchenIsUnicode() Aufschluß über den Inhalt.

Achtung, Windows unterstützt mindestens bis inkl. Windows 2000 kein echtes UTF-16 sondern vielmehr nur das was man als UCS-2 (2bytiges Unicode ohne Surrogates) kennt!


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