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

gresaggr

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

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

  • Посещение

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

  1. Добрый день.

    Пытаюсь парсить следующую структуру (в архиве файл test.json) через XSuperObject 

    в jSonData находится содержимое файла архива. 

    var

      X: ISuperObject;
      jSonData: string;

    ...

    if jSonData <> '' then
      try
        X := SO(jSonData);
      except
        print('jSonData: ' + jSonData);
          result := 'PARS ERROR';
        exit;
      end;

     

    выдает ошибку на моменте  "... \u0438 60":"40\n\u0417..."

    Как можно исправить?

    test.zip

  2. Именно по этому примеру и делал: при первом запуске появляется запрос на разрешение доступа к фото и на запись (после выхода из приложения в общих настройках приложения можно проверить, что доступ получен правильно). А дальше на выполнении TakeFotoFromCamera вылетает эта ошибка.

    P.S. Делаю на Community Edition. 

     

  3. Всем привет.

    Пробую Delphi 10.3 Community Edition.

    При попытке через стандартный  Action сделать фото получаю ошибку:  java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser...

    Пытался и с текущим проектом, и с новым (где только одна кнопка сделать фото + получение разрешений). Проверял на Андроид 8 на двух телефонах. Разрешения получены нормально на чтение/запись + доступ к камере.

     

    Как-то можно победить?

     

     

  4. Всем привет.
    Работаю с DCEF3 последней ветки (https://github.com/hgourvest/dcef3).  Использую Delphi 10.1
    Нужно сделать две одновременно запущенных web версии whatsapp (https://web.whatsapp.com/)
    Динамически создаются два экземпляра Chromium с разными именами, user agent.
    Сначала создается первый и в нем появляется QR-код для авторизации через телефон. 
    После создания второго - в первом QR код исчезает и появляется ТОЛЬКО во втором. 
    Я так понимаю проблема в куках.
    Может кто знает как можно задать отдельную папку/хранить в память для каждого экземпляра?

     

    Сейчас задаю таким образом глобальный куки менеджер:

     CookiesPath := ExtractFilePath(Application.ExeName) + DEFAULT_COOKIES_DIR + currentNumber.ToString; 
     CM := TCefCookieManagerRef.Global(nil);
     CM.SetStoragePath(CookiesPath, true, nil);

     

    P.S.  Если запускать копию exe из той же папки где находятся все ресурсы хромиума, то такой проблемы нет.

    P.P.S. Еще заметил, что авторизованная сессия whatsapp не сохраняется после перезапуска программы. А тот же mail.ru сохраняется.

  5. procedure TmainForm.Item_LVUpdatingObjects(const Sender: TObject; const AItem: TListViewItem;
      var AHandled: Boolean);
    begin
       Item_LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style :=
        Item_LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style + [TFontStyle.fsUnderline];
      end;

  6. В 14.01.2018 в 22:07, Равиль Зарипов (ZuBy) сказал:

    Можно сделать если обрабатывать это в событии OnUpdateItemObjects

    К сожалению не получается: OnUpdateItemObjects - такого события не нашел у ListView.

    Делал и в UpdatingObjects, и в UpdateObjects, но без результата.

  7. Добрый день.

    Как под FMX в ListView сделать подчеркивание Detail в рантайме?

    Пытался делать так:

    LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]

    но не срабатывает.

    P.S. Возможно это применить не ко всем строкам, а только к некоторым?

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

    Может отсюда http://developer.alexanderklimov.ru/android/theory/airplanemode.php можно что-то выжать? Написано на С#, но, в принципе, код понятен.

    Делаю так TJSettings_System.JavaClass.putInt(SharedActivityContext.getContentResolver,  TJSettings_System.JavaClass.AIRPLANE_MODE_ON, 1)

    Permissons на WRITE_SETTINGS выставил. Не переключает.

     

    Upd. "Так как, начиная с Android 4.2, мы не можем программно включить режим автономного режима, то остаётся только один вариант - показать окно настроек, чтобы пользователь сам отметил флажком требуемую настройку:

    Других вариантов судя по всему нет?

  9. 7 часов назад, AlexG сказал:

    В Designmode разместите кнопки "как видите" их на форме (как они должны быть расположены), а потом левой кнопке поставьте Align = None и Anchors[akLeft,akBottom], а правой Align = None и Anchors[akRight,akBottom]. Думаю, что этого будет достаточно.

    P.S. Ну и как все будет закончено с их расположением, поставьте им Locked = True (дабы не сместить их ненароком)

    К сожалению так не получается: все равно происходит смещение.
     

  10. Всем добрый день.

    Дошло дело до дизайна приложения. Как правильно разместить кнопки поверх изображения фона?

    example.jpg

    Исходные данные такие: Delphi 10.1 Berlin Update2. Приложение под Андроид.

    Есть фон в разрешении 1280*720..  На форме есть Layout с Align = Client. В Layout вставлен Image с Align = Client.

     2017-01-15_11-28-12.png



     

    Есть отдельные кнопки (на первом рисунке выделены черно-белым цветом). Как правильно сделать вставку кнопок, чтобы попасть на нижнюю кромку фона правил?

    Еще хочется сделать это универсальным для разных разрешений экрана.


     

    if res = 1280 then
      begin
        LayoutRulesText1.Margins.Top := 30;
        LayoutRulesText1.Margins.Bottom := 80;
        LayoutRulesText1.Margins.Left := 30;
        LayoutRulesText1.Margins.Right := 30;
        ImageRulesBack.Position.X := 50;
        ImageRulesBack.Position.Y := 510;
        ImageRulesBack.Width := 55;
        ImageRulesBack.Height := 55;

        ImageRulesForward.Position.X := 250;
        ImageRulesForward.Position.Y := 510;
        ImageRulesForward.Width := 55;
        ImageRulesForward.Height := 55;
      end;


     

    Изначально думал делать для каждого разрешения через case в зависимости от разрешения, но кажется что этот путь совсем неправильный!

  11. Добрый день.

    Работал над проектом, все нормально компилировалось. В процессе работы отключилось электричество. Из последних изменений до новой компиляции был добавлен Image с загруженным png (свет отключили).

    После загрузки не компилируется и выдает ошибки на строке: tmp := TPath.Combine(TPath.GetSharedDocumentsPath, tmp + '.txt');  (Tpath does not contain a member named 'Combine')

    Undeclared identifier: 'Combine'
    Undeclared identifier: 'GetSharedDocumentsPath'

    в Uses помимо прочего прописан System.IOUtils.

    Проверял на двух разных компьютерах (Win 7/64)

    Из-за чего такое могло произойти и как быть?


    Update: 

    вручную прописал  tmp := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedDocumentsPath, tmp + '.txt');

    Ошибка исчезла, но хочется нормального решения.

     

  12. 4 минуты назад, krapotkin сказал:

    и да, я не понял, что должно быть по-вашему в коде

    
    procedure TForm1.b1Click(Sender: TObject);
    begin
      b1.Enabled := false;
      m1.Lines.Add('test');
      Sleep(1000);
      b1.Enabled := true;
    end;

    ?

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

    что не так ?

    Я хочу чтобы было так:

    К примеру клик. Enable = false. Началась пауза. В  момент паузы еще успели кликнуть три раза. Пауза завершилась. Enable=true.  Вот эти три клика в момент паузы не должны считаться.
     

  13. Кому не сложно, попробуйте у себя проверить:

    Button1.Enabled:=false;
     

     Memo1.Lines.Add ('тест'); // или что-то другое сделать, чтобы можно было отследить

    пауза

    Button1.Enabled:=true;

     

    И несколько раз быстро нажмите на кнопку. Запуск не под Windows, а под Android.

    Как у вас все это отобразится?

    Может быть чего-то недопонимаю, но неужели на такую элементарную штуку, как нажатие на кнопку нужно "...после этого запустить поток, который 1. делает все что там вам нужно 2. при окончании работы разблокирует кнопку" и т.п.?


     

    P.S. В моем случае логика была отделена от интерфейса:  // здесь код по смене карты + пауза в 2 секунды: в этом месте вызывается процедура. Или в нее также рекомендуете убрать enable кнопки?
     

  14. Как избежать повторных нажатий/ закликиваний на кнопку?

    Имеется следующий код:

    procedure Tfm.ButtonPrevCardClick(Sender: TObject);
    begin
      ButtonPrevCard.Enabled := false;
      Application.ProcessMessages;


     // здесь код по смене карты + пауза в 2 секунды

      ButtonPrevCard.Enabled := true;
      Application.ProcessMessages;
    end;

    Под Windows повторных нажатий/закликиваний при этом не происходит.

    А под Андроид, если пользователь быстро подряд нажал несколько раз, то сработает также несколько раз.
     

  15. 2 часа назад, ZuBy сказал:

    Вы пробовали то что я вам предложил?

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

    Да, ваш вариант рабочий. Пожалуй, оставлю его - с деплоем удобней файлы заливать.

    Спасибо.
     

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