Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
ВнизКак загрузить в Memo текст из файла в Юникоде Найти похожие ветки
← →
transtream © (2008-02-12 20:15) [0]Уважаемые профи, как загрузить в 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)); кажется что здесь делаю что-то не то или совсем не то! Подскажите пожалуйста!
← →
Efir (2008-02-12 20:21) [1]VCL не поддерживает юникод, используй сторонние компоненты, например TNTComponents.
← →
Anatoly Podgoretsky © (2008-02-12 20:32) [2]Дельфи поддерживает Юникод, вот только не надо использовать TextFile
← →
transtream © (2008-02-12 20:35) [3]у меня главная проблема даже не в отображении текста, а в получении данных из этого текста. Допустим, если взять ini файл, только в юникоде и вручную его обрабатывать.
Мне казалось чтобы его самому обработать надо его сначала в ANSI перекодировать...
← →
transtream © (2008-02-12 20:35) [4]а что просто через File??
← →
Anatoly Podgoretsky © (2008-02-12 20:38) [5]> transtream (12.02.2008 20:35:04) [4]
Можно и просто через File, но советую TFileStream и запись сразу в WideString с заранее установленой длиной, потом S := WS
← →
transtream © (2008-02-12 21:14) [6]не много не понятно со вторым параметром (длиной) в ReadBuffer. Если я хочу прочитать сразу весь файл, указывать Size?
← →
Efir (2008-02-12 21:17) [7]
> не много не понятно со вторым параметром (длиной) в ReadBuffer.
> Если я хочу прочитать сразу весь файл, указывать Size?
Буфер - в байтах, поэтому - да.
← →
transtream © (2008-02-12 21:37) [8]при чтении выдает ошибку...
var st: TFileStream;
ws: PWideChar;
s:String;
begin
st:=TFileStream.Create(FileName, fmOpenRead);
st.ReadBuffer(ws,st.Size); // здесь выдает ошибку
s:=WideCharToString(ws);
end;
← →
Leonid Troyanovsky © (2008-02-12 21:46) [9]
> transtream © (12.02.08 21:37) [8]
> st.ReadBuffer(ws,st.Size); // здесь выдает ошибку
Грустно, девушки, грустно.
А ведь же совсем недавно поминали А.С. Пушкина.
И какой нах PWideChar.
--
Regards, LVT.
← →
transtream © (2008-02-12 22:00) [10]тогда что, если PWideChar?
← →
Leonid Troyanovsky © (2008-02-12 22:11) [11]
> transtream © (12.02.08 22:00) [10]
> тогда что, если PWideChar?
[5]
Обидно за великого поэта.
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2008-02-12 22:36) [12]Читать умеешь? WideString и установить размер
← →
transtream © (2008-02-12 23:08) [13]все равно выдает ошибку!
← →
Anatoly Podgoretsky © (2008-02-12 23:14) [14]> transtream (12.02.2008 23:08:13) [13]
Все равно где и с каким кодом.
И так и говорит мол ошибка?
← →
Efir (2008-02-13 00:28) [15]
> transtream © (12.02.08 21:37) [8]
А память кто будет выделять, Пушкин?
← →
Германн © (2008-02-13 00:44) [16]
> transtream © (12.02.08 23:08) [13]
>
> все равно выдает ошибку!
>
И будет выдавать до тех пор, пока не научишься работать со строками и динамическими массивами.
← →
transtream © (2008-02-13 21:49) [17]чтож... буду учиться!!! если что, еще обращусь!
← →
Германн © (2008-02-14 01:38) [18]
> transtream © (13.02.08 21:49) [17]
>
> чтож... буду учиться!!! если что, еще обращусь!
>
Вот мудрая мысль. Обращайся.
P.S. Информация к размышлению.
В [8] две ошибки. Одна уже несколько раз озвучена. Вторая связана с первым параметром процедуры ReadBuffer.
← →
transtream © (2008-02-14 15:44) [19]ну первая ошибка понятно... невнимателен! а вторая, как тут и говорилось, выделение памяти... я сделал так:
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;
в принципе работает, только в конце знаки вопросов появляются...
← →
transtream © (2008-02-14 15:46) [20]ах... да еще St.Free...
← →
Palladin © (2008-02-14 15:46) [21]st.ReadBuffer(@ws[1], st.Size);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.052 c