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

ENERGY

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

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

  • Посещение

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

    57

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

  1. @estra Так лучше не делать, т.к. решение не кроссплатформенное.  Не пойму что мешает автору завести отдельный pas модуль, например GlobalConst.pas и там объявить эту глобальную переменную и затем подключать этот модуль куда угодно. Это надуманная проблема. 

  2. Обычно я делаю класс TCore, в котором все необходимое и настройки и переменные, я стараюсь формы и логику всегда отделять (раньше для Windows я вообще отделял логику и ядро в DLL ). Формы нужны только для отображения содержимого. Этот класс создаю в dpr до всех форм, Core соответсвенно в отдельном модуле, и глобальная переменная gCore там же в interface. Этот Core.pas подключаю уже везде. Это очень практично.

  3. В 14.05.2018 в 13:50, Barbanel сказал:

    К сожалению не вариант. У нас в ГУИ настроек есть: "Использовать HTTPS".

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

    Шеф спасибо не скажет, если узнает что нужно регать новую фирму)))

    В своих программах всегда использую https. Всегда отвечал нет, все проходило. При использовании https не нужно указывать шифрование, это пишут и на стэке. В основном рекомендуют отвечать Да, если вы используете Apple библиотеки для шифрования (Security framework, CommonCrypto).

    Я вообще не вижу проблемы. Отвечайте "Нет", это ускорит процесс рассмотрения.

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

     

  4. Если кому то нужна круглая кнопка со сглаживанием под Android\iOS - то ставьте компоненты @Равиль Зарипов (ZuBy), сделанные на основе модуля FMX.Graphics.Native.pas от одного китайского программиста.

    https://github.com/rzaripov1990/ZMaterialComponents ( тут все готово, сам модуль отдельно скачивать не надо.)

    Дальше кидаем TZNativeDrawFigureCircle1, в него лэйбл и TColorAnimation как указано выше.  

    OnClick работает без проблем, только не забудьте поставить кругу HitTest := true, а у лэйбла false. 

  5. Только что, Brovin Yaroslav сказал:

    Если я все помню, то поиск в не упорядоченном списке Бинарным поиском - это O(nlog(n)). А поиск в словаре О(1).

    Но ведь  еще нужно время чтобы в словаре найти сответствие.

  6. 5 часов назад, Brovin Yaroslav сказал:

    Чтобы поиск был быстрый, нужно использовать словарь. Время поиска будет O(1) против поиска в списке. Один из вариантов реализации может быть таким:

    1. В менеджере есть набор ваших списков (логические группы объектов) - список списков
    2. В менеджере есть словарь соответствия контрол -> индекс списка из (1)
    3. при добавлении контрола добавляете его в список и заносите контрол в словарь
    4. Поиск за О(1)

    Проще использовать бинарный поиск для поиска своего индекса-идентификатора контрола, готовый бинарный поиск реализован в TList и его потомках, также в массивах.

  7. Это можно сделать если поставить Alarm. Если прога выгружена - она загрузится, если в фоне, то выйдет из фона.

     

    А уже есть такой вопрос, ну пусть ссылка будет на этот форум, здесь можно спросить Андрея Ефимова по этому вопросу и в целом там важные ньюансы в комментах.

  8. 1 час назад, kami сказал:

    Можно это обойти (и довольно неплохо, не костыльно)... но это нужно кодить. Готового механизма  нет.

    Самый простой и быстрый вариант уже указали - TagObject, здесь самое сложное это вытащить из указателя дженерик класс. Я не знаю возможно ли это вообще, т.к. встречал на стэке инфу о том что никак.

    Самый простой вариант использовать классический TObjectList, НЕ дженерик тогда вытащить ссылку из TagObject просто  - TagObject is TObjectList,  TagObject as TObjectList или TObjectList(TagObject).

    Если нужно отличать один TObjectList от другого, я бы отнаследовался от него и сделал свой метод Add где устанавливал бы в Rect ссылку на список, там же можно добавить функцию для определения ID списка из Rect, а также ввел какой то идентификатор для списка. 

  9.  

    47 минут назад, Alex7wrt сказал:

    Ваш пример с фреймом немного из другой оперы,  поскольку TObjectList нельзя указать в качестве Owner. Это список, а не комонент, иначе все было бы гораздо проще.

    А для управления жизненным циклом обьектов как раз и установлен в True параметр AOwnsObjects.

    Согласен, я только добрался до компа. Owner TComponent, а TObjectList <T> дженерик, а не обычный TObjectList еще больше усложняет. Как вытащить дженерик из указателя я не курсе, с обычным TObjectList это просто, но это уже другой вопрос.

  10. Имхо лучше использовать нативный THttpClient из System.Net.HttpClient.

    Там есть и SSL - ставишь бесплатный Https сертификат на сервер, и как обычно использушь THttpClient - он автоматом (празрачно) будет шифровать и расшифроывать https трафик. Причем также шифруется Get\Post строка с параметрами.

  11. При создании TRectangle - нужно указывать кто Owner - владелец, вместо nil.

    У каждого Rectangle Owner и будет нужный класс TObjectList .

    И вообще нужно всегда указывать Owner - ведь TObjectList отвечает за их уничтожение, это основная фича владельцев.

    Я недавно баг поймал с фреймом - если при создании TFrame указать Owner nil - то на фрейме не будет работать анимация TFloatAnimation . Так что TFrame.Create(Self формы) - все заработало.

  12. High(CartList) - CartList это или Enumeration type - перечисление или массив.

    В Enumeration значения идут от нуля. Т.е. TMyType = (Val1, Val2, Val3) - это по факту Byte со значениями 0, 1, 2.

    High - вернет максимальный индекс из этого перечисления или массива. High(TMyType ) = 2 . Low соответсвенно вернет первый индекс - 0 или тот который идет первым (ведь массив может и не от нуля начинатся, если это указать в коде)
    rz - обычная переменная integer

     

    Если 0 to 0 - цикл не выполнится.

     

  13. 3 часа назад, Savage сказал:

    Почитал и аж расстроился :(

     

    Delphi хоронят уже лет 15, это все слова. Нет идеальных инструментов. У всех какие то косяки, втч и у нативных средств, ведь все это придумывают люди, люди не роботы.

    На деле Delphi отличное средство для мультиплатформенной разработки вполне сложных программ. Мне как фрилансеру вполне хватает. Производительность гораздо лучше чем у Angular\Ionic, которые по факту WebView - веб в браузере - очень тормозное решение и подходит только для формочки "логин\пароль".  Также по производительности и глюкам Delphi имхо лучше чем ReactJS, и Xamarin aka Mono. 

    Во фрилансе огромная конкуренция, в основном индусы, в этом плане с Delphi можно быстрее разработать ПО чем предлагают сроки остальные.

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

     

    Но конечно нужно смотреть на развитие - вот Токио получилась очень сырым продуктом, я до сих пор на Берлине пишу под 4 платформы, если следующая версия выйдет такой же ультраглючной, то следует задуматься.

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

  14. В 4/6/2018 в 17:44, Brovin Yaroslav сказал:

    Другой вопрос, что я не уверен, что на бюджетные телефоны до 3000 будут ставить последнюю версию андроида. Она там тупо не взлетит. И пока такое требование к поддержке последней версии андроида выглядит сомнительно. 

     

    Выйдет Android GO - “Android 8 Oreo (Go Edition). Это урезанный Андроид, для бюджетных смартов. https://www.theverge.com/circuitbreaker/2018/3/1/17052912/what-is-android-go

     

    To address those problems, Google has done three things:

    • Make Android run better on phones with 1GB of RAM or less
    • Make Android (the OS itself) take up less space
    • Make Android’s preinstalled apps take up less space and use less data

    Кстати Android 8 на данный момент хуже оптимизирован чем 7 (Android One - чистый Android без надстроек производителя). У меня смарт обновился до 8, поюзав его некоторое время - я перепрошил обратно на Android 7 - он очень быстрый. В 8 были заметны проблемы с производительностью ,к примеру при быстром переключении Оперы она слегка подлагивала и мерцала. При этом смарт у меня мощный - видео в 4к 30 fps , GTA SA на максималках, 4 гб оперативы.

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