Hogyan kell betölteni a memóriába egy szöveg fájlt unicode-ban?

Hogyan tölthető be a Memo szövegben a Unicode fájlból

Kedves profik, hogyan tölthetem be a Unicode szövegét egy fájlból a Memo-ba?
Ezt tettem:

var s, s1: String;
# xA0; # xA0; f: Szövegfájl;
kezdődik
# xA0; AssignFile (f, Fájlnév);
# xA0; Reset (f);
# xA0; míg az EoF (f) nem
# xA0; # xA0; kezdődik
# xA0; # xA0; ReadLn (f, s);
# xA0; # xA0; s1: = WideCharToString (PWideChar (k));
# xA0; # xA0; Memo1.Lines.Add (s1);
# xA0; végén;
végén;

Ennek eredményeképpen a szövegben szereplő karakterek helyett a "?"
Úgy gondolom, ez a WideCharToString (PWideChar (s)); úgy tűnik, hogy itt valami rosszat csinálok, vagy egyáltalán nem. Kérlek, kérlek!

A VCL nem támogatja a Unicode-t, használja a külső komponenseket, például a TNTComponenteket.

A Delphi támogatja a Unicode-t, csak ne használja a TextFile-t

Számomra a legfontosabb probléma a szöveg megjelenítésében és az e szövegből származó adatok fogadásakor. Például, ha ini fájlt készít, csak Unicode-ban és kézzel feldolgozza.
Úgy tűnt számomra, hogy először feldolgozom magam az ANSI kódolásával.

És mi egyszerű a fájlon keresztül?

Lehetséges, és ez egyszerű a Fájllal, de tanácsot adok a TFileStream-nek és rögzítem a WideString-ben előre meghatározott hosszúsággal, majd S: = WS

A ReadBuffer második paramétere (hosszúsága) nem sok a tiszta. Ha egyszerre szeretné elolvasni a teljes fájlt, adja meg a Méretet?


> a ReadBuffer második paramétere (hosszúsága) nem tisztázott.
> # xA0; Ha a teljes fájlt egyszerre szeretném elolvasni, adja meg a Méretet?

A puffer bájtban van, tehát igen.

ha olvasás közben hibát okoz.


var # xA0; st: TFileStream;
# xA0; # xA0; ws: PWideChar;
# xA0; # xA0; s: String;
kezdődik
# xA0; st: = TFileStream.Create (Fájlnév, fmOpenRead);
# xA0; st.ReadBuffer (ws, st.Size); // itt hibát okoz
# xA0; s: = WideCharToString (ws);
végén;

> # xA0; st.ReadBuffer (ws, st.Size); // itt hibát okoz

Szomorú, lányok, szomorúak.
De valójában legutóbb az AS-t említik. Puskin.

És mi a PWideChar.

akkor mi van, ha a PWideChar?

> Mi van akkor, ha a PWideChar?

[5]

Sértő a nagy költő számára.

Tudja, hogyan kell olvasni? WideString és állítsa be a méretet

még mindig hibát okoz!

Különben is, hol és milyen kóddal.
És ezt mondja a hiba?

És ki ad emléket, Puskin?

Nos. Meg fogok tanulni. ha van valami, visszafordulok!

Ui Megfontolandó információk.
Két hiba van [8]. Egy már többször szólalt meg. A második a ReadBuffer eljárás első paraméteréhez kapcsolódik.

Nos, az első hiba egyértelmű. figyelmetlen! és a második, ahogy mondták, a memória elosztása. Ezt tettem:


var # xA0; st: TFileStream;
# xA0; # xA0; # xA0; ws: WideString;
# xA0; # xA0; # xA0; s: String;
kezdődik
# xA0; st: = TFileStream.Create (Fájlnév, fmOpenRead);
# xA0; SetLength (ws, st.Size);
# xA0; st.ReadBuffer (PWideChar (ws) ^, st.Size);
# xA0; s: = ws;
# xA0; Memo1.Lines.Add (s);
végén;

elvben csak a kérdőjelek végén jelenik meg.

Kapcsolódó cikkek