Перейти к содержанию
Fire Monkey от А до Я

Roma77751

Пользователи
  • Постов

    77
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Сообщения, опубликованные Roma77751

  1. Ничего в нем отличного нет. У меня подписка на эти компоненты, со всей ответственностью заявляю - TMS веббраузер - всего лишь надстройка над штатными нативными реализациями из FMX начиная с версии 3.0. До этого они использовали на мобильных платформах - реализацию из FMX (не уверен в этом утверждении, давненько было), на десктопе - хромиум.

    Причем ввиду того, что в FMX есть некоторые привязки к стандартному веббраузеру, многое из того, что штатно работает с TWebBrowser, не хочет работать с TMSWebBrowser. В качестве примера - вы не можете разместить TMSWebBrowser на закладке табконтрола. Вернее, можете, но результат вас не обрадует.

     

     

    Хорошо, если все так плохо, можете мне порекомендовать какой нибудь браузер...Моя проблема из twebbrowser нельзя вытащить куки, с ним по моему вообще ничего нельзя делать кроме как открывать страницы...можно было бы авторизацию через инди сделать но не вариант, страница тоже должна быть авторизована, а в webbrowser куки не сунешь-в итоге 2 раза надо авторизовываться - не вариант.

    и не знаю может только у меня косяк какой то, но на веб страницах скрипты не отрабатывает-глючит...очень нужно разрешить эту проблему, все в нее уперлось...

  2. Код в студию... Компонент-то вообще создан?

     

    ))) да создан, да кода то особо нет, создал проект для проверки...кинул компоненты idhttp и webbrowser. Сделал гет запрос

      result:=idhttp1.Get('http://www.vk.com');

    и попробовал сунуть в браузер полученное  FMX.WebBrowser.TCustomWebBrowser.(тут не было в списке loadfromstrings) LoadFromStrings(result,' ');

  3. Всем доброго времени суток! Вычитал на форуме, что в данном пакете версии 2.5.0.2 и выше, есть отличный компонент TTMSFMXWebBrowser.  Но в сети его найти оказалось проблемой, уже много с каких источников качал - везде демо. Поделитесь кто знает информацией где его можно скачать. Очень буду благодарен! :)

  4. Добрый день,

     

    Изменилось, был добавлен метод:

    TWebBrowser.LoadFromStrings(const Content: string; const BaseUrl: string);
    

    Content - текст вашей страницы, BaseUrl - это фейковый путь, по которому якобы размещается ваша страница.

     

     

    Это в какой версии? у меня XE7 такого метода нет.

  5. Всем привет! Столкнулся с такой проблемой, не могу вытащить куки с загруженной страницы. На delphi 7 помню просто писал 

    var cookie: string;

    begin 

    cookie:=webbrowser1.OleObject.document.cookie;

    end;

    XE7  ругается на document и olejbject. Подскажите кто может, в чем дело? И как можно выйти из ситуации. Вообще мне куки надо в indy загрузить.

  6. Ребят спасибо большое что уделили внимание и помогли решить мой вопрос. Отдельное спасибо kami, ZuBy. Все дело было действительно в кривом синапсе. Если б не вы парни не знаю сколько бы еще ночей просидел безрезультатно, уж в синапс бы не полез, мозгом не дорос :) kami ты крутой, понял сразу где собака зарыта :D

    Сделал все через indy, пошло как по маслу)

  7. Поклонники синапса, извините. Roma77751 - у вас ничего не получится с синапсом. Если честно, я не понимаю, как он работает с любой Delphi версии больше 2007.

    Возможно, в полной библиотеке все нормально и это недостатки "портированной" для мобильных платформ.

     

    Вкратце - полный швах в модуле synabyte, класс (вернее record) TSynaBytes. Несмотря на явно используемую директиву {$IFDEF UNICODE}, считается что 1 символ = 1 байт. Отсюда все проблемы

     

    Roma77751, уходите с этой библиотеки. Не будет она работать на мобильных платформах.

     

    может все таки можно как то перекодировать текст? 

    или в коде самого синапса покопаться...?

  8. Поклонники синапса, извините. Roma77751 - у вас ничего не получится с синапсом. Если честно, я не понимаю, как он работает с любой Delphi версии больше 2007.

    Возможно, в полной библиотеке все нормально и это недостатки "портированной" для мобильных платформ.

     

    Вкратце - полный швах в модуле synabyte, класс (вернее record) TSynaBytes. Несмотря на явно используемую директиву {$IFDEF UNICODE}, считается что 1 символ = 1 байт. Отсюда все проблемы

     

    Roma77751, уходите с этой библиотеки. Не будет она работать на мобильных платформах.

     

    Вы уверены что проблема в синапсе? :(  так долго его искал...

    если да то, какую библиотеку посоветуете, кроме indy...indy что то я понять нормально не смог. 

    вопрос пока не буду закрывать, попробую все тоже самое с библиотекой которую вы посоветуете и выложу результат. 

  9. 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 хоть и старая но надежная и стабильная... 

    post-2162-0-24719800-1457428216_thumb.jp

    post-2162-0-01555300-1457428610_thumb.jp

  10.  

     

    Сервер выдает 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 тоже ошибки нет....но тоже русского нет(

  11. Потому что в приведенном коде StringStream не задействует работу со строками, а работает как TByteStream, наследником коего он, собственно, и является. А StringList пытается преобразовать набор байт в символы используя TEncoding, что и приводит к ошибке.

    Вердикт один - несовпадение кодировки. Видимо, сервер отдает не UTF8, принятый по умолчанию на Android.

    Сервер выдает utf8. и используя stringstream ошибок нет. все загружается как надо(только русские буквы закорючками изображены) Только мне нужно работать именно со строками...ну или проще можно поставить вопрос: как текст UTF8 кодировки  засунуть в memo.в винде проблем нет, в андроиде выдает ошибку...уже массу всего перечитал, перепробовал, ничего не получается.  

  12. Насчет синапса - я упустил или его портировали на андроид? 

    Насколько я знаю - на данный момент поддерживают андроид: InDy, ICS и системная либа: System.Net

    С синапсом давно не работал, так что могу посоветовать последню библиотеку выше. 

    Indi мне показалась сильно мудреная,что то как то не захотел с ней разбираться. Синапс больше по душе. Да кое как отыскал для андроида, писали что кривовато работает, но я пока сбоев не обнаружил. 

  13. 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".

    По поводу тэга, что он делает?

  14. Всем доброго времени суток! Очень нужна помощь знатоков. Знаю что вопрос поднимался на эту тему неоднократно, но я не смог разобраться с кодировками. Задача в следующем: делаю 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".
    Плз кто знает объясните этот прикол с кодировками, очень хочу понять...
×
×
  • Создать...