Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Eingelesene Datei in Unicode (https://www.delphipraxis.net/185074-eingelesene-datei-unicode.html)

Balosh 13. Mai 2015 10:58

Eingelesene Datei in Unicode
 
Hi zusammen,

habe in Delphi ein Suchprogramm geschrieben, das in *.txt, *.pas Dateien nach Stichwörtern sucht diese in einen String reinspeichert und das Ergebnis dann in einer Listbox ausgibt. Mein Problem ist aber das in den *.txt Dateien auch Umlaute stehen und wenn ich nach diesen suche mir das Programm abschmiert da ja *.txt ANSI codiert sind. Meine bisherige Lösung war über den Befehl
Code:
SaveToFile()
und
Code:
TEncoding.Unicode
die Datei umzuschreiben und ab zu speichern. Dies würde ich gerne aber vermeiden und die Codierung der Datei lassen und nur temporär umzuwandeln zum durchsuchen.

Code:
slist.LoadFromFile(Path + Rec.Name);
            with slist do
            begin
              SaveToFile(Path + Rec.Name, TEncoding.Unicode);
            end;
Hat da jemand einen Vorschlag?

Gruß
Balosh

P.S. Bin schlecht im erklären von Problemen also sorry wenn mein Problem schelcht zu verstehen ist. :oops: Ich weiß diese Art von Thema gab es hier im Forum schon öfters aber keines konnte mir da weiterhelfen.

p80286 13. Mai 2015 11:14

AW: Eingelesene Datei in Unicode
 
Zitat:

Zitat von Balosh (Beitrag 1301344)
Mein Problem ist aber das in den *.txt Dateien auch Umlaute stehen und wenn ich nach diesen suche mir das Programm abschmiert da ja *.txt ANSI codiert sind.

Könntest Du "abschmieren" näher erläutern?
Wie auch schon in einem anderen aktuellen Thread diskutiert, kannst Du Dich eigentlich nicht darauf verlassen, daß alle "Textdateien" gleich kodiert sind. (egal ob ANSI,UTF8,UTF16 oder was auch immer)

Geh also noch einmal in Dich und versuche erneut Dein Problem zu beschreiben. der Sourcecode der zum "Abschmieren" führt wäre auch nicht schlecht!

Gruß
K-H

himitsu 13. Mai 2015 11:44

AW: Eingelesene Datei in Unicode
 
TFile.ReadAllBytes, oder so, darauf TEncoding.GetBufferEncoding anwenden und das dann für's Speichern benuzten.

Oder du kopierst eben die Datei (TFile.Copy), anstatt sie sinnlos einzulesen und neu zu speichern,
bzw. liest sie zumindestens nicht in eine TStringList (welche das Encoding ändert), sondern ein Array oder einen Stream.

Der schöne Günther 13. Mai 2015 12:11

AW: Eingelesene Datei in Unicode
 
Ich verstehe das Problem noch nicht so wirklich. Die Quelldatei kann ja kodiert sein wie sie mag. Hauptsache, du bekommest es vernünftig in den Speicher (TStrings, String-Array, was auch immer). Dann hast du einen Haufen Strings und kannst darin suchen wie es Spaß macht. Was hierbei abschmieren soll verstehe ich auch nicht.

Balosh 13. Mai 2015 12:43

AW: Eingelesene Datei in Unicode
 
Zitat:

Zitat von himitsu (Beitrag 1301353)
Oder du kopierst eben die Datei (TFile.Copy), anstatt sie sinnlos einzulesen und neu zu speichern,
bzw. liest sie zumindestens nicht in eine TStringList (welche das Encoding ändert), sondern ein Array oder einen Stream.

An einen Stream habe ich noch gar nicht gedacht. Werde ich gleich mal ausprobieren danke hierfür.:thumb:


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