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

Akad

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

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

  • Посещение

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

    2

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

  1. 1 час назад, Fedor K сказал:

    1. Тут была идея подчеркнуть, что используется именно асинхронность самого THTTPClient, а не постройка своего велосипеда.

    С асинхронностью все печально. Ну то есть использовать можно, но отгрести всевозможных проблем на машинах пользователей тоже... Поэтому лучше отдельный поток и callback. Причём эта практика самая распространённая на всех платформах и api.

    1 час назад, Fedor K сказал:

    2. Можете дать пример кода вашей записи memo1? Или вы имеете ввиду обращение к UI без синхронизации?

    Synchronize, а дальше делай что хочешь. В XE 10.x.x будут проблемы в некоторых случаях, но на более ранних всё работало отлично.
     

  2. 14 часов назад, ENERGY сказал:

    TThread.CreateAnonymousThread(procedure ()   begin                   TThread.Synchronize

    Вы реально используете такой код? Небось на 3G соединениях ещё не тестировали... Жуть.

    13 часов назад, Fedor K сказал:

    Используем около года в довольно сильно нагруженном приложении для асинхронных вызовов API,

    (почти) все обращения к api потоко-независимы. А вот если одновременно из двух потоков сделать memo1.lines.add(..) то будет в лучшем случае бред в результате, в худшем - AV. 
     

  3. Кроме TMS - всё мимо. devart - это работа с бд напрямую, что само посебе является шизофренией. HTML - это ну очень узкая область применения.

    А альфаконтроллс - единственная нормальная возможность скины натягивать бесплатно.  Причём отлично работающая. Да и пара компонент там удобных есть.

    По остальным - как допилят - можно будет что-то говорить. Сейчас этого нет.

    11 минут назад, wamaco сказал:

    Чушь

    Чушь, что есть wine, под которым даже некоторые игры требующие DX11 идут без проблем, а уж поделка на win api из 90-х и подавно? Ну-ну.
     

  4. 9 минут назад, wamaco сказал:

    Мало компонентов для FMX? Странно.... их полно! причем очень полно!

    Где? Есть только куча однотипной дряни, типа расширенного 10 разными людьми ListView, глючащих по разному у разных авторов. Где девэкспресс или альфаконтроллс, где хотя бы простейший ричедит? Пока только 1 серьёзный производитель выпустил что-то под fmx, на сколько мне известно.

    P.S. Смысл crossvcl без мобильных платформ не понятен. На линуксе и маке есть вайн. Точка.
     

  5. 2 минуты назад, FREEFAR сказал:

    Какие конкретно есть у вас проблемы блокирующие публикацию в продакшн?

    1. Тормоза. Старт до логина, т.е. до первого практически пустого экрана от 3 сек. на телефоне типа S8 до 10-12...сек на менее "крутых". На вёдрах с 512 оперативки и параллельным существованием какого-нибудь монстра типа whatsapp программу можно даже не пытаться запускать. Там каждое действие обрабатывается секунд по 3-5.

    2. Бесконечные глюки UI. Даже на тестовом асусе периодически ловлю просто белый экран, который не оживает. А уж на китайцах курьеров ТАКОЕ происходит, что вообще...

    3. ОЧЕНЬ странная работа сервиса, который банально отсылает на сервер текущее местоположение курьера. Даже переписав его почти полностью на яве - работает через пень-колоду.

    Ну и стандартные глюки: не работа некоторых компонент, которые приходится заменять другими, глюки событий тача и т.д. Я тоже пока не начал внедрение, думал что как всё круто сейчас на базе существующего кода для win клиента заделаю приложение для курьеров. Писал я его действительно дня 2-3. А потом началась отладка.... Потеряв недели 3+ я понял, что быстрее с нуля написать на чём-то нативном, чем заставить работать ЭТО. Следующем, судя по всему, будет замена FMX на VCL в win клиенте. Причём на что-то стабильное типа XE2-XE4. Но это пока обсуждается.

    Поэтому конечно  FGX Native интересен, но я как-то скептично настроен. Надеюсь, что я ошибаюсь, и продукт выйдет классный.
     

  6. 54 минуты назад, Tumaso сказал:

    Размер apk/ipa как раз не главное, пусть хелловорд хоть 50 мб весит. Главное чтобы все быстро и надежно работало.

    Во-первых это очень важно людям с 4Гб флешкой на борту. А во-вторых не может 50Мб программа быстро стартонуть. Физически не может.

    Вебинар интересен только в случае, если FGX Native позволит продукт в продакшен пускать. Я вчера начал своё курьерское приложение на котлине переписывать, так как FMX мобильный - это просто ужас, который Эмба в какое-то адекватное состояние выводить не собирается, судя по последним 5 версиям студии. Так что хочется понимания, что это за продукт, а не очередную презенташку, в которой всё шикарно. Понятно, что на вебенаре будут обсуждаться только плюсы. Так что он не интересен по определению.
     

  7. А есть какие-нибудь демки? Главное, что бы хеловорд apk не весил 5-10Мб и не тормозил на старых аппаратах безбожно, как FMX. И что с сервисами под андроид?
     

  8. В HTML надо добавить что-то типа

        <script type="text/javascript">
    function Printt(){
        window.print();
    };
        </script>

    И потом просто вызвать этот ява код.

    TMSFMXWebBrowser1.ExecuteJavascript('Printt();');

    Если страница грузится с интернета полностью, то естественно надо отредактировать её с учётом html синтаксиса. Так же стоит убрать весь мусор со страниц и повысить версию браузеру для лучшей совместимости:

       a := TRegistry.Create;
       a.RootKey := HKEY_CURRENT_USER;
       a.OpenKey('Software\Microsoft\Internet Explorer\PageSetup',true);
       a.WriteString('footer','');
       a.WriteString('header','');
       a.CloseKey;
       a.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION',true);
       a.WriteInteger('Client1.exe',$2af9);
       a.CloseKey;
       a.Free;

    Где Client1,exe - имя вашего exe.

    P.S. И лучше использовать браузер от TMS, проблем под 10.2.х на порядок будет меньше.
     

  9. 14 часов назад, kami сказал:

    Через пару месяцев после релиза поступает задача "добавить новый функционал". И я на 100% уверен, что никто, даже находясь в здравом уме и твердой памяти, не вспомнит об этом нюансе - что надо что-то там дисаблить и блокировать.

    Это примерно как забыть о том, как работает функция, что где править. Естественно забудет, а потом вспомнит, когда менять что-то будет в этом месте. Вдеть в начале процедуры прямо сразу cooltimer.Enabled := false; наведёт на мысли.

    14 часов назад, kami сказал:

    И потом - вы же сами говорите, что делая легче себе в одном месте - вам приходится следить (делать себе сложнее) в нескольких других. Так не лучше ли сразу делать так, чтобы не пришлось воспитывать в себе некую склонность к мазохизму?

    Всегда много путей. Какой-то определённо проще. Но я не пишу приложения, которые лагают, которые нажал на кнопку рутинного действия и сидишь, ждёшь результат. Более того моё текущее приложение (клиент-серверное, с огромными объёмами данных от БД) ввобще не лагает, даже на 3G модеме, на котором параллельно ещё качается торрент. То есть для меня важно, что бы пользователь мог работать нормально.

    Единственное о чём я сожалею, что всё завязано на FMX. От него "прилетает" безумное количество мелких и не очень глюков, отсутствие работающих скинов и так далее. Но это уже к теме не относится... Я в текущий момент из интерфейса по скорости и удобству выжал уже почти максимум в том числе и из-за Application.ProcessMessages. 
     

  10. Так же плохой для многих стиль - goto, break и continue. А многим коллегам ума не хватает даже использовать  free /release и глобальные переменные, для них созданы всякие диезы с явами. И дальше что? Подстраиваться под всех, не используя возможности полноценного языка?

    Application.ProcessMessages надо просто использовать с осторожностью. Таймеры отключать, за нажатиями на закрытие форм и пр. следить. Если есть какое-то долгое вычисление, которое не предсказуемо через какое время закончится, а таблицу уже начали обновлять, то милое дело запустить его в другом потоке, параллельно в GUI проигрывая анимашку.  Другие варианты  реализаций - это очень сложно, и интерфейс получится не отзывчивым.

    Splash с прогрессом надо делать только так, если максимальной скорости загрузки хотим. Вообще много областей применений есть у  Application.ProcessMessages. Надо помнить об основных нюансах, иначе будут проблемы.
     

  11. 6 часов назад, ENERGY сказал:

    Это вы не разобрались с "потокобезопасностью", и скорее всего одновременно пытаетесь обращаться к данным из двух потоков - в результате случайные AV.  В том топике вас просили дать конкретный пример глючного кода, его так и не было.

    Я более 10 лет пишу многопоточные приложения, и как-бы немного знаю как и что делать. Ни каких случайных AV у меня нет. Есть

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

  12. В 11 марта 2018 г. в 18:17, wamaco сказал:

    Вообще то многие используют в продакшане довольно успешно!

    Не верю. Можно пруфчик? Ну в смысле что бы какая-то программа, которая ставится и работает на 10 000 компах без сбоев. Ну это просто не реально. Если кто-то причесал поделку от эмбы на малом предприятии, и впарил заказчику результат - это не считается. Под винду даже helo word будет глючить на fmx. Я молчу если на этот лабел скин от эмбы натянуть. Тогда как минимум minimize отвалится. В VCL - поверю на ранних версиях XE все действительно собирается и работает отлично. Но с fmx - не верю. Это не возможно.

    В 11 марта 2018 г. в 18:19, Ghk сказал:

     Под винду -хорошо , но под андроид - тихий ужас.

    Везде глюкалово. Начнём с того, что офиальные темы даже под винду - это вещь, которую похоже даже на тест не отдавали судя по всему. Под анроид, если выбирать компоненты не сильно хуже.

    20 часов назад, ENERGY сказал:

    Поставьте Berlin Update 2 - это стабильная рабочая версия для всех платформ (пишу в основном под Android\iOS). Токио глючная, с ней множество проблем.

    Ещё раз повторю: берлин глючнее токио. К проблемам с синхронайзом там добавляются ещё другие, о чём в прошлой ветке на тему я констатировал. Исследовать подробнее не стал, так как не вижу смысла ковырять труп. В токио под виндой 3 большие проблемы, которые тянут за собой много: криво портированный браузер, синхронайз, который выглючивает весь интерфейс, и сворачивание/разворачивание окна.  Это не решаемые проблемы без серьёзной доработки FMX, но на более ранних было гораздо хуже.


     

  13. Вот так я открываю яндекс навигатор:

    
    
    var
       Intent: JIntent;
       pm: JPackageManager;
       tempList: JList;
    begin
    .....
       Intent := TJIntent.Create;
       Intent.setAction
          (StringToJString('ru.yandex.yandexnavi.action.BUILD_ROUTE_ON_MAP'));
       Intent.setPackage(StringToJString('ru.yandex.yandexnavi'));
       pm := SharedActivity.getPackageManager;
       tempList := pm.queryIntentActivities(Intent, 0);
    
       // Проверяем, установлен ли Яндекс.Навигатор
       if (tempList = nil) or (tempList.SIZE = 0) then
       begin
          // Если нет - будем открывать страничку Навигатора в Google Play
          Intent := TJIntent.Create;
          Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
          Intent.setData(StrToJURI('market://details?id=ru.yandex.yandexnavi'));
       end
       else
       begin
          // intent.putExtra(StringToJString('lat_from'), g_CurrentLocation.la);
          // intent.putExtra(StringToJString('lon_from'), g_CurrentLocation.lo);
          Intent.putExtra(StringToJString('lat_to'), StringToJString(las));
          Intent.putExtra(StringToJString('lon_to'), StringToJString(los));
          // intent.putExtra(StringToJString('desc'), StringToJString(LOS));
       end;
    
       SharedActivity.startActivity(Intent);
    end;

    Тут задаётся куда. Так же можно откуда и описание (комментировано)

    9 минут назад, Edward Tarasov сказал:

    Или может есть возможность использовать встроенные возможности навигации?

    Их нету. Есть возможность статично что-то отобразить. Не более.

     

  14. 15 часов назад, Edward Tarasov сказал:

    Или может есть возможность использовать встроенные возможности навигации?

    Проще всего из программы открыть яндекс или другой навигатор с установленными точками куда идти. Самому сделать  нормальный навигатор - это чьё-то платное api, так как бесплатное не гарантированно будет отдавать данные, ну и месяцы работы.
     

  15. 3 минуты назад, Вадим Смоленский сказал:

    Есть ли способ проверить, какая редакция FMX.Platform.Win у меня подхватывается?

    far, alt+f7, FMX.Platform.Win* по всем возможным локациям. Ещё можно грубую синтаксическую ошибку в pas файле сделать. Если компиллер ругнулся, файл тот. Если нет, то только п.1
     

  16. 29 минут назад, Вадим Смоленский сказал:

    Embarcadero\Studio\19.0\lib\win32\release

    вроде так и написал?

    22 минуты назад, wamaco сказал:

    Смысл - не паганить файлы, которые идут со студией. Знать что правили. При переносе на другой компьютер, не заниматься повторением операций по решению проблемы (т.к. со временем забудете).... и т.д. еще могу доводов накидать, но уже и так достаточно!

    Я всегда ставлю маркер. И после переползания на новую версию смотрю пофиксили баг или нет. Фиксы прилетают раз в 3 мес. в среднем, каждый раз что ли перетряхивать все папки со всеми своими проектами прошлыми и текущими?  Нафиг надо. 1 раз через diff поправил новые файлы и всё. А на другой компьютер - скопировал *.pas из release. Всё.
     

  17. 42 минуты назад, Вадим Смоленский сказал:

    Каких-то других dcu ведь нигде не спрятано?

    Нет, надо удалить FMX.Platform.Win.dcu из папки ...Embarcadero\Studio\19.0\lib\win32\ debug/release. Ну и естественно положить pas в release.

    17 минут назад, wamaco сказал:

    исправленный FMX.Platform.Win скопировали в папку с проектом?

    И копировать в каждый новый проект? Смысл?

     

×
×
  • Создать...