-
Постов
75 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Активность репутации
-
Андрей Рулин отреагировална estra в Динамическое изменение цвета TProgressBar
Можно ди будет в следующей версии (или ближайшем hotfix) добавить прогрессбару свойство Color (или Fill, или еще какое-то), для изменения цвета в RunTime?
-
Андрей Рулин отреагировална Andrey Efimov в Запретить помещать приложение во всплывающем окне(Android)
Посмотрите эту страницу документации: Configuring your app for multi-window Mode
-
Андрей Рулин получил реакцию от Ingalime в О публикации приложения в магазине
Попробовал ещё раз. Самсунг публикует, но и в этот раз на тестировании завернул приложение, правда в этот раз тут моя вина, как разработчика. Huawei маринует, где-то 4 дня и больше, но потом публикует.
Вот пример , как он опубликовал мой проект - https://appgallery.huawei.com/#/app/C104694755
Самсунг вроде не требует, но я год назад регистрировался может не помню уже . Huawei точно требует. Ещё они требуют политику конфиденциальности. Но её можно генератором наклепать.
Amazon appstore - скорее всего не требует.
-
Андрей Рулин получил реакцию от Ingalime в О публикации приложения в магазине
Amazon appstore довольно демократичный магазин, публиковался в нём. Жалко, что пользователей у него, похоже немного.
Магазин Samsung требует фактически Google аккаунта - если просто выложить, то заблокирует как ненадёжный источник.
-
Андрей Рулин отреагировална haword в Delploy проходит на 10.0 , и портит придоложение на 10.4
100% правильная мысль. андроид + файрмонкей = глюки в проекте серьезнее калькулятора. я уже пытаюсь переписать на java свой проект. плюсы огнеобезьяны для меня в том что можно базу данных шифровать и достать от туда данные простому человеку будет очень и очень трудно. на андроиде то же можно шифровать, НО только сторонними библиотеками, а из-за них могут быть проблемы совместимости с новыми версиями андроида. минусы, из тех что я обнаружил, причем на последней версии - попробовал передать в ватсап или телегу текст из своей программы, да текст ушел но после возвращения в программу шрифт у листвью резко изменился почему-то, стал какой то странный, одна буква большая другая маленькая, хз от куда такой шрифт прицепил. из-за нехватки памяти что ли такое произошло, но произошло. скорость прорисовки - раза в три хуже чем на java, хотя странно, тут код нативный, и работает медленнее чем java. да на новых телефонах не заметно но у меня есть старый телефон с 7 андроидом и там это все заметно. ну и самое веселое - новые версии андроида часто несовместимые со старыми версиями делфи. программа написанная на java пашет и не падает, на делфи просто перестала запускаться на 11 андроиде.
для меня лично огнеобезьяна хороша только для десктопных приложений, да никакой там красоты современной не получишь, гридов нормальных нет, бесплатных именно, редакторов текста типа ричедита так же нет нормальных, есть два варианта, от tms но у него картинку можно только в один ряд поставить с текстом, обтекать нельзя, ну и htmlcomponent использовать, все что надо есть, но цена у него кусачая. под линукс только через стороннюю библиотеку крюкова, которая без исходников. генератор отчетов только один - фастрепорт. в остальном более-менее рабочее ПО кросплатформенное написать можно.
-
Андрей Рулин отреагировална krapotkin в Движущееся изображение
onPaint вызывается не когда вы хотите, а когда система считает нужным
а чтоб она посчитала нужным, вызывайте Invalidate.
-
Андрей Рулин отреагировална Barbanel в Динамическое изменение массива записей
Большое количество - это сколько?
100, 100 000, 100 000 000?
Каждый раз увеличивая размер на один элемент, менеджер памяти ищет непрерывный незанятый кусок памяти такой длины, чтобы уместить все элементы. Хорошо если место под уже выделенный массив позволяет увеличить размер, не упираясь в участики памяти занятые другими данными.
Иногда после очередного увеличения массива, уже выделенного участка памяти более не хватает. В таком случае менеджеру приходится искать новый, и копировать старые данные в новый участок памяти, а старый участок помечать как свободный.
Разумеется это занимает время. Именно это и приводит к "не так быстро, как хотелось бы".
Чтобы избежать этого:
1 Способ курильщика, простой: Увеличиваем размер массива не на 1 элемент, а сразу на 16/32/128/1024 элемента (вам виднее, в зависимости от того сколько у вас может быть элементов в массиве). Также заводим счетчик - номер последнего занятого элемента в массиве, и после каждого добавления - увеличиваем этот счетчик на единицу. Этот способ не избавит от проблемы, но будет приводить к менее частому перераспределению памяти.
2 Способ здорового человека, чуть сложнее: используйте указатели. Заведите массив указателей (либо TList), выделяйте место под каждую новую запись (ваш record) вручную, и помещайте указатель на него в ваш массив указателей (или в TList). Не забывайте освобождать выделенную память, когда ваши обьекты больше не нужны. Этот спобоб более правильный, так как в этом случае перераспределение происходит очень редко.
Кстати, реализация TList использует внутри себя первый способ.
-
Андрей Рулин отреагировална krapotkin в Отрисовка прямоугольника.
Если вы хотите на чем-то рисовать, не надо портить стены, возьмите бумагу, холст там..
Специально придуман PaintBox именно для ваших целей.
Но для демо ровно то же самое вместо PaintBox.OnPaint сделал на Form.OnPaint
Работает одинаково, на windows и android. Уверен, что ровно так же все будет на всех остальных ОС.
type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); private FCrd: TPointF; public end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin FCrd := PointF(X,Y); end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Invalidate; end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin Canvas.Fill.Color := TAlphaColorRec.Wheat; Canvas.FillRect(rectf(FCrd.X, FCrd.Y, FCrd.X+100, FCrd.Y+100), 0,0,[], 1); end; там в проекте еще дофига разных странных решений и ошибок. Но это уже оффтоп...
-
Андрей Рулин отреагировална krapotkin в Отрисовка прямоугольника.
потому что нельзя рисовать где попало когда захочется
есть событие OnPaint - его и используйте
-
Андрей Рулин получил реакцию от Ingalime в пример отправки данных через USB
Вот например есть https://github.com/LongDirtyAnimAlf/Delphi-Android-USB-HID . К сожалению библиотека старая , не использует возможности последний версий API . И, подозреваю, глючная.
-
Андрей Рулин отреагировална Barbanel в Установить две версии программы на один Android-планшет
Нужно в настройках проекта изменить имя пакета.
В 10.3 это в Project -> Options -> Application -> Version Info -> Key: ProgramID