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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

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


    • Баллы

      10

    • Постов

      2 124


  2. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      5

    • Постов

      2 517


  3. Pax Beach

    Pax Beach

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


    • Баллы

      5

    • Постов

      414


  4. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 185


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

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

  1. Все правильно получаете, кодировка тут не при чем. Согласно спецификации "DNS Packet Structure", вы получаете не строку, а пакет который нужно разобрать. К примеру если запрос будет "nslookup www.google.ru 127.0.0.1", то там где вы получаете имя хоста будет строка "''#3'www'#6'google'#2'ru'#0#0#1#0#1". Парсинг простейший: #3 - означает что далее идут 3 символа хоста 'www' - вот ожидаемые 3 символа #6 - далее идут еще 6 символов хоста 'google' - ага, вот они #2 - ну и еще 2 символа 'ru' - ура, они здесь #0 - конец имени хоста, складываем в кучу, перемежая точками и получаем www.google.ru #0 - дальше у нас служебная информация... #1 #0 #1 Вот как то так. P.S. А зачем вам на таком низком уровне работать? Может использовать IdDNSServer : TIdDNSServer ? P.P.S. Правильно Memo1.Lines.Add(BytesToString(AData,12)); //(12, а не 13)
    2 балла
  2. из коробки мультилайн не поддерживается. на fmxexpress есть код для исправления локальных нотификаторов. Для тех которые генерирует Android, пока нельзя мультилайн сделать
    2 балла
  3. Мне видится, что твой log будет выводиться только в НЕ режиме отладки. Я использую функцию без условий компилятора, и она отлично работает и в приложении, и Android сервисе. procedure Log(const Fmt: string; const Params: array of const); var Msg: string; M: TMarshaller; begin Msg := Format(Fmt, Params); LOGI(M.AsUtf8(Msg).ToPointer); end;
    2 балла
  4. не поддерживается на интелах (официально), но можно
    2 балла
  5. Сперва - Release, потом = nil http://fire-monkey.ru/topic/2817-динамическое-созданиеуничтожение/?do=findComment&comment=16461 Free на мобильных платформах не делает ничего. В вашем коде компонент, естественно, будет продолжать находиться - ведь ссылку на него как минимум хранит его Owner, переданный в конструкторе.
    2 балла
  6. конечно http://docwiki.embarcadero.com/RADStudio/XE8/en/Using_an_HTTP_Client
    2 балла
  7. Здравствуйте. Не могу понять, или я не правильно делаю или баг. Берем чистый проект. Выбираем Style: Android. Кидаем на форму TVertScroll, TImageList. В VertScroll накидываем TSpeedButton штук 10. У всех SpeedButton выбираем Images->ImageList1. В наш ImageList грузим любую картинку. И затем у всех SpeedButton'ов выбираем ImageIndex = 0; Cужаем VertScroll так чтобы несколько кнопок не было видно, т.е.так что бы для того что бы увидить кнопки приходилось бы прокручивать VertScroll. Теперь сохраняем весь проект. Закрываем всё. Открываем проект заново. И получаем ошибку "Error creating form: Index out of range (n). Must be >=0 and <n". Где n - это некоторо число зависящее от количества кнопок включая скрытых в VertScroll'е. Причем если выбирать стили SpeedButton (например с радиокнопками), то все нормально. Подскажите я что то не так делаю?
    1 балл
  8. Автор: Северюхин Алексей Ссылка на Youtube: ссылка Youtube Ссылка на приложение: Android market Игра для развития внимания, ловкости, реакции и умения различать цвета В этой игре необходимо на скорость нажимать одну из четырех кнопок, определенного цвета, в зависимости от загоревшейся лампочки на игровом поле. При правильном нажатии вы зарабатываете очки. При наборе 8 или 16 или 32 очков, загорается лампочка с индикацией заработанных очков. С одной попытки вам нужно набрать 32 очка. При неверном нажатии игра заканчивается.
    1 балл
  9. нет, я про <TEdit>.ControlType
    1 балл
  10. Rusland

    [TEdit ]смещение текста

    Вам не KillFocusByReturn=true нужен? Еще есть свойство ReturnKeyType
    1 балл
  11. Я нашел решение, к сожалению, пока только для работы с UniDAC: Обновил UniDAC компоненты для Berlin до последней версии (6.3.12). Компоненты TUniConnection и TUniQuery отлично работают с SQLite в Android Service. FireDAC в Android Service пока запустить не удалось, но у меня такой задачи нет. В Deployment host приложения добавляю файл базы данных, Remote Path задаю ".\assets\internal\". И спокойно из сервиса получаю к нему доступ. Мой сервис локальный в одном потоке с приложением. Если делать Intent Service или Remote — наверное, придется помещать файл в другой, доступный каталог, или общаться через намерения (Intents). Надеюсь мой код будет полезен для вас. procedure TDM.conSQLiteBeforeConnect(Sender: TObject); begin {$IF DEFINED(iOS) or DEFINED(ANDROID)} conSQLite.Database := TPath.Combine(TPath.GetDocumentsPath, 'mybase.sqlite'); {$ENDIF} end; procedure TDM.conSQLiteError(Sender: TObject; E: EDAError; var Fail: Boolean); begin Log('--- DB error: %s:', [E.Message]); Fail := False; end; function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin Log('+ START with Intent: ' + JStringToString(Intent.getAction.toString), []); if Intent.getAction.equalsIgnoreCase(StringToJString('StopIntent')) then begin try conSQLite.Disconnect; Log('- DB disconnected', []); except on E: Exception do Log('- can not to disconnect DB', [E.Message]); end; Log('... service to be stoped', []); JavaService.stopSelf; Result := TJService.JavaClass.START_NOT_STICKY; // don't reload service end else begin Log('... service started', []); try conSQLite.Connect; Log('+ DB connected', []); UniQuery.SQL.Text := 'select count(*) as ALLREC from orders'; UniQuery.Open; if UniQuery.RecordCount > 0 then begin UniQuery.First; Log('... record count: %s', [UniQuery.FieldByName('ALLREC').AsString]); end; UniQuery.Close; except on E: Exception do Log('- can not to connect DB: %s', [E.Message]); end; Result := TJService.JavaClass.START_STICKY; // rerun service if it stops end; end;
    1 балл
  12. Pax Beach

    TNotification с переносом строк

    Не могу пока вспомнить, где находил примеры многострочных уведомлений (Android однозначно поддерживает это), но я бы переносил строку с символами $0D$0A, а у Вас только \n ($0A). Подробнее об этом здесь.
    1 балл
  13. Pax Beach

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

    Это не хорошее решение, а костыль, но пока решает мою задачу: Когда нужное мне событие произошло, я просто убираю обработчик таймера AndroidTimerSetHandler(nil); А когда нужен таймер, снова назначаю обработчик: AndroidTimerSetHandler(WaitComplete); При этом таймер продолжает работать и занимать процесс, когда он фактически не нужен — это, конечно же, не хорошо.
    1 балл
  14. Версия Log из FMX работать не будет, так как она построена на FMX сервисах (TPlatformServices), которые в андроид сервисах не работают. Поэтому пользуйтесь версией андроида LOGI, LOGW, LOGE.
    1 балл
  15. package com.TestReceiver; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null) if ( action.equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED) || action.equalsIgnoreCase("com.TestReceiver.BootCompletedCustomIntent") ) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.TestReceiver.BootCompletedReceiver"); TestLauncher.setAction("com.TestReceiver.StartServiceIntent"); PendingIntent pintent = PendingIntent.getBroadcast(context, 0, TestLauncher, 0); AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pintent); } else if (action.equalsIgnoreCase("com.TestReceiver.StartServiceIntent")) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.myService"); context.startService(TestLauncher); } } } Вот пример 1 из моих сервисов. Сначала стартует аларм менеджер, который сюда же шлет интенты на старт сервиса "myService". В манифесте в ресиверах прописаны эти интенты <receiver android:name="com.TestReceiver.BootCompletedReceiver" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="com.TestReceiver.BootCompletedReceiver" /> <action android:name="com.TestReceiver.BootCompletedCustomIntent" /> <action android:name="com.TestReceiver.StartServiceIntent" /> </intent-filter> </receiver>
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...