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

Martifan

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

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

  • Посещение

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

    16

Martifan стал победителем дня 29 июля 2023

Martifan имел наиболее популярный контент!

1 Подписчик

Информация о Martifan

  • День рождения 11.10.1980

Информация

  • Пол
    Мужчина
  • Город
    Тбилиси

Посетители профиля

5 445 просмотров профиля
  1. TJSONObject* arr1Object = static_cast<TJSONObject*>(arr1->Get(0)); TJSONArray* arr2 = static_cast<TJSONArray*>(arr1Object->GetValue(_D("arr2"))); for (int i = 0; i < arr2->Count; i++) { TJSONObject* arr2Object = static_cast<TJSONObject*>(arr2->Get(i)); String id = arr2Object->GetValue(_D("ID"))->Value(); String value = arr2Object->GetValue(_D("value"))->Value(); }
  2. таких же долбаебов как ты появляется офтопики не принимай как оскравление просто это твоя судьба и не пиши больше хватит офтопить пост
  3. @Tumaso:)))))))))))))) начнем с того что не тебе решать каким ответом тут место не все такие "умные" как ты я еще раз задам вопрос для тех кто в танке в чем ошибка? то что сгенерировал чат бот? еще раз повторюсь я стараюсь помочь человека отличие от тебя, неужели своё время не жалко сидеть и строчить всякую ерунду? можешь помочь человеку помоги, а так никому тут не интересует твой мнении особенно про чат бот. так что успокойся и не пиши не по тему больше научись ценить свое и чужого времени, в жизни пригодится:)
  4. @Tumaso Собственно чем вас не устраивают ответы чат-бота? Или что-то ошибочно? в отличии от вас, я пытаюсь помочь человеку, если вы тоже можете сгенерировать ответ, почему бы вам этого не сделать? ведь для того и форум, чтобы помочь
  5. FireMonkey - это фреймворк разработки кросс-платформенных приложений на Delphi и C++Builder. В отличие от VCL (Visual Component Library), который тесно интегрирован с WinAPI, FireMonkey разработан для работы с различными платформами, и поэтому он не всегда корректно обрабатывает некоторые функции WinAPI. WM_SYSCOMMAND - это сообщение WinAPI, которое посылается при выборе команды из системного меню окна. SC_CLOSE, SC_MINIMIZE, SC_MAXIMIZE и SC_RESTORE - это параметры, которые соответствуют командам закрытия, минимизации, максимизации и восстановления окна. Но поскольку FireMonkey обеспечивает кросс-платформенность и не привязан к WinAPI, он может не корректно обрабатывать такие сообщения. Поэтому, когда вы отправляете эти команды с помощью SendMessage, они могут не вызывать ожидаемого поведения. По этой причине, для работы с окнами в FireMonkey, лучше использовать встроенные функции и методы фреймворка. Например, для закрытия формы вы можете использовать метод Close, для минимизации и максимизации - свойства WindowState. Если вам необходимо управлять окном на более низком уровне, возможно, вам придется обратиться к платформо-зависимому коду, используя условные директивы компиляции ({$IFDEF}), чтобы разделить код Windows и код для других платформ. Однако в большинстве случаев этого следует избегать, чтобы сохранить кросс-платформенность вашего приложения.
  6. Скорее всего, увеличение размера исходного кода произошло из-за следующих причин: 1. Разница в размере типов PChar и PAnsiChar. В Delphi 2009 и более поздних версиях PChar был заменен на PAnsiChar для совместимости с Unicode. Размер PAnsiChar в 2 раза больше чем PChar. 2. Автоматическая конвертация строковых литералов в Unicode. В новых версиях Delphi строковые литералы имеют тип UnicodeString вместо AnsiString. Это также увеличивает размер. 3. Добавление префиксов перед строковыми литералами. Для совместимости с Unicode Delphi автоматически добавляет префиксы перед строками, например 'U', 'L', etc. Это тоже увеличивает размер кода. 4. Выравнивание данных. Компилятор может добавлять выравнивание в памяти для некоторых типов, например для PAnsiChar. 5. Другие изменения в формате объектного кода. Например, более длинные имена классов/методов. Таким образом, переход на новые версии Delphi с Unicode поддержкой может привести к значительному увеличению размера исходного кода из-за несовместимости строк, упаковки данных и других факторов. Это нормальное явление, цена прогресса.
  7. Martifan

    Отстилить TGrid

    Если вы используете FireMonkey в Delphi или C++ Builder, чтобы настроить внешний вид TGrid, вам потребуется использовать механизм стилей FireMonkey. Стили FireMonkey позволяют настраивать внешний вид каждого элемента интерфейса, включая TGrid. Ниже представлены некоторые шаги, которые вы можете предпринять для кастомизации TGrid: Изменение шапки: Откройте Style Designer для вашего TGrid (щелкните правой кнопкой мыши на компоненте и выберите "Edit Default Style"). Вы увидите дерево стилей с элементом "header", который представляет шапку TGrid. Вы можете изменить его свойства для изменения внешнего вида шапки. Изменение высоты шапки: Высоту шапки можно изменить, изменив свойство Height у элемента "header" в дереве стилей. Изменение размера и положения текста: Размер текста можно изменить, изменив свойство FontSize у элемента "text" в дереве стилей. Положение текста можно изменить, изменив свойства Position и Margin у этого же элемента. Создание резиновых колонок: Создание резиновых колонок, которые автоматически растягиваются на всю ширину TGrid, может быть немного сложнее. Вы можете попытаться реализовать это, установив свойство Align у каждой колонки в значение alClient, но вам придется самостоятельно управлять шириной каждой колонки, чтобы обеспечить их равномерное распределение. Помимо этого, важно убедиться, что вы сохраняете изменения в стилях, иначе они не будут применены к вашему приложению. После внесения изменений в Style Designer, убедитесь, что вы выбрали "Apply and Close" для применения изменений.
  8. К сожалению, в FireMonkey для Windows нет встроенной поддержки для размещения компонентов или рисования на заголовке окна (title bar). Однако, есть несколько возможных вариантов для достижения похожего эффекта: Создать собственный кастомный компонент на основе TControl, который будет перекрывать заголовок окна и имитировать его. Можно нарисовать свой фон, кнопки и т.д. Использовать Windows API функции для настройки и изменения заголовка окна. Например, SetWindowText, SetWindowLong и другие. Это более сложный подход, но дает больше контроля. Рассмотреть сторонние компоненты и библиотеки. Возможно, кто-то уже реализовал похожую функциональность для FireMonkey. Попробовать поместить TControlAboveTarget на TForm и настроить его позицию/размер чтобы перекрывал заголовок. Не идеальный вариант, но может сработать. Так что в целом это возможно реализовать в FireMonkey, но нет встроенного прямого решения как в VCL. Придется поиграться с кастомными компонентами и низкоуровневым API.
  9. К сожалению, вы не можете использовать прямые значения цвета в теге android:drawable. Этот атрибут предназначен для ссылок на ресурсы, а не для прямых значений цвета. Однако вы можете определить свой собственный цвет в ресурсах вашего приложения и ссылаться на него. Для этого выполните следующие шаги: 1. Откройте файл res/values/colors.xml в вашем проекте. Если этот файл не существует, создайте его. 2. В файле colors.xml определите свой собственный цвет, как показано ниже: <?xml version="1.0" encoding="utf-8"?> <resources> <color name="my_custom_color">#0066cc</color> </resources> Теперь вы можете использовать свой пользовательский цвет в файле splash_image_def: <item android:drawable="@color/my_custom_color" /> учтите, что названия ресурсов не должны начинаться с цифры и не должны содержать символов, кроме букв (a-z), цифр (0-9) и подчеркивания (_). Ваш код может выглядеть следующим образом: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/my_custom_color" /> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher" /> </item> </layer-list>
  10. При возникновении ошибки при разработке приложения на Delphi для Android, несколько шагов и рекомендаций могут помочь в решении проблемы: Проверка настроек SDK и NDK: Убедитесь, что пути к SDK, NDK и Java корректно установлены в настройках Delphi. Проверьте также, что версии SDK и NDK совместимы с версией Delphi, которую вы используете. Проверка журнала ошибок: Внимательно изучите сообщения об ошибках. Если ошибка связана с Java, возможно, проблема связана с версией Java. Убедитесь, что вы используете поддерживаемую версию Java. Обновление Delphi: Если вы используете старую версию Delphi, рассмотрите возможность обновления до последней версии. Возможно, в новой версии были исправлены ошибки, которые вызывают проблемы. Переустановка компонентов: Возможно, проблема связана с конкретными компонентами, такими как LocationSensor. Попробуйте удалить и заново добавить эти компоненты в проект. Проверка разрешений: Убедитесь, что ваше приложение имеет все необходимые разрешения на устройстве, особенно если используются функции, такие как доступ к геолокации. Тестирование на разных устройствах и версиях ОС: Протестируйте ваше приложение на различных устройствах и версиях Android, чтобы увидеть, возникает ли проблема только на определенных устройствах или версиях ОС. Обращение к сообществу: Обратитесь за помощью к сообществу разработчиков Delphi. Можете задать вопрос на форумах, таких как Stack Overflow, или присоединиться к группам Delphi в социальных сетях. Воспроизведение в чистом проекте: Попробуйте создать новый проект и пошагово воспроизвести ту же функциональность, чтобы увидеть, на каком шаге возникает ошибка. Проверьте проект на наличие поврежденных файлов: Возможно, файлы проекта повреждены или имеют неправильную конфигурацию. Создание нового проекта и перенос кода может быть полезным шагом. Надеюсь, что хотя бы один из предложенных шагов поможет вам решить вашу проблему.
  11. Для тестирования приложения, написанного на Delphi 10.4 для Android, можно использовать различные инструменты и ресурсы. Реальные устройства: Тестирование на реальных устройствах позволяет вам увидеть, как приложение будет работать в реальных условиях. Используйте устройства с различными характеристиками экрана, версиями ОС и производительностью для более обширного тестирования. Эмуляторы Android: Эмуляторы позволяют вам запускать приложения Android на компьютере. Вы можете настроить эмуляторы с различными размерами экрана, разрешениями и плотностью пикселей. Android Studio: Это официальная среда разработки для Android, и она включает в себя эмулятор Android. Вы можете создать различные виртуальные устройства с разными характеристиками для тестирования вашего приложения. Genymotion: Это еще одна популярная среда для эмуляции Android-устройств. Она предлагает некоторые функции, которые могут быть полезны для разработчиков, такие как встроенные инструменты для тестирования GPS и акселерометра. Сервисы облачного тестирования: Если вы не хотите заниматься настройкой эмуляторов или не имеете доступа к множеству реальных устройств, вы можете воспользоваться сервисами облачного тестирования. Firebase Test Lab: Это услуга от Google, которая позволяет вам тестировать ваше приложение на реальных устройствах, хостед в облаке Google. AWS Device Farm: Это услуга от Amazon, которая позволяет вам тестировать и взаимодействовать с вашим Android-приложением на множестве реальных устройств. При тестировании приложения уделите внимание таким аспектам как адаптивный дизайн, работоспособность на различных версиях ОС и корректность работы функционала.
  12. В Delphi для усиления звука записи можно воспользоваться классом TAudioCaptureDevice и его свойством Volume. Это свойство позволяет установить уровень громкости для записи звука. Чем выше значение Volume, тем громче будет записанный звук. Вот пример, как можно использовать свойство Volume: uses FMX.AudioCapture, System.SysUtils; procedure RecordAudio(const AFileName: string; const AVolume: Single); var AudioCapture: TAudioCaptureDevice; begin AudioCapture := TAudioCaptureDevice.Create(nil); try AudioCapture.FileName := AFileName; AudioCapture.PauseLength := 0; AudioCapture.Volume := AVolume; // Установка уровня громкости AudioCapture.Active := True; Sleep(5000); // Запись в течение 5 секунд AudioCapture.Active := False; finally AudioCapture.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Задайте путь и имя файла, в который будет сохранен звук // Укажите значение громкости от 0 до 1 (например, 0.5 для половины максимальной громкости) RecordAudio('/sdcard/MyRecording.wav', 0.8); ShowMessage('Запись завершена.'); end; В этом примере в процедуре RecordAudio добавлен дополнительный параметр AVolume, который позволяет задать уровень громкости записи. Значение AVolume должно быть в диапазоне от 0 до 1, где 0 соответствует минимальной громкости, а 1 - максимальной. Вы можете экспериментировать с различными значениями AVolume, чтобы найти наиболее подходящий уровень усиления звука для вашего приложения и устройства.
  13. Ваши проблемы с анимацией могут быть связаны с несколькими вещами. Во-первых, стоит отметить, что метод AnimateFloatWait помечен как устаревший, и рекомендуется использовать Ani.TAnimator вместо него. Ani.TAnimator.AnimateFloat создает и запускает объект TFloatAnimation. Он устанавливает свойства анимации и начинает анимацию. Однако стоит заметить, что если объект не видим в момент вызова этого метода, анимация не запускается: анимация создается, но не выполняется. Вторым фактором может быть то, как Android обрабатывает анимацию. Android может иметь разные характеристики производительности и отображения, которые влияют на то, как анимация выполняется на устройстве. Также, есть пример использования анимации в Delphi для Android, который может быть полезен. Get access to over 100 FireMonkey cross platform samples for Android, IOS, OSX, Windows, and Linux! Следовательно, я бы посоветовал начать с применения Ani.TAnimator.AnimateFloat вместо AnimateFloatWait, и убедиться, что объект, который вы пытаетесь анимировать, видим на экране во время начала анимации. Если проблема продолжает сохраняться, вам может потребоваться более детальное исследование спецификаций Android и как он обрабатывает анимацию в Delphi.
  14. Name Query NB (NetBIOS) - это протокол, используемый в сетях Windows для разрешения имен сетевых узлов. NetBIOS (Network Basic Input/Output System) представляет собой программный интерфейс, который позволяет компьютерам в локальной сети общаться друг с другом. Он был создан в 1980-х годах и до сих пор используется в некоторых сетях Windows. Если ваше приложение, работающее под управлением Android, вызывает исключение UnknownHostException, это может быть связано с тем, что Android, как правило, не поддерживает протокол NetBIOS из коробки. В то время как в Windows эта функция встроена, в системе Android для ее работы может потребоваться дополнительная библиотека или служба. Если вы должны использовать NetBIOS в своем приложении Android, вам придется найти способ включить эту поддержку, что может включать в себя использование сторонней библиотеки, которая поддерживает протокол NetBIOS, или применение специфической для Android реализации сетевого взаимодействия. Однако важно помнить, что использование протокола NetBIOS может вызывать проблемы с безопасностью и совместимостью, поскольку он устарел и больше не рекомендуется для использования в современных сетевых средах.
  15. Есть несколько возможных причин для вашей проблемы. Самая вероятная причина - это различие в том, как системы Android и Windows обрабатывают локальные имена хостов. 1. DNS и DHCP: Имена хостов, которые работают в вашей локальной сети, обычно разрешаются через DHCP и DNS, работающие на вашем маршрутизаторе или другом устройстве сети. Android может не иметь доступа к этой информации или может обрабатывать её по-другому. 2. Сетевая изоляция: Android может изолировать приложения от локальной сети для улучшения безопасности. Это может препятствовать разрешению локальных имен хостов. 3. Конфигурация приложения: Ваше приложение может требовать определенных разрешений для доступа к сети, которые должны быть указаны в файле манифеста приложения Android. 4. Сервисы Android: В зависимости от версии Android и/или конфигурации устройства, некоторые службы, такие как mDNS, могут быть отключены или недоступны. Ваша задача может включать в себя решение этих проблем или поиск альтернативного решения, которое работает как на Android, так и на Windows. Например, вместо использования имени хоста "Comp0" вы могли бы использовать IP-адрес напрямую (если он статический), или вы могли бы реализовать некоторую форму обнаружения служб в вашем приложении, чтобы найти нужный хост в вашей сети.
×
×
  • Создать...