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

kami

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

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

  • Посещение

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

    41

Весь контент kami

  1. Самое простое (да, это просто обходится любым,кто знаком с ProcessMonitor): программа-"подготовщик" запускается с правами админа и записывает в HKLM случайно сгенерированное довольно длинное значение. Она же выдает его пользователю в читабельном виде (например - через Base64). Рабочее приложение читает это значение (на чтение HKLM доступен) и сравнивает с эталоном, который хранится "внутри" нее.
  2. kami

    access violation TImage

    Пардон, а когда с ними было хорошо? до 10 версии - постоянные проблемы с версиями OpenSSL. В отличие от других компонентов влезть в код Indy, покопаться чтобы понять где возникает глюк - практически нереально, слишком много всего наворочено. Да и взять самое простое - на кой idHTTP (который клиент) возбуждает исключение на коды 400-599 вместо того, чтобы просто отдать HTTPStatusCode в ответе? В результате приходится городить многоэтажные конструкции try-except, что явно не способствует читабельности уже собственного кода. Единственный плюс (который значим для меня, т.е. читать как имхо) у http-компонентов Indy - более-менее нормальная работа с multipart-form-data. В System.Net.Mime это немного недоработано, пришлось делать собственную надстройку. P.S. на RadStudio Seattle Tour в СПб неофициально рекомендовали не использовать Indy, а действовать через System.Net.HttpClient
  3. kami

    access violation TImage

    OnIdHTTP1Work случайно не в отдельном потоке работает? Откажитесь от Indy, переходите на System.Net.*.pas
  4. У меня в понедельник эта эпопея была, поскольку срок действия того сертификата закончился в воскресенье.
  5. Было бы неплохо продублировать сюда ответ из Stackoverflow, если он вам помог
  6. Мне вот интересно - почему авторы вопросов не допускают мысли, что проблема не в их приложении, а действительно сам сервер отдает именно такой контент? Казалось бы - чего проще, поставить расширение Postman для Chrome и вручную отправить именно тот запрос, который вызывает сомнения. В ответе сразу всё будет видно. И уже тогда можно с уверенностью утверждать "проблема именно в приложении, потому что сайт всё отдает нормально" или "проблема в сайте, он отдает ерунду".
  7. Простите, а зачем? Вот лежит у меня в кармане телефон. Тихо, спокойно лежит. И тут какое-то приложение решает, что нужно разблокировать экран и что-то показать. Во-первых, легко могут пойти несанкционированные нажатия (мотыляется телефон во внутреннем кармане куртки, фиг знает как сенсор экрана будет реагировать), а во-вторых включается экран и начинает усиленно садиться батарейка. Вопрос: на... в смысле, зачем я буду держать на своем устройстве такое приложение? "Правильные" приложения показывают уведомление в "шторке", сопровождаемое звуковым сигналом. Услышал пользователь - сам разблокировал экран и пошел разбираться. Не услышал - значит чем-то занят, нечего его беспокоить.
  8. kami

    TMultiView и TListBox

    А лучше не делать такие действия из "детей" MultiView. Установку Selected можно оставить, а скрывать лучше через какой-то промежуток времени (реализация "в лоб" - по таймеру с маленьким интервалом и однократным срабатыванием)
  9. kami

    TMultiView и TListBox

    Вставьте костыль - перед HideMaster сделайте Application.ProcessMessages
  10. Новые ключи, которые не предусмотрены опциями проекта, можно добавить (например) при помощи бесплатной утилиты iOS9 Fix от TMSSoftware
  11. kami

    studio hotkeys

    Бывает. От версии Delphi не зависит IDE Fix pack не помогает. Но у меня это проскакивает, когда создается обработчик события по двойному клику в Object Inspector.
  12. kami

    NetHTTPClient и SSL

    Очень легко. var Response: IHTTPResponse; begin Response := FHTTPClient.Post(CONST_URL, Params, Stream); AnswerCode := Response.StatusCode; // вот этот код.
  13. Видимо, у нас разные понятия об универсальности. Ручное задание значения "глобального смещения", имхо, следует считать "тонкой доводкой" исключительно под конкретный тип окружения. Но - ваше право. Еще раз огромное спасибо за модуль. За сим умолкаю.
  14. Тоже немного не так - он будет каждый раз искать форму при показе клавиатуры. Что, впрочем, и без того проделывается в ScrollInToRect Совершенно верно, именно про него. А вот то что он работает как ваш исходный код модуля - не согласен. потому что в ScrollableForm как раз и проводится ScreenToClient для координат клавиатуры в FormVirtualKeyboardShown. Повторюсь - про Android судить не могу, но в iOS правильное позиционирование должно быть именно с ScreenToClient преобразованием координат клавиатуры.
  15. Увы - на андроиде протестировать не могу. Да, медленнее из-за поиска (а сильно? на IOS Simulator я разницы не ощутил, да и вызывается он однократно при показе). Однако в стандартной клавиатуре на iOS 9 всегда вверху есть кнопки типа "отменить/копировать" и т.п. При этом IFMXVirtualKeyboardToolbarService.IsToolbarEnabled возвращает False. В iOS8 такого я не видел. Т.е. получается, что в iOS9 всегда нужно добавлять VKOffset, а в iOS8 - нет. Зоопарк андроида всегда впечатлял Но думается, введением переменной дело в любом случае не ограничить, раз "там включают, а тут не включают" тулбар в размер клавиатуры. По поводу п.1 - а как отрабатывает стандартный способ от Embarcadero?
  16. В модуле есть неточность с определением координат, из-за этого и введено VKOffset. Дело в том, что координаты клавиатуры получаются абсолютными относительно экрана, а координаты контрола, которому нужно провести позиционирование - абсолютными относительно формы. Сама же форма имеет TopLeft отличные от нуля (шторка). Нужно преобразование координат клавиатуры относительно формы. В этом случае VKOffset не нужен, т.к. координаты клавиатуры включают в себя тулбар (если он есть). Прикладываю уточненный модуль, оттестировано на iOS. Прошу проверить на Android.
  17. Хммм... не совсем отрабатывает на iOS. Позиция меняется, но не на столько, чтобы контрол стал полностью виден. При этом "верхних" тулбаров на клавиатуре нет. Правильно ли я понимаю, что для использования этого модуля не нужно извращаться, как предложено в "стандартном" способе - класть все контролы на VertScrollBox? Нет, туплю. Тулбар был, всё классно.
  18. Обожаю вот такую вот реализацию: включил в uses - функционал заработал, исключил - функционала нет, но ни на что другое это не повлияло. И не задумываешься, что "ага, раз мне нужно это, значит еще в 10 модулях нужно переопределить всё подряд и вообще переписать заново". ZuBy, огромнЕйшее спасибо! Сейчас будем посмотреть, как оно на iOS живет
  19. На презентации Seattle рекомендовали использовать именно его, а не Indy. Вот только не знаю - работает ли он через https. А так - насколько я знаю, Indy не заставить отдавать контент в случае кода ответа, отличного от 200. Если сервер возвращает 400 - 5хх ошибку, то происходит выход из метода Get/Post через исключение(!), что мне изначально не понравилось. Контент при этом недоступен, вполне возможно (я не стал разбираться) исключение вызывается сразу после получения заголовка, до приема тела ответа.
  20. {$IFDEF offtop}по ряду причин стараюсь использовать именно прослойку между БД и приложением. Стойкое убеждение (не для холивара) - не должна СУБД быть открытой для доступа "снаружи", даже если это локалка. Сегодня так, а завтра потребуется доступ через интернет... Я считаю, что правильный админ никогда не откроет порт для доступа к БД наружу. В данном случае не понимаю, что мешает установить свой сервис не на машину с СУБД, а "рядом".{$ENDIF} А так - да, рекламный пост Pax Beach , все нормально, очень многие знают про UniDac
  21. MS SQL Server - это не локальное подключение и не Embedded-база. Смотрите пункт "Создание приложений для баз данных с клиент-серверным подключением". Это же декларируется и в pdf-таблице полных отличий.
  22. Господа, огромное спасибо за ответы, думаю, на этом можно закругляться. В любом случае - "вскрытие покажет"
  23. Видимо, я плохо объясняю, тоже тяжелый день. Попробую еще раз, вкратце. Есть текущая версия приложения, сделана на XE 7 под iOS 8.4. Заказчик сидит на этой версии iOS и не будет обновляться до тех пор, пока мы не будем готовы. Требуется перейти на Seattle + iOS 9.2 Условие: на период перехода (установка, обновления, миграция кода и стилей) нельзя потерять возможность компиляции и деплоя в XE7 под iOS 8.4 на случай экстренных правок. Т.е. обновление-обновлением, но "существующая конфигурация" должна иметь возможность продолжить работу вне зависимости от версии OSX и XCode. По большей части это относится к периоду: OSX и XCode уже обновлены, я занимаюсь миграцией кода и стилей на Seattle, и тут резко прилетает задача чего-нибудь быстро-быстро поправить в XE 7. Вот и опасаюсь - сможет ли XE 7 сработаться с новым XCode и сиэтловским paserver...
×
×
  • Создать...