Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Unicode in datei schreiben (https://www.delphipraxis.net/69573-unicode-datei-schreiben.html)

remie 17. Mai 2006 10:58

Re: Unicode in datei schreiben
 
so ich glaub ich hab mal wieder ein bischen geshcummelt aberegal habe es so probiert

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  daten : WideString;
  datei : TTntFileStream;
begin
  openDialog1.Execute;
  if fileexists(opendialog1.FileName) then begin
    datei :=TTntFileStream.Create(opendialog1.FileName,fmOpenRead);
    datei.ReadBuffer(daten,datei.Size);
    Memo1.Lines.Add(daten);
    TNTEdit1.Lines.Add(daten);
    datei.free
  end else ShowMessage('ERROR FILE NOT EXIST')
end;
aber das schint nicht so ganz zu klappen den er schreibt mir in die memos nix rein :gruebel:
aber imprinzip müsste es doch gehen wenn ich das ganze file einlesen will oder ?

sh17 17. Mai 2006 11:08

Re: Unicode in datei schreiben
 
du müsstest vorher die Länge des Strings daten mit SetLength setzen

aber wieso nimmst Du nicht TTntMemo.Lines.LoadFromFile?

bzw. TTntStringList.loadfromfile, wenn es eine Textdatei ist?

sh17 17. Mai 2006 11:10

Re: Unicode in datei schreiben
 
ausserdem, solltest Du koreanisch als Sprache nutzen, dann solltest Du auch alle anderen Funktionen durch WideString-Funktionen ersetzen: z.B. FileExists -> WideFileExists

himitsu 17. Mai 2006 11:12

Re: Unicode in datei schreiben
 
Ersten: das Memo kann auch nur ANSI, aber egal, es sollten dann zumindesntens etwas dinstehen.

Zweitens: UTF-8 kannst du doch auch per ANSI einlesen, es ist ja eine MultiByteCodierung, wo ja ein Einbytestring ausreichend ist.
im Delphi kannst du dann ja as UTF8 (in dem AnsiString) nach Unicode (in 'nem WideString) umcodieren lassen.

und Zuletzt: keine Ahnung warum's nicht geht (verwende keine FileStreams ._.)

[add]
Delphi-Quellcode:
datei :=TTntFileStream.Create(opendialog1.FileName,fmOpenRead);
SetLength(daten, datei.Size div 2)
datei.ReadBuffer(daten[1], datei.Size and not $1); // damit notfalls kein halbes Byte eingelesen wird
Zitat:

Zitat von sh17
dann solltest Du auch alle anderen Funktionen durch WideString-Funktionen ersetzen: z.B. FileExists -> WideFileExists

Das ist ja wohl vollkommen egal, wenn nur der Dateiinhalt Unicode ist :zwinker:

sh17 17. Mai 2006 11:16

Re: Unicode in datei schreiben
 
Zitat:

Zitat von himitsu
und Zuletzt: keine Ahnung warum's nicht geht (verwende keine FileStreams ._.)

erstens, wie schon gesagt, der String ist ja leer, der SPeicher in der Größe des Streams muss also erst reserviert werden

zweitens müsste es heißen ReadBuffer(daten[1],datei.Size)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr.
Seite 2 von 2     12   

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