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

Камышев Александр

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

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

  • Посещение

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

    9

Весь контент Камышев Александр

  1. Итого, мы плавно подошли к отделению логики, отображения и данных, иначе модель-отображение-контроль https://ru.wikipedia.org/wiki/Model-View-Controller Применительно к этому обсуждению - для быстрой разработки простых приложений FMX удобен, абзац. Для серьезных проектов использовать FMX только в качестве интерфейса между приложением и пользователем, приложением и сервером. Т.е. для форм, контролов, файлов, сокетов и портов. Это инструмент отображения и обмена данными. Модель, либо логика и методы работы с данными не должны быть привязаны к FMX. В этом случае, модель (ядро приложения) можно без изменений использовать вместе с инструментами которые предоставляет Android Studio и XCode. Однако паскаль тут совсем не вот, только Си, только хардкор. Для XCode есть "Free Pascal for Xcode Integration Kit", а с AndroidStudio *.pas, видимо, совсем никак. Для серьезной графики можно пользоваться кроссплатформенным OpenGL. Как вариант - использование java классов, здесь обсуждают http://fire-monkey.ru/topic/2085-serial-port/ Таким образом, даже если случится страшное и FMX вымрет (что вряд ли), то красоту кода удастся бережно сохранить и использовать в дальнейшем.
  2. отсюда http://developer.android.com/tools/sdk/ndk/index.html The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. Typically, good use cases for the NDK are CPU-intensive applications such as game engines, signal processing, and physics simulation. - тут пишут что для игровых движков, обработки сигналов и симуляции физики нативный код может работать лучше java. оттуда же сразу: Before downloading the NDK, you should understand that the NDK will not benefit most apps. As a developer, you need to balance its benefits against its drawbacks. Notably, using native code on Android generally does not result in a noticable performance improvement, but it always increases your app complexity. In general, you should only use the NDK if it is essential to your app—never because you simply prefer to program in C/C++. When examining whether or not you should develop in native code, think about your requirements and see if the Android framework APIs provide the functionality that you need. - тут, в числе прочего, пишут что использовать только нативный код нужно если это действительно необходимо, а не потому что привык писать на си. еще: The Android NDK is a companion tool to the Android SDK that lets you build performance-critical portions of your apps in native code. It provides headers and libraries that allow you to build activities, handle user input, use hardware sensors, access application resources, and more, when programming in C or C++. If you write native code, your applications are still packaged into an .apk file and they still run inside of a virtual machine. - нативный код выполняется внутри виртуальной машины так что весь инструментарий в руки, возможностей воз, пиши - не хочу и еще, Dalvik и сменивший его ART(Android Runtime) также написаны на си.
  3. Возможно я ошибаюсь, но это скорее описание работы Software Development Kit, ключевое слово Native. В 2009 году в дополнение к ADT был опубликован Android Native Development Kit (NDK)[56] — пакет инструментариев и библиотек, позволяющий реализовать часть приложения на языке С/С++. NDK рекомендуется использовать для разработки участков кода, критичных к скорости.
  4. Ядро Андроида - Linux Kernel, написан, в основном, на си, и серьезность проекта коррелируется скорее с навыками программера чем со средой RAD. Приложения под операционную систему Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik. Программы для Dalvik пишутся на языке Java. Несмотря на это, стандартный байт-код Java не используется, вместо него Dalvik исполняет байт-код собственного формата. После компиляции исходных текстов программы на Java (при помощи javac) утилита dx из Android SDK преобразует файлы классов (расширение .class) в файлы собственного формата (с расширением .dex), которые и включаются в пакет приложения (.apk). Android Native Development Kit позволяет портировать библиотеки и компоненты приложений, написанные на Си и других языках.
  5. Vanka, плохо быть самым умным - спросить не у кого, судя по проделанной работе это Вы теперь эксперт...
  6. Это вопрос или поделился шикарным багом? Если вопрос - не заполнять сomboedit в FormCreate и вообще ничего там визуального не заполнять и не трогать. Похожая проблема видел в конструкторе класса формы в CBulder в Seattle, там помогает перенести код из конструктора класса в OnCreate. Пытался курить форумы чем отличается конструктор класса и метод OnCreate с++ от FormCreate в object pascal - но там люди что-то тяжелое употребляют... мозг можно травмировать. Как вариант попробовать отлавливать vkHardwareBack в FormKeyUp и пресекать его присвоением Key = 0, возможно приложение так реагирует на "press power button (or close Phone Case)". И вообще посмотреть что там приходит в FormKeyUp.
  7. Ничего не могу найти про кэширование в TMapView, небольшой буфер есть, область предыдущего сеанса отображается offline. размеры хранилища? есть инструменты для управления кэшированием?
  8. я ж про то и толкую, TObject - это тоже класс, верхний в иерархии, и если класс TObject создается и заносится в поле (как и другие классы) то его тоже нужно удалять иначе это лик памяти? не исключено правда что есть механизм очистки... мы отвлеклись, у меня тоже на винде после сдвига скролом надписи под чекбоксы уползают:
  9. в режиме совместимости со старой версией и от имени администратора не запускается? пишет чего-нибудь?
  10. Item.Data := TObject(k); под андроид на присвоении улетает в AccessViolation, с памятью беда. Так как ошибка в FormCreate то и черный экран. Как это на винде работает... Я как то на си пишу, там Item.Data это TObject* (именованный указатель на TObject), некорректно в него копировать ссылку на локальную переменную, можно ссылку на копию, но тогда ее удалять потом надо. А в примере получается в сам указатель как в целое число идет присвоение и на винде работает? Все равно некорректно, платформозависимо. Может все не так, корифеи есть? что происходит здесь: Item.Data := TObject(k) и почему на андроид ошибка?
  11. Item.Data:=TObject(k); - ссылка на локальную переменную процедуры k - это скорее ошибка, по выходу из процедуры память занимаемая переменной k будет освобождена, эта ссылка будет некорректной и приведет к ошибке работы с памятью. В общем ненужное, вредное присвоение. а ошибка возможно ComboBox1.Controls.Free();, на VCL это не работает, код для FMX очищать надо перед повторным заполнением ComboBox.
  12. твое кунгфу расстраивает... положи на форму ComboBox1 и кнопку, на нажатие кнопки: procedure TForm.Button1Click(Sender: TObject); var Item : TListBoxItem; begin ComboBox1.Controls.Free(); Item := TListBoxItem.Create(nil); Item.Parent := ComboBox1.ListBox; Item.Text := 'что-то 0'; Item := TListBoxItem.Create(nil); Item.Parent := ComboBox1.ListBox; Item.Text := 'что-то 1'; TListBox(ComboBox1.ListBox).ShowCheckboxes:=True; end;
  13. это и есть полный код q - явно набор данных из запроса, проход в цикле по набору с созданием TListBoxItem. из нестандартного в конце присвоение TListBox(CategoryList.ListBox).ShowCheckboxes:=True; разве что еще в начале очистить CategoryList что-то типа CategoryList.Controls.Free
  14. EnumDisplayDevice - кол-во мониторов EnumDisplaySettingsEx - для перечисления списка видео-режимов ChangeDisplaySettingsEx - для каждого полученного режима с флагом тестирования для проверки совместимости. примеры в поисковике или в msdn
  15. вопрос был по ссылке описание режимов я так понял Вам для виндовс, так писать надо систему, платформу, хотя на мобильных устройствах может быть несколько экранов тоже Под винду есть в VCL Screen.Monitors[0].Handle, по хэндлу с помощью winAPI можно определить все о мониторе.
  16. https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BE%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0
  17. мдя... 16:9 - стандартный широкоформатный, ширина к высоте
  18. В Seattle поменялся путь к документам, и то что в GetDocumentsPath не видно - ибо не Shared теперь, в файловом менеджере не видно, однако файлы пишутся, проверяли их на чтение? В XE7 GetSharedDocumentsPath выводил в Android/data/com.embarcadero.имя, в Seattle путь в папку Documents в корне. GetDocumentsPath в Seattle указывает в Android/data/com.embarcadero.имя и файлы скрытые. Конечно проверял, при порте проекта с XE8 на Seattle - и запись, и чтение у меня идёт по "GetDocumentsPath", проект работает, всё пишется-читается автор, kratos23 проверял на чтение? и еще сразу уточнить об чем речь, какая эмбаркадеро?
  19. В Seattle поменялся путь к документам, и то что в GetDocumentsPath не видно - ибо не Shared теперь, в файловом менеджере не видно, однако файлы пишутся, проверяли их на чтение? В XE7 GetSharedDocumentsPath выводил в Android/data/com.embarcadero.имя, в Seattle путь в папку Documents в корне. GetDocumentsPath в Seattle указывает в Android/data/com.embarcadero.имя и файлы скрытые. Еще момент, были проблемы с файлами после перехода с XE7, если работа с файлами в конструкторе формы, помог вынос в OnCreate, что-то там поменялось.
  20. вот же напали на человека волкИ, сами никогда начинающими не были? это как на дороге машину со знаком "У" сигналить... клади на форму TPaintBox (дальше pb), загружай в него твой bmp, для начала сразу, потом можно в runtime; координаты пикселей идут сверху вниз и слева направо, от нуля до размера pb; все рисовать в OnPaint, между pb.Canvas.BeginScene и pb.Canvas.EndScene само рисование примеры кода здесь есть http://fire-monkey.ru/forum/68-graficheskie-primitivy/ для перерисовки вызывать pb.Repaint
  21. приложение на андроид, Seattle, TGrid при повороте на OnResize меняю ширину столбцов на половину ширины: sgSettings->Columns[0]->Width = sgSettings->Width / 2 - 2; sgSettings->Columns[1]->Width = sgSettings->Width / 2 - 2; после этого сами столбцы рисуются правильно а их хедеры не меняются, получается смещение: после выделения ячейки по клику таблица перерисовывается правильно, куда смотреть?
  22. чего вдруг... копать модуль FMX.PhoneDialer, для сведений об операторе TCarrier, вызывать через GetCarrier, звонить - Call( const APhoneNumber: string; ) : Boolean; получить входящие GetCurrentCalls: TCalls; Александр, человек выше писал, что ему нужны исходники, т.е. работающий вариант, типа ланчера яндекса, который неделю назад вышел.... а вы немного не в тему...вы что хотите, чтобы люди здесь сами программы писали??! туплю
  23. там в ComPort.pas все полностью на winAPI, изменениями не отделаться, под андроид не годится. GASHE прав, надо подключать java, давно хотел попробовать, времени все нет, вот тут пишут как http://delphifmandroid.blogspot.ru/2014/07/java_11.html
×
×
  • Создать...