Roma77751
-
Постов
77 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Сообщения, опубликованные Roma77751
-
-
Ничего в нем отличного нет. У меня подписка на эти компоненты, со всей ответственностью заявляю - TMS веббраузер - всего лишь надстройка над штатными нативными реализациями из FMX начиная с версии 3.0. До этого они использовали на мобильных платформах - реализацию из FMX (не уверен в этом утверждении, давненько было), на десктопе - хромиум.
Причем ввиду того, что в FMX есть некоторые привязки к стандартному веббраузеру, многое из того, что штатно работает с TWebBrowser, не хочет работать с TMSWebBrowser. В качестве примера - вы не можете разместить TMSWebBrowser на закладке табконтрола. Вернее, можете, но результат вас не обрадует.
Хорошо, если все так плохо, можете мне порекомендовать какой нибудь браузер...Моя проблема из twebbrowser нельзя вытащить куки, с ним по моему вообще ничего нельзя делать кроме как открывать страницы...можно было бы авторизацию через инди сделать но не вариант, страница тоже должна быть авторизована, а в webbrowser куки не сунешь-в итоге 2 раза надо авторизовываться - не вариант.
и не знаю может только у меня косяк какой то, но на веб страницах скрипты не отрабатывает-глючит...очень нужно разрешить эту проблему, все в нее уперлось...
-
Код в студию... Компонент-то вообще создан?
))) да создан, да кода то особо нет, создал проект для проверки...кинул компоненты idhttp и webbrowser. Сделал гет запрос
result:=idhttp1.Get('http://www.vk.com');
и попробовал сунуть в браузер полученное FMX.WebBrowser.TCustomWebBrowser.(тут не было в списке loadfromstrings) LoadFromStrings(result,' ');
-
попробовал, такую ошибку дает [DCC Error] Unit1.pas(151): E2076 This form of method call only allowed for class methods or constructor.
-
Всем доброго времени суток! Вычитал на форуме, что в данном пакете версии 2.5.0.2 и выше, есть отличный компонент TTMSFMXWebBrowser. Но в сети его найти оказалось проблемой, уже много с каких источников качал - везде демо. Поделитесь кто знает информацией где его можно скачать. Очень буду благодарен!
-
Добрый день,
Изменилось, был добавлен метод:
TWebBrowser.LoadFromStrings(const Content: string; const BaseUrl: string);
Content - текст вашей страницы, BaseUrl - это фейковый путь, по которому якобы размещается ваша страница.
Это в какой версии? у меня XE7 такого метода нет.
-
Как быть с OleObject-ми в FMX?
Очень интересует этот вопрос. Кто знает, отпишитесь, как быть? может кто подскажет браузер с более широким функционалом?
-
у меня почему то java вообще в браузере не работает...или что то надо прописать?
-
так что ребят, никто не в курсе?Вообще после авторизации webbrowser меня помнит, стало быть куки присутствуют, как их вытащить?
-
Всем привет! Столкнулся с такой проблемой, не могу вытащить куки с загруженной страницы. На delphi 7 помню просто писал
var cookie: string;
begin
cookie:=webbrowser1.OleObject.document.cookie;
end;
XE7 ругается на document и olejbject. Подскажите кто может, в чем дело? И как можно выйти из ситуации. Вообще мне куки надо в indy загрузить.
-
Ребят спасибо большое что уделили внимание и помогли решить мой вопрос. Отдельное спасибо kami, ZuBy. Все дело было действительно в кривом синапсе. Если б не вы парни не знаю сколько бы еще ночей просидел безрезультатно, уж в синапс бы не полез, мозгом не дорос kami ты крутой, понял сразу где собака зарыта
Сделал все через indy, пошло как по маслу)
-
Поклонники синапса, извините. Roma77751 - у вас ничего не получится с синапсом. Если честно, я не понимаю, как он работает с любой Delphi версии больше 2007.
Возможно, в полной библиотеке все нормально и это недостатки "портированной" для мобильных платформ.
Вкратце - полный швах в модуле synabyte, класс (вернее record) TSynaBytes. Несмотря на явно используемую директиву {$IFDEF UNICODE}, считается что 1 символ = 1 байт. Отсюда все проблемы
Roma77751, уходите с этой библиотеки. Не будет она работать на мобильных платформах.
может все таки можно как то перекодировать текст?
или в коде самого синапса покопаться...?
-
Поклонники синапса, извините. Roma77751 - у вас ничего не получится с синапсом. Если честно, я не понимаю, как он работает с любой Delphi версии больше 2007.
Возможно, в полной библиотеке все нормально и это недостатки "портированной" для мобильных платформ.
Вкратце - полный швах в модуле synabyte, класс (вернее record) TSynaBytes. Несмотря на явно используемую директиву {$IFDEF UNICODE}, считается что 1 символ = 1 байт. Отсюда все проблемы
Roma77751, уходите с этой библиотеки. Не будет она работать на мобильных платформах.
Вы уверены что проблема в синапсе? так долго его искал...
если да то, какую библиотеку посоветуете, кроме indy...indy что то я понять нормально не смог.
вопрос пока не буду закрывать, попробую все тоже самое с библиотекой которую вы посоветуете и выложу результат.
-
а что скриншот с телефона платная услуга?)
)))верно, затупил, говорю ночь не спал...подумал лень перекидывать с телефона скрин и не сообразил что он итак уже подключен
-
сори 2 раза прикрепил, засыпаю видимо...(
-
1) Сервер Ваш? если да, то в php указать header('Content-Type: text/html; charset=utf-8');
2) посмореть в хидерах или снифером что приходит.
По умолчанию в Delphi под Windows кодировка по умолчанию ANSI, Остальные UTF-8
Проверьте этим кодом кодировку
var Stream: TBytesStream; Size: Integer; Buffer: TBytes; Encoding: TEncoding; begin Stream := TBytesStream.Create; try Stream.LoadFromStream(ТУТ ВАШИ ДАННЫЕ); Buffer := Stream.Bytes; Size := TEncoding.GetBufferEncoding(Buffer, Encoding, TEncoding.Default); finally Freeandnil(Stream); end; ShowMessage(Encoding.EncodingName); end;
1)нет сервер чужой.
2) снифером(делая запрос не с телефона а с компа) смотрел, в ответе есть строка <meta http-equiv="Content-Type" content="text/html; charset=utf-8">.(в нем из под винды кстати тоже русские буквы закорючки)\
3) сунул код в прогу вывел UTF8.
Какие еще мысли будут? всю ночь не спал, ковырялся...так XE7 замучал что с утра он отказался компилировать,пришлось перезапустить, перезапустил-перестал видеть android устройства, только после 2-го перезапуска норм заработал. Вообще XE7 только поставил, но впечатления не очень честно говоря...Delphi 7 хоть и старая но надежная и стабильная...
-
Дайте ссылку на исходники синапса под андроид. Попробую покопаться в них.
по моему этот рабочий http://delphi.cz/img/synapseandroid/synapse_2.zip
-
Сервер выдает utf8. и используя stringstream ошибок нет. все загружается как надо(только русские буквы закорючками изображены) Только мне нужно работать именно со строками...ну или проще можно поставить вопрос: как текст UTF8 кодировки засунуть в memo.в винде проблем нет, в андроиде выдает ошибку...уже массу всего перечитал, перепробовал, ничего не получается.
Если русские символы - закорючки, значит, не UTF8:
- либо у вас при загрузке в StringList и Memo,
- либо у сервера.
Написать в ответе Content-Type:"text/html; charset=utf-8", а содержимое отдать в UTF16 ума много не надо.
Повторю - в StringStream ошибки нет, потому что в приведенном коде не используется работа со строками. Попробуйте получить p.DataString - ошибка возникнет?
По поводу замечания "в memo в винде проблем нет" - винда использует UTF16. И Delphi под винду тоже использует UTF16. Возможно, дело в этом.
Не уверен что все так... ну допустим с сервера приходит другая кодировка, но я пробовал и так s.loadfromstream(http.document,Tencoding.UTF8).(s-это stringlist)...так выводится та же ошибка, поставил вместо UTF8 - ANSI хотя сколько читал что на анроиде только utf8...ну и ошибка пропала...вообще не пойму, как не крутил не могу вывести русские буквы,одни иероглифы...и с ASCII тоже ошибки нет....но тоже русского нет(
-
Потому что в приведенном коде StringStream не задействует работу со строками, а работает как TByteStream, наследником коего он, собственно, и является. А StringList пытается преобразовать набор байт в символы используя TEncoding, что и приводит к ошибке.
Вердикт один - несовпадение кодировки. Видимо, сервер отдает не UTF8, принятый по умолчанию на Android.
Сервер выдает utf8. и используя stringstream ошибок нет. все загружается как надо(только русские буквы закорючками изображены) Только мне нужно работать именно со строками...ну или проще можно поставить вопрос: как текст UTF8 кодировки засунуть в memo.в винде проблем нет, в андроиде выдает ошибку...уже массу всего перечитал, перепробовал, ничего не получается.
-
что с кодировками делать, вопрос не дает покоя. почему tstringstream может через webbrowser вывести корявый текст а через tstringlist или memo выдает ошибку...?
-
Насчет синапса - я упустил или его портировали на андроид?
Насколько я знаю - на данный момент поддерживают андроид: InDy, ICS и системная либа: System.Net
С синапсом давно не работал, так что могу посоветовать последню библиотеку выше.
Indi мне показалась сильно мудреная,что то как то не захотел с ней разбираться. Синапс больше по душе. Да кое как отыскал для андроида, писали что кривовато работает, но я пока сбоев не обнаружил.
-
1. Код закинь в теги
[ code=auto:0] [/ code]2. Насчет построчного редактирования - почему то неуверен что это вам нужно
3. А теперь по делу - пробуй загрузить в мемо1 - без указания кодировки.
4. Посмотри снифером заголовки документа от сервера - в каком формате тебе присылает сервак.(ну или System.Net.HttpClient.THttpClient.Head)
5. Смотри мою тему
//А что за библиотека для работы с сетью у вас? Похоже на синапс....
Да, это синапс.
Приходит все в UTF8 однозначно.
кидал в мемо с винды все работает(в тексте закорючки), делал memo1.text:=utf8toansi(memo1.text); и в мемо все норм. А в андроиде ничего не выходит, грубо говоря текст с кодировкой utf8 сую в мемо(без декодировок) выдает ошибку "No mapping for the Unicode character exists in the target multi-byte code page".
По поводу тэга, что он делает?
-
Всем доброго времени суток! Очень нужна помощь знатоков. Знаю что вопрос поднимался на эту тему неоднократно, но я не смог разобраться с кодировками. Задача в следующем: делаю get запрос на сайт. полученные данные сохраняю в html файл. корректирую и открываю исправленный вариант в webbrowser.
вот код:
http:=thttpsend.Create; p:=TStringStream.Create('', TEncoding.utf8); http.Headers.Add('content-type: application/json; charset="UTF-8"'); http.MimeType:='application/x-www-form-urlencoded' ; http.UserAgent:='Mozilla/5.0 (Windows NT 6.0; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0'; if http.HTTPMethod('get','http://www.mail.ru/') then p.LoadFromStream(http.document); p.SaveToFile('sdcard/Android/data/test.html');
с таким кодом отображаются закорючки, но это пол беды...в tstringstream толком не могу скорректировать код как мне надо, в нем я так понял редактируется текст по буквам. а мне надо построчно. Использую вместо tstringstream tstringlist или memo.lines выдает ошибку "No mapping for the Unicode character exists in the target multi-byte code page".Плз кто знает объясните этот прикол с кодировками, очень хочу понять...
TMS Pack for FireMonkey
в Альтернативные TWebBrowser
Опубликовано
Где можно это посмотреть?
P.S. спасибо за помощь.