AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Datei

Ein Thema von Tillie · begonnen am 1. Mär 2008 · letzter Beitrag vom 1. Mär 2008
Antwort Antwort
Tillie

Registriert seit: 24. Feb 2008
8 Beiträge
 
#1

Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Datei

  Alt 1. Mär 2008, 15:12
Hallo,

Wie kann ich aus einer Datei ein Widestring einlesen, der dabei mit Unicode (Türkische Buchstaben) gefüllt wird? Mit Read funktioniert das ja nicht:
Delphi-Quellcode:
var
  Wort:WideString;
  Datei:TextFile;

begin
SetCurrentDir ('D:/');
AssignFile(Datei, 'Datei.txt'); //Datei.txt ist im Unicode Format
Reset (Datei);
Read (Datei, Wort); // Wort enthält auf diese Weise ja keine türkischen Buchstaben/Unicode sondern ANSI-Zeichensalat
CloseFile(Datei);
Für Türkische Sprache im Programm greife ich momentan ansonsten auf die TNT Units der Version 2.3.0 zurück (manuell), habe aber leider darin bisher keine Entsprechung für Read gefunden.

Zusammengefasst: Ich suche also einen Befehl (aus den TNT Units) um aus einer Unicode Datei, ein Wort in Unicode Zeichen in einem Widestring einzulesen, um diesen anschließend innerhalb des Programms weitergeben zu können.

Kann mir jemand weiter helfen?

Liebe Grüße,
Tillie
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#2

Re: Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Da

  Alt 1. Mär 2008, 15:22
wie wärs mit 'ner zeichenkonvertierung? hab mal die suchbegriffe, welche du gebracht hast, in die OH eingegeben... da kommt dann so was raus...
  • AnsiToUtf8
  • Utf8ToUnicode
  • WideStringToUCS4String

denke, damit solltest du weiterkommen...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Da

  Alt 1. Mär 2008, 15:38
Delphi-Quellcode:
var
  strList: TWidestrings; (Könnte bei TNT TTNTWideStrings heißen)
begin
  strList := TWideStringList.Create;
  try
    strList.LoadFromFile(<Unicodedateiname>);
    if strList.Count > 0 then
      Word := strList[0];
  finally
    strList.Free;
  end;
end;
Für Detail schau einfach in die Implementierung dier WideStringList-Klasse von TNT
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Tillie

Registriert seit: 24. Feb 2008
8 Beiträge
 
#4

Re: Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Da

  Alt 1. Mär 2008, 19:30
Alsooo...

@ graenzgaenger
Mit den Genannten konnte ich mir nicht helfen. Es ging ja um das Einlesen aus der Datei an sich und nicht ums Umwandeln von Formaten - wobei letzteres auch leider in diesem Fall nicht so einfach mit diesen Befehlen funktioniert, weil ja türkische Buchstaben nicht im ANSI Code vorhandeln sind. Daher kann ANSI Code auch nicht in Türkischen Unicode umgewandelt werden und umgekehrt. Trotzdem danke, dass du versucht hast mir zu helfen!

@ Bernhard Geyer
Vielen Dank! Tatsächlich war ich schon irgendwo in der Richtung am Suchen, aber hab den Dreh nicht bekommen. Dank deinem kompletten Beispiel konnte ich das sehr gut nachvollziehen! Und so hat es jetzt sogar ohne TNT Units funktioniert (!), allein mit der Unit Widestrings von Delphi. (TNT brauch ich aber trotzdem noch umd dann weiter arbeiten zu können)

[Es gibt übrigens schon eine TNTWidestring Unit, wobei diese Unit insofern etwas seltsam ist, dass ich da nicht erkennen konnte, was darin an zusätzlichen Komponten enthalten ist. Ich habe den Eindruck, diese Unit, die ich hier habe, wurde eventuell noch für Vorgängerversionen von Delphi erstellt, wo es noch kein Widestring gab. Na, wie auch immer.]


Noch was: Die Quelldatei muss für diese Variante als "Unicode" abgespeichert werden, nicht als "UTF-8". Das ändert zwar beispielsweise im Windows Editor nichts an der Darstellung aber in Delphi bringt dass dann sehr lustige Ergebnisse....

[So versuchte ich zunächst aus einer UTF-8 Datei Tıllıe (i ohne i.Punkt) auszulesen und was dabei rauskam siehst du im Anhang *g* - war erstmal ziemlich verwirrt, aber mit Unicode-Dateien funktionierts ja wie gesagt, also no problem]


Nochmal vielen vielen Dank!!!!
Frohes Schaffen & Bis bald

Miniaturansicht angehängter Grafiken
hmmjaaaa_178.gif  
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Suche TNT Befehl:Einlesen von Widestring[Unicode] aus Da

  Alt 1. Mär 2008, 21:05
Zitat von Tillie:
... Ich habe den Eindruck, diese Unit, die ich hier habe, wurde eventuell noch für Vorgängerversionen von Delphi erstellt, wo es noch kein Widestring gab. Na, wie auch immer.]
Widestrings gibt seit Delphi 3 (oder wars schon D2 ) Jedoch ist die "sonstige" Unicodeunterstützung erst schrittweise dazugekommen und wird erst mit Delphi 2008 vollständig werden, so das genügend "Betätigungsfeld" für Komponentensammlungen besteht und sowas auch vor 2008 bereitzustellen.

Zitat von Tillie:
... aber in Delphi bringt dass dann sehr lustige Ergebnisse....
Wirst vermutlich die UTF8-Codierung zu gesicht bekommen da Codegear hier geschlammt hat und nicht gleiche alle möglichen Codierungen von Unicodedateien unterstützt.[/quote]
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 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