Форум: "Начинающим";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
ВнизПомогите с оптимизацией кода Найти похожие ветки
← →
novai (2009-06-24 09:10) [0]Нужно считать данные из TMemoryStream (там только текст) в WideString.
вот мой код:stream:TMemoryStream;
tmp:WideString;
buf: char;
for n := 1 to stream.Size do
begin
stream.ReadBuffer(buf, 1);
tmp:=tmp + buf;
end;
как оптимизировать (не читать по 1)?
← →
Сергей М. © (2009-06-24 09:18) [1]tmp := WideString(PWideChar(stream.Memory))
← →
RWolf © (2009-06-24 09:21) [2]tmp:string;
...
setLength(tmp,stream.Size);
stream.ReadBuffer(tmp[1],stream.Size);
после чего конвертируем ANSI в юникод.
← →
Сергей М. © (2009-06-24 09:24) [3]
> из TMemoryStream (там только текст) в WideString.
В [1] предполагается, что в стриме лежит строка с терминирующим нулем на конце
← →
novai (2009-06-24 09:46) [4]в обоих случаях получаю в tmp такое: ????????›??????????????•????..
это проблемма с кодировкой? в stream находится html страница полученая с помощью: IdHTTP1.Get("", stream);
← →
MBo © (2009-06-24 10:05) [5]в stream лежит ansi или wide?
← →
Сергей М. © (2009-06-24 10:06) [6]
> в stream находится html страница полученая с помощью: IdHTTP1.
> Get("", stream);
Не знаю что у тебя там находится, возможно и кодировка неизвестная, но у меня все замечательно работаетprocedure TForm1.Button5Click(Sender: TObject);
var
wstr1,wstr2 : WideString;
stream: TMemoryStream;
begin
wstr1 := "Ìîÿ þíèêîäîâàÿ ñòðîêà";
stream := TMemoryStream.Create;
try
stream.WriteBuffer(PWideChar(wstr1)^, Succ(Length(wstr1)) * SizeOf(WideChar));
wstr2 := PWideChar(stream.memory);
ShowMessage(wstr2);
finally
stream.Free;
end;
end;
← →
Anatoly Podgoretsky © (2009-06-24 10:06) [7]Да нигде нет показа tmp, а оно не визуальный компонент.
← →
novai (2009-06-24 10:22) [8]да там utf (штирлиц сказал), это ansi или wide? (при ansi в tmp все читается, но русские буквы корявые)
← →
novai (2009-06-24 10:26) [9]Utf8ToAnsi для tmp результата не дал(
← →
Плохиш © (2009-06-24 11:00) [10]
> novai (24.06.09 09:46) [4]
>
> в обоих случаях получаю в tmp такое: ????????›??????????
> ????•????..
Чем смотрим?
← →
palva © (2009-06-24 11:03) [11]
> да там utf (штирлиц сказал), это ansi или wide?
Ни то, ни другое. Да и не мог Штирлиц такое сказать. utf-8 - еще куда ни шло. Вы уж пишите, что у вас на самом деле. Если не знаете терминов, то выкладывайте код или 16-ричный вид.
← →
novai (2009-06-24 11:08) [12]
>
> Чем смотрим?
отладчиком по точке останова...
> Да и не мог Штирлиц такое сказать. utf-8
делал utf8 to win и utf7 to win, одинаково нормально переводит...
гружу от сюда: IdHTTP1.Get("http://angara.net/meteo/?loc=irk", stream);
← →
novai (2009-06-24 11:10) [13]кусок из tmp:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">"#$D#$A"<html><head><title>Angara.Net - Активный отдых, СЃРїРѕСЂС‚, туризм, путеС?ествия, фото.</title>"#$D#$A"<link rel="stylesheet" type
← →
Palladin © (2009-06-24 11:15) [14]Это не WideString, это UTF8
UTF8Decode + F1
← →
brother © (2009-06-24 11:15) [15]точнее: ссылки разные, но все на этот сайт...
← →
palva © (2009-06-24 11:15) [16]Браузерам оттуда возвращается Windows-1251.
Укажи в UserAgent, что ты браузер, и ожидаешь русский язык и тебе тоже сервер отдаст страничку, как надо. Точных названий параметров не помню.
← →
Palladin © (2009-06-24 11:16) [17]чет я стормозил...
← →
palva © (2009-06-24 11:19) [18][16] был не прав, браузеру вернулось utf-8
← →
novai (2009-06-24 11:21) [19]
> [16] был не прав, браузеру вернулось utf-8
да я посмотрел, там оно
← →
novai (2009-06-24 11:56) [20]Спасибо всем отвечавшим! Все работает.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c