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

Активность

Лента обновляется автоматически

  1. Вчера
  2. Последняя неделя
  3. Отличное решение Dmitry_4501! Большое спасибо за профессиональную помощь.
  4. В общем. Я решил тоже установить RedOS. Установил на виртуалку. Собрал SDK в Delphi. Попробовал собрать проект - не получилось Тогда я начал искать в сети решения. Нашел как установить gcc и прочие утилиты и библиотеки для разработки. (при помощи команды dnf groupinstall "Development Tools" После установки я решил обновить SDK при помощи кнопки Update Local File Cache По итогу ничего не получилось. Тогда я решил при помощи Beyond Compare сравнить файлы и папки моих SDK (один для RedOS не работающий и второй для Ubuntu полностью рабочий). Я заметил различие в том что в SDK для RedOS отсутствовала папка gcc. Я полез искать эту папку в самой RedOS и нашел её, но почему-то PAServer её не передал во время создания SDK. Зайдя в папку я нашел причину проблемы. Для Ubuntu папка с gcc называется вот так - x86_64-linux-gnu А для RedOS папка с gcc называется вот так - x86_64-redsoft-linux Вот и вся причина. PAServer ничего не знает ни о какой x86_64-redsoft-linux и поэтому при создании SDK её не копирует. Отсюда и ошибка сборки проекта на стадии линковки. В общем, решил эту проблему самым простым способом - создал символическую ссылку ln -s ./x86_64-redsoft-linux ./x86_64-linux-gnu А затем ещё раз в Delphi нажал на кнопку Update Local File Cache После того как процесс обновления файлов SDK завершился я попробовал собрать проект и... Краткое руководство как получить рабочий SDK для RedOS. 1. Загружаем PAServer в систему 2. Выполняем команду dnf groupinstall "Development Tools" 3. В терминале переходим по пути из / в /usr/lib/gcc 4. Создаем символическую ссылку ln -s ./x86_64-redsoft-linux ./x86_64-linux-gnu 5. В Delphi создаем\обновляем (при помощи Update Local File Cache) SDK для RedOS Готово
  5. Попробуй создать симлинк, например ln -s /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so /usr/lib/gcc/libgcc_s.so
  6. Ещё раньше
  7. Эта ошибка как раз на SDK для RedOS 8. Здесь ранее (в 2017 году) предлагалось добавить в RedOS пакеты gcc-6 и linux-compiler-gcc-6-x86, но таких уже нет. Пробовал установить просто gcc, не помогло.
  8. Может поможет создание еще одного SDK но уже для RedOS?
  9. Программа (каталог библиографических ссылок) компилируется RAD Studio 12.1 под Ubuntu 22.04, но появляется ошибка при сборке под RedOS 8: [DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\ld-linux.exe: error: cannot find -lgcc_s. Решения, найденные поиском не помогают. Может есть варианты решения?
  10. Уже давно замечаю такое странное поведение, но увы, отловить пока причину так и не смог. Не сказать бы что это хоть как-то влияет на работу самой IDE. В общем. При открытии и установке пакетов иногда среда может поломать пути в настройках в секции Library, исключительно для Windows 32-bit, для остальных платформ всё нормально. Вот как это выглядит. А вот как выглядит на Windows 64 Разницу заметили? Если нет, то вот в чём она выражается Среда, с какого-то момента изменяет пути таким образом, чтобы ни одной переменной не было. Причём, если добавить новый путь с использованием переменных, то спустя какое-то время и он изменится.
  11. Приветствую Всех ! Требуется небольшое содействие в таком вопросе: Имеется форма типа TfmMain, на которой расположен компонент grMain : TGrid. В grMain содержится колонка типа TFloatColumn. Для grMain заданы два события: OnGetValue и OnSetValue так: var Matrix : array[0..9, 0..9] of Double; {--------------------------------------------------------------------------} procedure TfmMain.grMainGetValue( Sender : TObject; const ACol, ARow : Integer; var AValue : TValue); begin AValue := TValue(Matrix[ARow, ACol]); end; {--------------------------------------------------------------------------} procedure TfmMain.grMainSetValue( Sender : TObject; const ACol, ARow : Integer; onst AValue : TValue); begin Matrix[ARow, ACol] := StrToFloat(AValue.AsString); end; Вопрос вот в чем: Я использовал колонку типа TFloatColumn и ожидаю, что в обработчик OnSetValue будет передано значение AValue содержащее в себе значение типа Single / Double / Extended, т.е вещественного типа. Однако AValue содержит значение типа String ! Можно ли, каким либо образом, заставить TFloatColumn передавать, значение вещественного типа, в обработчик OnSetValue ? Иными словами, я не хочу вызывать функцию StrToFloat в методе gtMainSetValue ! В Help'e ничего поясняющего данную ситуацию я не нашел.
  12. Это понятно. Я попробовал 2 верианта: Использовал один из имеющихся стилей ( Их там великое множество - Вот бы иметь описание, зачем, каждый из них, нужен. ) Отредактировал имеющийся, удалив подкомпонент Text. Нужный эффект получен.
  13. да. если из стиля убрать текст(или переименовать объект с этим именем), то он отобразиться не сможет ни при каких условиях
  14. Спасибо ! Круто ! Я сразу подумал, что не получил ответа - Причем тут стили ? , но понял, что ошибался, посмотрев урок. Концепция стилей действительно крутая. Обязательно посмотрю следующие уроки !
  15. В VCL, у класса TToolBar, есть свойство ShowCaptions, которое позволяет отображать / скрыть надписи на кнопках, расположенных на TToolBar'е. Не вижу ничего подобного в FMX. Подскажите можно ли добиться того, чтобы надписи на кнопках ( TSpeedButton ) не отображались, даже если они заданы в свойствах Action, сопоставленной с кнопкой ? Наблюдаю еще такую вещь: Сбрасываю свойство Text у TSpeedButton, но у Action оно установлено. В Design Time надписи на кнопках не отображаются, а в Run Time надписи считываются из Action. Интересно знать каков алгоритм выбора текста для отображения на кнопке ( свое поле Text или поле Action.Text ) ? Как этим управлять ? PS: Наведите, если не сложно, на учебный материал (книги, ... ) по библиотеке FMX. Т.е интересен материал, поясняющий, как, грамотно строить интерфейс с помощью FMX. VCL пользуюсь очень давно, а с FMX - всё, как-то, через ж... ;)
  16. А что https://github.com/Spelt/ZXing.Delphi не работает?
  17. Ох. Как говориться, шли годы, а тривиальная задача так и не решена под эту обезьяну. Это уже не говоря о том, что косяков там дикое кол-во, и с годами лучше не становится
  18. blStartDiscovery := FJBluetoothAdapter.startDiscovery; if TJBuild_VERSION.JavaClass.SDK_INT >= 29 then тогда нужно доп разрешение FPermissionBackgroundLocation := JStringToString(TJManifest_permission.JavaClass.ACCESS_BACKGROUND_LOCATION); тут через BroadcastReceiver ловим TJBluetoothDevice.JavaClass.ACTION_FOUND и TJBluetoothAdapter.JavaClass.ACTION_DISCOVERY_FINISHED и TJBluetoothAdapter.JavaClass.ACTION_DISCOVERY_STARTED в методе BroadcastReceiver OnReceive(Context: JContext; Intent: JIntent); if JStringToString(Intent.getAction).Equals(JStringToString(TJBluetoothDevice.JavaClass.ACTION_FOUND)) then begin Parcel := intent.getParcelableExtra(TJBluetoothDevice.JavaClass.EXTRA_DEVICE); if Parcel <> nil then BluetoothDevice := TJBluetoothDevice.Wrap((Parcel as ILocalObject).GetObjectID); if BluetoothDevice <> nil then if (BluetoothDevice.getBondState() = TJBluetoothDevice.JavaClass.BOND_NONE) then begin Form1.AddListViewItem(Form1.lvBTOBD, jstringtostring(BluetoothDevice.getName), jstringtostring(BluetoothDevice.getAddress),'Bluetooth'); end; end;
  19. uses ... type TGnnsStatusCallbackDelegate = class(TJavaLocal, JGnssStatusCallbackDelegate) private FCallback: JGnssStatusCallback; protected public procedure onFirstFix(ttffMillis: Integer); cdecl; procedure onSatelliteStatusChanged(status: JGnssStatus); cdecl; procedure onStarted; cdecl; procedure onStopped; cdecl; public constructor Create(); end; ... var GnnsStatusCallbackDelegate := TGnnsStatusCallbackDelegate implementation procedure TForm1.FormCreate(Sender: TObject); begin GnnsStatusCallbackDelegate := TGnnsStatusCallbackDelegate.Create; end; constructor TGnnsStatusCallbackDelegate.Create; begin inherited Create; FCallback := TJGnssStatusCallback.JavaClass.init(TAndroidHelper.Context, Self); end; procedure TGnnsStatusCallbackDelegate.onFirstFix(ttffMillis: Integer); begin // end; procedure TGnnsStatusCallbackDelegate.onSatelliteStatusChanged( status: JGnssStatus); var satelliteCount, usedCount: Integer; begin TTask.Run(procedure var i: Integer; begin try usedCount:= 0; satelliteCount := status.getSatelliteCount(); for i := 0 to satelliteCount - 1 do if status.usedInFix(i) then usedCount := usedCount + 1; TThread.Synchronize(nil, procedure begin Form1.tqsSatMax.Text := satelliteCount.ToString; Form1.tqsSat.Text := usedCount.ToString; Form1.tnSat.Text := usedCount.ToString; end); except Form1.LogCAAdd('TGnnsStatusCallback except'); end; end); end; procedure TGnnsStatusCallbackDelegate.onStarted; begin // end; procedure TGnnsStatusCallbackDelegate.onStopped; begin // end;
  20. Да - чуть было не забыл: тостер внутри J_BT.zip
  21. Вообще-то - проект не мой, а лежит по адресу: c:\Users\Public\Documents\Embarcadero\Studio\22.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\ и окромя ГолубыхЗубов (базируется, правда на System.Bluetooth) там ещё кучи: ВиФи, акселерометр, геолокация, ... но самый прикольный TabSliding. Как и подсказал OnePeople в потоке TJReceiver ждём CRLF (#10 + #13) и строка выходит целиком, НО время её "коллекционирования" в System.Bluetooth занимает где-то секунд 5, а у мя таймер каждые 500 мС посылает запрос состояния и выводит положение датчиков.... Так что System.Bluetooth - не вариант, а вот исходник (точнее - обрывки) из последнего поста OnePeople после кувалды и напильника шлифанул "нулёвкой" и заработало... Кстати, для таких же почемучек как я (а мож и погоремычнее) приаттачиваю отшлифованный проект на Androidapi.JNI.Bluetooth (Ас Из - искушённые Гуру заметят в нём угловатости но критику эту - в студию: допилим). И чтобы чат заработал необходимо в среде Arduino IDE прошить ЕСП32 скетчем c:\Users\Администратор\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\BluetoothSerial\examples\SerialToSerialBT\... Затем проект затолкать Дэлфёй в телефон, в БТ-меню тела нажать "добавить устройство" и тел начнёт дискаверить.... По завершении законнектиться с ESP32-BT-Slave и тут же разорвать коннект, запустить J_BT, нажать btGetPaired и в комбобоксе (что рядом с ней) выбрать ESP32-BT-Slave и как увидите TJReceiver = Started и FJSocket <> nil - можно чатиться с ЕСПхой открыв в Arduino IDE монитор сериал порта (Ctrl+Shift+M). Вот и добрались к центральному вопросу поста: а как средствами Androidapi.JNI.Bluetooth дискаверить устройства поблизости? Нет можно, конечно, забить костыль из System.Bluetooth, но хотелось бы чтобы если уж АПИ, то АПИ. Заранее благодарен. J_BT.ZIP
  22. Привет Луди! Извините за рускии язык. У мена ест код на C# проект. Ево надо На делпи перевести. Код маленки. Кто помозет мен на етом? конешно не бесплатно. Поставлау код исходник. Собран на Висуал Студио 2012 на C#
  23. Более тупого вопроса на форуме, посвященному делфи, и не припомню
  24. Во все мыслимые стороны. Популярность Делфи выросла на прямых клиент-серверных приложениях. Сейчас так не пишут, почти везде - веб.
  25. Firemonkey

    Delphi vs MS Visual Studio

    В чем преимущества (кроме бесплатности) у MS Visual Studio перед Delphi при создании Windows-программ?
  1. Загрузить ещё активность
×
×
  • Создать...