Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TStringList.LoadFromFile unter D2010 und XE (https://www.delphipraxis.net/159779-tstringlist-loadfromfile-unter-d2010-und-xe.html)

Bbommel 12. Apr 2011 15:45

TStringList.LoadFromFile unter D2010 und XE
 
Hallo zusammen,

immer mal wieder ärgere ich mich über das Verhalten von "LoadFromFile" von TStringList, Stand Delphi 2009. Läuft nämlich bei der Verarbeitung einer Datei irgendetwas nicht so wie erwartet (z.B. eine Datei, die man als UTF8 laden will, enthält Stellen, an denen nicht korrekt in UTF8 kodiert ist), dann bricht das LoadFromFile kommentarlos ab und liefert eine komplett leere StringList zurück. Eine Exception oder so wird nicht geworfen.

Weiß jemand, ob sich dieses Verhalten bei D2010 oder XE geändert hat? Werden hier vielleicht Fehlermeldung geworfen oder ist das Einlesen irgendwie wenigstens fehlertoleranter geworden?

Falls ja, könnte ich es mir vielleicht sparen, doch noch mal eigene Lese-Routinen für die StringListe zu erstellen...

Bis denn
Bommel

himitsu 12. Apr 2011 15:49

AW: TStringList.LoadFromFile unter D2010 und XE
 
Das liegt leider an der mangelhaften UTF-8-Implementierung, welche schon immer so vorhanden ist. :wall.
(siehe Quellcode in Delphi-Referenz durchsuchenUTF8Decode)

In deinem Fall würde ich empfehlen dir eine eigene TEncoding-Klasse von TUTF8Encodung abzuleiten und dort die Konvertierung zu prüfen.

Delphi-Quellcode:
// Ausgang := UTF8Decode(Eingang);
if (Eingang <> '') <> (Ausgang <> '') then
  raise Exception.Create('Fehlerhafte UTF-8-Kodierung');
Oder sogar mit einer eigenen Dekodierung, welche schon direkt bei der Übersetzung den Fehler wirft und sogar die Fehlerstelle mit anzeigen könnte.

Und nein, im QC sind von mir schon seit Jahren schwerwiegendere und ebenso leicht korrigierbare Fehler gemeldet
und bis jetzt hat sich nix getan, also warum sollte sich hier was tun?

Bbommel 12. Apr 2011 16:07

AW: TStringList.LoadFromFile unter D2010 und XE
 
Hmpf. ;)

Aber dann weiß ich Bescheid - Danke für die Antwort.

Im Moment habe ich allerdings ein viel blöderes Problem mit dem LoadFromFile (UTF8 sollte nur ein schönes Beispiel sein, das vielleicht viele schon mal hatten), aber dazu mache ich dann bei Gelegenheit einen eigenen Thread auf...


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