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

Alex Bozhko

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

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

  • Посещение

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

    4

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

  1. После обновления системы до Android 5.0.1 Firemonkey приложения, собранные в разных версиях Delphi (в т. ч. и 10 Seattle Upd) перестали запускаться.
    Application does not support this device. С четвертым Андроидом всё работало нормально.

  2. Вот такой шикарный баг в приложении.

     

    -Start the application
    -While the application is opened (the start icon is displayed), press power button (or close Phone Case)
    -Press power button (or open Phone Case)
    -Unbloch the screen

    Black screen witn or without start icon is displayed, the application is not opened. It's possible to reopen the application via application manager only

     

    Вкратце по-русски. Если при запуске приложения в момент, когда на экран выведена заставка, нажать кнопку power, приложение виснет.

     

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

     

    Возникает, если при создании главной формы приложения динамически заполнять TComboEdit. Для TComboBox - не воспроизводится.

    Актуально для Seattle с апдейтом.

     

    Код заполнения примерно такой:

    procedure TfMain.FormComboEdit;
    var
     SL: TStrings;
     i: integer;
    begin
     SL:= TStringList.Create;
    
     try
       for i := 0 to 10 do
       begin
         SL.Add('String '+IntToStr(i));
       end;
    
       ComboEdit1.BeginUpdate;
        ComboEdit1.Clear;
        ComboEdit1.Items.AddStrings(SL);
       ComboEdit1.EndUpdate;
     finally
       SL.Free;
     end;
    
    end;
    
    procedure TfMain.FormCreate(Sender: TObject);
    begin
    
    FormComboEdit;
    end;
    

    Или другой, пробовал несколько вариантов заполнения.

     

    Приложение прилагаю.

    Blank.zip

  3. А я такое когда-то делал. Лет 10 назад. Точечки складывал в базочку. И рисовал чёрточки на карточке. При желании можно даже масштабик пересчитать. Ну, с FireMonkey вообще все просто должно быть.

  4. Это называется не версия, а редакция.

    С учетом того, как активно всё это дело развивается (я имею ввиду не только выпуск новых версий Delphi, но и выход новых мобильных платформ), я бы порекомендовал Enterprise и подписку. На следующих версиях Вы прилично сэкономите.

  5. Хм... Более чем странно. Кто-то держит файл, получается... Анлокер из командной строки разве что прописать или доковыряться до того, кто держит  файл.  Попробуйте просто перенести аутпут файл в другое место. Может как в анекдоте, место проклятое...

  6. Погуглите. Я находил какую-то приладу для конвертации. Она, правда денег стоила, но триалки для одноразовой конвертации мне хватило. Ссылку потерял. Ну, в крайнем случае, и ручками не велика проблема.

     

     

    http://agp1.hx0.ru/.SQLite.Allow.pdf

  7. Если нужна локальная БД, то я бы посоветовал сконвертить базу в SQLite. Если нужно взаимодействовать с удалённой базой на ПК с помощью мобильного клиента, то можно оставить и Access, и использовать DataSnap. Хотя Access как многопользовательская БД решение не самое лучшее. Но это уже совсем другая история.

  8. Для Android вычисляйте диагональ сами:

    ===================================

    Diagonal_in_Inch:= Sqrt(Sqr(DeviceMetricsService.GetDisplayMetrics.PhysicalScreenSize.Width) + Sqr(DeviceMetricsService.GetDisplayMetrics.PhysicalScreenSize.Height)) / DeviceMetricsService.GetDisplayMetrics.PixelsPerInch;

    Да вычислить диагональ-то не проблема. Как представление нужное привязать?

  9. Не совсем понятная ситуация с выбором представления для конкретного устройства.
     
    Создаю для приложения все стандартные Android представления; запускаю приложение на этом устройстве:
    http://rozetka.com.ua/huawei_ascend_g630_51050ahv/p1130905/
     
    Выбирается представление Android 10" Tablet.
     
    На офф. сайте алгоритм выбора описан несколько сумбурно. Вот пытаюсь разобраться.
     
    Сделал тест. Код простейший.

    procedure TForm3.FormCreate(Sender: TObject);
    begin
     lblMinimumDiagonal.Text:= FloatToStr(TDeviceInfo.ThisDevice.MinDiagonal);
     lblMaximumDiagonal.Text:= FloatToStr(TDeviceInfo.ThisDevice.MaxDiagonal);
    
     if TDeviceInfo.ThisDevice.DeviceClass in [TDeviceInfo.TDeviceClass.Phone] then
     lblDeviceClass.Text:= lblDeviceClass.Text+ 'Phone ';
    
     if TDeviceInfo.ThisDevice.DeviceClass in [TDeviceInfo.TDeviceClass.Tablet] then
     lblDeviceClass.Text:= lblDeviceClass.Text+ 'Tablet ';
    
     if TDeviceInfo.ThisDevice.Exclusive then
     lblExclusive.Text:= 'Exclusive'
     else
     lblExclusive.Text:= 'not Exclusive';
     end;
    

    кому надо, качайте собранное: https://yadi.sk/d/SHdkwstejgXrH

     

    на Huawei получаем

     

    MaxDiagonal - 9.17877...

    MinDiagonal - 9.17877...

     

    Откуда такая диагональ?

     

    Exclusive

    Device Class - Phone.

     

    Запускаю на Sony Xperia M2 (http://www.sonymobile.com/ru/products/phones/xperia-m2/specifications/#tabs)

     

    Всё честно. MaxDiagonal - 4,727; Exclusive; Phone

    Представление выбирается Android 4"

    ?? Почему не 5"

     

    Дальше -больше

    Lenovo Yoga Tablet

    Диагональ 8

    Exclusive

    Tablet

    Представление - 10" Почему не 7"????

     

    Собственно, такой выбор представления мне кажется не совсем логичным.

     

     

     

     

  10. В папке <Ваше приложение>\Android\Debug\<название приложения>\bin найдите файл с расширением .apk. Это обычный архив. Откройте его с помощью WinZip или WinRar и поищите файл Baza.db.

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

     

    Кстати, в корень диска F: положить БД - вообще плохая идея. Всякие UAC-и могут не дать доступ к файлу.

     

    Поэтому просто под корнем Вашего приложения создаете папку (например, db) и помещаете базу туда. Должно заработать...

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