Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как загрузить в Memo текст из файла в Юникоде [D7, XP]


Страницы:   1 2

transtream ©   (2008-02-12 20:15:00) 

Уважаемые профи, как загрузить в Memo текст в юникоде из файла?
Я делал так:

var s,s1:String;
    f:TextFile;
begin
 AssignFile(f, FileName);
 Reset(f);
  while not EoF(f) do
   begin
    ReadLn(f,s);
    s1:=WideCharToString(PWideChar(s));
    Memo1.Lines.Add(s1);
  end;
end;

В результате вместо символов текста я получаю знаки "?"...
Я так думаю, что все дело в WideCharToString(PWideChar(s)); кажется что здесь делаю что-то не то или совсем не то! Подскажите пожалуйста!


Palladin   (2008-02-14 15:46:00) [1]

st.ReadBuffer(@ws[1], st.Size);


transtream   (2008-02-14 15:46:00) [2]

ах... да еще St.Free...


transtream   (2008-02-14 15:44:00) [3]

ну первая ошибка понятно... невнимателен! а вторая, как тут и говорилось, выделение памяти... я сделал так:


var  st: TFileStream;
     ws: WideString;
     s:String;
begin
  st:=TFileStream.Create(FileName, fmOpenRead);
  SetLength(ws, st.Size);
  st.ReadBuffer(PWideChar(ws)^, st.Size);
  s:=ws;
  Memo1.Lines.Add(s);
end;


в принципе работает, только в конце знаки вопросов появляются...


Германн   (2008-02-14 01:38:00) [4]


> transtream ©   (13.02.08 21:49) [17]
>
> чтож... буду учиться!!! если что, еще обращусь!
>

Вот мудрая мысль. Обращайся.

P.S. Информация к размышлению.
В [8] две ошибки. Одна уже несколько раз озвучена. Вторая связана с первым параметром процедуры ReadBuffer.


transtream   (2008-02-13 21:49:00) [5]

чтож... буду учиться!!! если что, еще обращусь!


Германн   (2008-02-13 00:44:00) [6]


> transtream ©   (12.02.08 23:08) [13]
>
> все равно выдает ошибку!
>

И будет выдавать до тех пор, пока не научишься работать со строками и динамическими массивами.


Efir   (2008-02-13 00:28:00) [7]


> transtream ©   (12.02.08 21:37) [8]


А память кто будет выделять, Пушкин?


Anatoly Podgoretsky   (2008-02-12 23:14:00) [8]

> transtream  (12.02.2008 23:08:13)  [13]

Все равно где и с каким кодом.
И так и говорит мол ошибка?


transtream   (2008-02-12 23:08:00) [9]

все равно выдает ошибку!


Anatoly Podgoretsky   (2008-02-12 22:36:00) [10]

Читать умеешь? WideString и установить размер


Leonid Troyanovsky   (2008-02-12 22:11:00) [11]


> transtream ©   (12.02.08 22:00) [10]

> тогда что, если PWideChar?

[5]

Обидно за великого поэта.

--
Regards, LVT.


transtream   (2008-02-12 22:00:00) [12]

тогда что, если PWideChar?


Leonid Troyanovsky   (2008-02-12 21:46:00) [13]


> transtream ©   (12.02.08 21:37) [8]

>   st.ReadBuffer(ws,st.Size); // здесь выдает ошибку

Грустно, девушки, грустно.
А ведь же совсем недавно поминали А.С. Пушкина.

И какой нах PWideChar.

--
Regards, LVT.


transtream   (2008-02-12 21:37:00) [14]

при чтении выдает ошибку...


var  st: TFileStream;
    ws: PWideChar;
    s:String;
begin
  st:=TFileStream.Create(FileName, fmOpenRead);
  st.ReadBuffer(ws,st.Size); // здесь выдает ошибку
  s:=WideCharToString(ws);
end;


Efir   (2008-02-12 21:17:00) [15]


> не много не понятно со вторым параметром (длиной) в ReadBuffer.
>  Если я хочу прочитать сразу весь файл, указывать Size?


Буфер - в байтах, поэтому - да.


transtream   (2008-02-12 21:14:00) [16]

не много не понятно со вторым параметром (длиной) в ReadBuffer. Если я хочу прочитать сразу весь файл, указывать Size?


Anatoly Podgoretsky   (2008-02-12 20:38:00) [17]

> transtream  (12.02.2008 20:35:04)  [4]

Можно и просто через File, но советую TFileStream и запись сразу в WideString с заранее установленой длиной, потом S := WS


transtream   (2008-02-12 20:35:00) [18]

а что просто через File??


transtream   (2008-02-12 20:35:00) [19]

у меня главная проблема даже не в отображении текста, а в получении данных из этого текста. Допустим, если взять ini файл, только в юникоде и вручную его обрабатывать.
Мне казалось чтобы его самому обработать надо его сначала в ANSI перекодировать...


Anatoly Podgoretsky   (2008-02-12 20:32:00) [20]

Дельфи поддерживает Юникод, вот только не надо использовать TextFile


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо