![]() |
Unicode in datei schreiben
Hi leute
ich muss so ziemlich jede sprache die es Gibt mit ihren Zeichen in eine Datenbank schreiben können, die Datenbank ( Mysql ) kann ja utf-8 ohne Probleme aber Delphi kann es ja nicht so einfach. da habe ich hier im Forum die "TntUnicodeControls" gefunden. Wenn ich jetzt hingehe und an meinem Rechner das Eingabeschema auf Koreanisch stelle, kann ich auch wunderbar denen ihre Zeichen tippen. zum Testen ob das alles klappt wolle ich das eingegebene mal in eine Datei schreiben. Wenn ich die dann aber die Datei schreibe und danach wieder auslesen will kommen nur . raus.
Code:
das is der Button der die Datei schreibt. muss ich da noch irgendwas setzen oder so ?
procedure TForm1.Button2Click(Sender: TObject);
var f : System.text; daten : WideString; i : Integer; begin SaveDialog1.Execute; if NOT fileexists(SaveDialog1.FileName) then begin IF NOT fileexists(SaveDialog1.FileName) THEN BEGIN SYSTEM.ASSIGN(f,SaveDialog1.FileName); SYSTEM.REWRITE(f,SaveDialog1.FileName); SYSTEM.CLOSE(f); END; SYSTEM.ASSIGN(f,SaveDialog1.FileName); SYSTEM.APPEND(f); for i:=0 to tntedit1.Lines.Count-1 do begin WRITELN(f,tntedit1.Lines.ValueFromIndex[i]); end; SYSTEM.CLOSE(f); end; end; Danke mal für die Hilfe |
Re: Unicode in datei schreiben
Versuch es mal mit einem FileStream anstatt mit den veralteten Pascal Routinen.
|
Re: Unicode in datei schreiben
wie meinen ?
|
Re: Unicode in datei schreiben
Delphihilfe
![]() |
Re: Unicode in datei schreiben
Und bei Dir dann speziell TTntFileStream oder TTntStringList
|
Re: Unicode in datei schreiben
TextFile ist nicht Unicodetauglich ... hatte ich vor ein paar Tagen hier schonmal irgendwo gesagt.
das Read/Write/ReadLn/WriteLn nimmt Zwar WideStrings ntgegen, aber intern werden die in AnsiStrings umgewandelt und auch "nur" als ANSI in die Datei geschrieben, oder daraus gelesen. |
Re: Unicode in datei schreiben
hm naja ok dan is mir klar warum es nicht gegangen ist.
aber jetzt hätte ich noch ne kurze frage zum verständnis: procedure WriteBuffer(const Buffer; Count: Longint); damit schreibe ich ja in dateien ... der buffer ist dan mein WideString aus dem TntRitchEdit oder ? und was muss ich bei dem count mitgeben, wieviele Zeichen das sind oder Bits oder ... das is mir noch nicht so ganz klar |
Re: Unicode in datei schreiben
bei WideString ist Count = Length * 2
|
Re: Unicode in datei schreiben
und was sollte ich dan da beim lesen ( REadBuffer) angeben ? da habe ich die Zeilenlänge ja nicht :gruebel:
|
Re: Unicode in datei schreiben
Entweder du ließt solange ein, bis du ein #0, #13, oder #10 findest (ReadLn macht das nicht anders),
oder du speicherst dir die Länge mit ab (z.B. einen Integer davor speichern, wo die Länge des nachvolgenden Strings drinsteht) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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