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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      10

    • Постов

      2 124


  2. krapotkin

    krapotkin

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


    • Баллы

      6

    • Постов

      2 185


  3. estra

    estra

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


    • Баллы

      4

    • Постов

      370


  4. Евгений Корепов

    Евгений Корепов

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


    • Баллы

      3

    • Постов

      738


Популярный контент

Показан контент с высокой репутацией 02.06.2016 во всех областях

  1. холивар начинается, это ни есть хорошо. хотелось бы узнать ответ разработчиков по существу вопроса… Add и Multiply - дело вкуса, а лично мне по вкусу перегрузить операторы, чем городить функции. сахар сомнительный, ибо тогда на плюсы будет смахивать а так можно далеко зайти. я бы, например, не отказался от тернарного оператора a = (b > c) ? 1 : 2 но это все лирика, топик о перезагрузке операторов, давайте не отклоняться от темы!
    3 балла
  2. Brovin Yaroslav

    Таймер в сервисе

    Посмотрите на реализацию системных таймеров в Androidapi.Timer.pas. Они подходят для сервисов.
    3 балла
  3. uses FMX.Platform; var Service: IFMXDeviceService; begin Result := TPlatformServices.Current.SupportsPlatformService(IFMXDeviceService, Service) and (TDeviceFeature.HasTouchScreen in Service.GetFeatures);
    3 балла
  4. Brovin Yaroslav

    Таймер в сервисе

    function AndroidTimerCreate: Integer; Создает таймер и возвращает его идентификатор procedure AndroidTimerSetInterval(TimerHandle: Integer; Interval: Integer); Задает для созданного таймера по его ID интервал срабатывания. Эта реализация работает с одним обработчиком OnTimer для всех таймеров. Чтобы задать такой общий обработчик используется процедура: procedure AndroidTimerSetHandler(OnTimer: TAndroidTimerNotify); В параметре OnTimer приходит ваш идентификатор таймера. procedure AndroidTimerDestroy(TimerHandle: Integer); Этот метод уничтожает созданный вами таймер по ID Этот юнит - это оболочка над posix-таймерами
    2 балла
  5. у записи нет конструктора, который выделяет память, так что ничего и не надо освобождать конструктор записи - чисто номинальный аналог события OnCreate
    2 балла
  6. Вот пример кода для вашего случая Var Source : String; JSON : TJSONObject; JSONValue : TJSONValue; JSONArray : TJSONArray; I : Integer; begin Source:='{"data":["val1", "val2", "val3"]}'; JSON:=TJSONObject(TJSONObject.ParseJSONValue(Source)); if Not Assigned(JSON) then Exit; if JSON.TryGetValue('data',JSONValue) then if TJSONObject(JSONValue).ClassName.Equals('TJSONArray') then begin JSONArray:=TJSONArray(JSONValue); if Assigned(JSONArray) then for I := 0 to JSONArray.Count-1 do Memo.Lines.Add(JSONArray.Items[I].Value); end; end; Для проверок неудачного парсинга есть такие инструменты как "if Assigned(JSON) then" и "JSON.TryGetValue('data',JSONValue)"
    2 балла
  7. Эта фраза здесь звучала много раз, но повторюсь "Никогда, ни в коем случае, ни при каких обстоятельствах, не работайте с объектами основной формы (основного потока) из другого потока", для этого умные люди специально создали потокобезопасные способы - синхронизация, очереди, события и т.д. Даже если вам кажется что ваш код работает, то это случайность, на пятый или сотый запуск все у вас упадет, или упадет сразу на другой версии андроида или другом производителе железа. Такое ощущение что вы не слышите, или не читаете ответы на заданные вами вопросы, и каждое новое сообщение от вас звучит примерно так "А вот если я на эти грабли не наступлю, а с разбега прыгну, что будет?" ;-) Надеюсь я не слишком эмоционально высказался? Не хотел никого обидеть.
    1 балл
  8. Да ладно вам. У меня для всех классов почти на автомате уже есть функции Equals и Assign Так что и Add и Multiply добавлю, ничего А сахар лучше вон a+=5; пусть добавят ))
    1 балл
  9. 1 балл
  10. http://stackoverflow.com/questions/22541928/why-can-i-not-use-operator-overloading-for-classes
    1 балл
  11. Версия Log из FMX работать не будет, так как она построена на FMX сервисах (TPlatformServices), которые в андроид сервисах не работают. Поэтому пользуйтесь версией андроида LOGI, LOGW, LOGE.
    1 балл
  12. Я не проверял, но попробуйте следующее FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never;
    1 балл
  13. krapotkin

    JSON

    тут уже не раз хвалили, и я в том числе, X-SuperObject
    1 балл
  14. Поскольку ios библиотеки с апи подкгружаются динамически. Эта ошибка может означать, что реально на момент обращения фреймворк "CoreTelephony.framework" не был загружен. Загрузка обычно делается в каждом rtl iosapi юните так: const libAddressBook = '/System/Library/Frameworks/AddressBook.framework/AddressBook'; {$IF defined(IOS) and NOT defined(CPUARM)} initialization AddressBookModule := dlopen(MarshaledAString(libAddressBook), RTLD_LAZY); finalization dlclose(AddressBookModule); {$ENDIF IOS} end. Я действительно не вижу в iOSapi.CoreTelephony.pas кода по загрузке библиотеки. Поэтому вы можете добавить код выше в свой проект для форсирования загрузки, изменив libAddressBook на: const CoreTelephonyFwk: string = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';
    1 балл
  15. http://www.fmxexpress.com/mix-vcl-and-firemonkey-forms-in-delphi-xe5-firemonkey-on-windows/ и видео
    1 балл
  16. XE7 хорошо! Вот написал на скорую руку статейку для XE6. эм... или это не то?
    1 балл
  17. Не работает! В режиме DesignTime (в IDE) при изменении свойтва формы BorderStyle = TFmxFormBorderStyle.bsNone StatusBar пропадает. Но он остается при запуске приложения на смарте. В "Project / Options / Uses Permissions" установлены свойства: Expand status bar = True Advanced / Status bar = True (пробовал и другие варианты) При запуске приложения Status bar не пропадает. Но вопрос стоял иначе - "скрыть/показать Status Bar в процессе работы"
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...