-
Постов
414 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Активность репутации
-
Pax Beach отреагировална Kitty в TBeacon не работает в iOS
Приложение запустилось. Для iOS, в отличии от андроид оказалось, что надо добавить дополнительно свойство (TBeaconRegionCollection).
-
-
-
Pax Beach получил реакцию от enatechno в После "сна" программа с сервисом не стартует
Ты молодец!
На эту проблему потрачено неимоверно много времени, и не мной одним.
В итоге, действительно проблема решилась.
Всегда молодым программистам по 100 раз говорю — Проверяйте объекты на NULL! Простое условие "if not Assigned(Object)" сэкономит кучу времени. — и сам же в это болото залез.
-
Pax Beach получил реакцию от Равиль Зарипов (ZuBy) в После "сна" программа с сервисом не стартует
Ты молодец!
На эту проблему потрачено неимоверно много времени, и не мной одним.
В итоге, действительно проблема решилась.
Всегда молодым программистам по 100 раз говорю — Проверяйте объекты на NULL! Простое условие "if not Assigned(Object)" сэкономит кучу времени. — и сам же в это болото залез.
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Failed to load libssl.so
теперь кстати можно определить запущено приложение на интеле или нет
-
Pax Beach получил реакцию от Rusland в После "сна" программа с сервисом не стартует
Ты молодец!
На эту проблему потрачено неимоверно много времени, и не мной одним.
В итоге, действительно проблема решилась.
Всегда молодым программистам по 100 раз говорю — Проверяйте объекты на NULL! Простое условие "if not Assigned(Object)" сэкономит кучу времени. — и сам же в это болото залез.
-
Pax Beach отреагировална Rusland в После "сна" программа с сервисом не стартует
Всем кто в сервис передает параметры, типа:
procedure TFrmMain.StartService(); var LIntent: JIntent; begin LIntent := TJIntent.Create; LIntent.setClassName(TAndroidHelper.Context.getPackageName(), TAndroidHelper.StringToJString('com.embarcadero.services.TestRemoteServ')); LIntent.setAction(StringToJString('StartService')); TAndroidHelper.Activity.startService(LIntent); end; function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin if Intent.getAction.equalsIgnoreCase(StringToJString('StopService')) then begin Log('START_NOT_STICKY'); Result := TJService.JavaClass.START_NOT_STICKY; end else // if Intent.getAction.equalsIgnoreCase(StringToJString('StartService')) then begin Log('START_STICKY'); Result := TJService.JavaClass.START_STICKY; end; end; обязательно проверяйте Intent на nil !
Когда система убивает ваше приложение из-за нехватки памяти и перезапускает сервис, то на Intent.getAction происходит Segmentation fault и сервис остается в подвешенном состоянии (на процессоре ARM в Приложения - Работающие у меня отображается как-будто сервис нормально перезапустился, а вот на процессоре Intel - видно как сервис находится в вечном перезапуске). И естественно хост-приложение не может нормально стартануть.
Делаем примерно так:
function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin if Intent<>nil then begin if Intent.getAction.equalsIgnoreCase(StringToJString('StopService')) then begin Log('START_NOT_STICKY'); Result := TJService.JavaClass.START_NOT_STICKY; end else // if Intent.getAction.equalsIgnoreCase(StringToJString('StartService')) then begin Log('START_STICKY'); Result := TJService.JavaClass.START_STICKY; end; end else begin Log('RESTART BY SYSTEM'); Result := TJService.JavaClass.START_STICKY; end; end;
-
Pax Beach отреагировална Камышев Александр в Обработка разрыва соединения в FireDAC
Раньше тоже пользовался продуктами devart, хоть и недорогие, удобные, надежные, но все же они платные, плюс вообще не люблю подключать сторонние компоненты.
На oldschool теплом ламповом CBuilder приходилось много всего подключать: скины, компоненты доступа к бд, инди последних версий, компоненты для отчетов, png и т.п. С тех пор стараюсь избегать всего не родного.
FireDAC понравился, хорош CmdExecMode amAsync - The calling thread and GUI are not blocked. The called method will return immediately.
Позволяет работать с базой из основного потока без завешивания, отправил запрос и занимайся другими задачами пока callback не придет.
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Неудачная компиляция или кривые руки?
это не тот случай когда стоит стоять до конца, обновите среду до актуальной и будет время заняться программированием, а не изобретением великов (которые так и не поедут)
-
Pax Beach отреагировална HyperZen в Ошибка InputBox...
Кому интересно, вот ссылка с примерами со всеми deprecated диалогами и InputBox'ами: http://c2design5sh.blogspot.ru
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.ListBox, FMX.Layouts, FMX.Platform, FMX.StdCtrls, FMX.Controls.Presentation, FMX.DialogService, FMX.ScrollBox, FMX.Memo; type TForm1 = class(TForm) ToolBar1: TToolBar; Label1: TLabel; ListBox1: TListBox; ListBoxItem1: TListBoxItem; ListBoxItem2: TListBoxItem; ListBoxItem3: TListBoxItem; ListBoxItem4: TListBoxItem; ListBoxItem5: TListBoxItem; ListBoxItem6: TListBoxItem; Memo1: TMemo; procedure ListBoxItem1Click(Sender: TObject); procedure ListBoxItem2Click(Sender: TObject); procedure ListBoxItem3Click(Sender: TObject); procedure ListBoxItem4Click(Sender: TObject); procedure ListBoxItem5Click(Sender: TObject); procedure ListBoxItem6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} // uses FMX.Platform, FMX.DialogService //************************************************************************************************** procedure TForm1.ListBoxItem1Click(Sender: TObject); var ASyncService : IFMXDialogServiceASync; begin if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceAsync, IInterface (ASyncService)) then begin ASyncService.ShowMessageAsync ( ( Sender as TListBoxItem ).Text ); end; Memo1.Lines.Clear; Memo1.Lines.Add( 'ShowMessageAsync Displayed' ); end; procedure TForm1.ListBoxItem2Click(Sender: TObject); var SyncService : IFMXDialogServiceSync; begin if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceAsync, IInterface (SyncService)) then begin SyncService.ShowMessageSync ( ( Sender as TListBoxItem ).Text ); end; Memo1.Lines.Clear; Memo1.Lines.Add( 'ShowMessageSync Displayed' ); end; //************************************************************************************************** procedure TForm1.ListBoxItem3Click(Sender: TObject); var ASyncService : IFMXDialogServiceASync; caption, inData : array[0..1] of string; begin caption[0] := 'ID :'; caption[1] := #1 + 'Pass :'; // #1 앞에 붙이면 마스킹 기능 inData[0] := 'admin'; // 초기값 inData[1] := '1234'; if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceAsync, IInterface (ASyncService)) then begin ASyncService.InputQueryAsync( 'Input String', caption, inData, procedure (const AResult : TModalResult; const AValues : array of string) begin case AResult of mrOk: ( Sender as TListBoxItem ).Text := AValues[0] + '/' + AValues[1]; end; end ); end; Memo1.Lines.Clear; Memo1.Lines.Add( 'InputQueryAsync Displayed' ); end; procedure TForm1.ListBoxItem4Click(Sender: TObject); var SyncService : IFMXDialogServiceSync; caption, inData : array[0..1] of string; begin caption[0] := 'ID :'; caption[1] := #1 + 'Pass :'; // #1 앞에 붙이면 마스킹 기능 inData[0] := 'admin'; // 초기값 inData[1] := '1234'; if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceSync, IInterface(SyncService)) then begin if SyncService.InputQuerySync( 'Input String', caption, inData ) then ( Sender as TListBoxItem ).Text := inData[0] + '/' + inData[1]; end; Memo1.Lines.Clear; Memo1.Lines.Add( 'InputQuerySync Displayed' ); end; //************************************************************************************************** procedure TForm1.ListBoxItem5Click(Sender: TObject); var ASyncService : IFMXDialogServiceASync; begin if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceAsync, IInterface(ASyncService)) then begin ASyncService.MessageDialogAsync( 'Question ?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo, 0, procedure(const AResult: TModalResult) begin case AResult of mrYES : ( Sender as TListBoxItem ).Text := 'YES'; end; end); end; Memo1.Lines.Clear; Memo1.Lines.Add( 'MessageDialogAsync Displayed' ); end; procedure TForm1.ListBoxItem6Click(Sender: TObject); var SyncService : IFMXDialogServiceSync; rValue, i : integer; begin if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceSync, IInterface(SyncService)) then begin rValue := SyncService.MessageDialogSync( 'Question ?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo, 0 ); ( Sender as TListBoxItem ).Text := rValue.ToString; end; Memo1.Lines.Clear; Memo1.Lines.Add( 'MessageDialogSync Displayed' ); end; end.
-
-
Pax Beach отреагировална Rusland в Исключить устройства с Intel Atom как не поддерживаемые
Взял код вот отсюда:
procedure TForm10.Button2Click(Sender: TObject); begin Memo1.Lines.Add(Format('%s:%s', ['BOARD', JStringToString(TJBuild.JavaClass.BOARD)])); Memo1.Lines.Add(Format('%s:%s', ['BOOTLOADER', JStringToString(TJBuild.JavaClass.BOOTLOADER)])); Memo1.Lines.Add(Format('%s:%s', ['BRAND', JStringToString(TJBuild.JavaClass.BRAND)])); Memo1.Lines.Add(Format('%s:%s', ['CPU_ABI', JStringToString(TJBuild.JavaClass.CPU_ABI)])); Memo1.Lines.Add(Format('%s:%s', ['CPU_ABI2', JStringToString(TJBuild.JavaClass.CPU_ABI2)])); Memo1.Lines.Add(Format('%s:%s', ['DEVICE', JStringToString(TJBuild.JavaClass.DEVICE)])); Memo1.Lines.Add(Format('%s:%s', ['DISPLAYドID', JStringToString(TJBuild.JavaClass.DISPLAY)])); Memo1.Lines.Add(Format('%s:%s', ['FINGERPRINT', JStringToString(TJBuild.JavaClass.FINGERPRINT)])); Memo1.Lines.Add(Format('%s:%s', ['HARDWARE', JStringToString(TJBuild.JavaClass.HARDWARE)])); Memo1.Lines.Add(Format('%s:%s', ['HOST', JStringToString(TJBuild.JavaClass.HOST)])); Memo1.Lines.Add(Format('%s:%s', ['ID', JStringToString(TJBuild.JavaClass.ID)])); Memo1.Lines.Add(Format('%s:%s', ['MANUFACTURER', JStringToString(TJBuild.JavaClass.MANUFACTURER)])); Memo1.Lines.Add(Format('%s:%s', ['MODEL', JStringToString(TJBuild.JavaClass.MODEL)])); Memo1.Lines.Add(Format('%s:%s', ['PRODUCT', JStringToString(TJBuild.JavaClass.PRODUCT)])); Memo1.Lines.Add(Format('%s:%s', ['RADIO', JStringToString(TJBuild.JavaClass.RADIO)])); Memo1.Lines.Add(Format('%s:%s', ['TAGS', JStringToString(TJBuild.JavaClass.TAGS)])); Memo1.Lines.Add(Format('%s:%d', ['TIME', TJBuild.JavaClass.TIME])); // Memo1.Lines.Add(Format('%s:%s', ['TYPE', // JStringToString(TJBuild.JavaClass.&TYPE)])); Memo1.Lines.Add(Format('%s:%s', ['UNKNOWN', JStringToString(TJBuild.JavaClass.UNKNOWN)])); Memo1.Lines.Add(Format('%s:%s', ['USER', JStringToString(TJBuild.JavaClass.USER)])); Memo1.Lines.Add(Format('%s:%s', ['CODENAME', JStringToString(TJBuild_VERSION.JavaClass.CODENAME)])); Memo1.Lines.Add(Format('%s:%s', ['INCREMENTAL', JStringToString(TJBuild_VERSION.JavaClass.INCREMENTAL)])); Memo1.Lines.Add(Format('%s:%s', ['RELEASE', JStringToString(TJBuild_VERSION.JavaClass.RELEASE)])); Memo1.Lines.Add(Format('%s:%d', ['SDK_INT', TJBuild_VERSION.JavaClass.SDK_INT])); end; Единственное упоминание Intel в Fingerprint... ну хоть что-то
-
Pax Beach получил реакцию от Rusland в Исключить устройства с Intel Atom как не поддерживаемые
FMX Express же выкладывали все обертки.
-
Pax Beach получил реакцию от Равиль Зарипов (ZuBy) в Исключить устройства с Intel Atom как не поддерживаемые
Не смешно даже.
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Исключить устройства с Intel Atom как не поддерживаемые
я так понимаю это MIPS архитектура
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Исключить устройства с Intel Atom как не поддерживаемые
у меня вот так
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в Исключить устройства с Intel Atom как не поддерживаемые
кажется это не прокатит, т.к. запускается в эмуляторе (JVM Dalvik или ART), поэтому архитектура будет ARM
я пытался через java пробиться к процессору, но всегда получал ARM
-
Pax Beach отреагировална Rusland в Как нормально установить Berlin?
Подозреваю, что антивирус тоже лучше выключить - у меня DrWeb сильно напрягался во время установки.
-
Pax Beach отреагировална krapotkin в Как нормально установить Berlin?
уже более 10 лет я не ставлю крупные программы, особенно делфи и SDK по путям производителей
началось это тогда, когда выяснилось, что имена файлов длиннее 255 и среда просто не справляется с ними. а если там кириллица, то шеф, усё пропало....
лучше ставить в корень. SDK ставить отдельно. тоже в корень. а потом просто показать делфи, где они лежат...
-
Pax Beach отреагировална krapotkin в Как нормально установить Berlin?
у них новый директор первым делом взялся за новый инсталлер, когда в тихом ужасе увидел получасовую установку
но в берлине заменить полностью уже не могли.
они сначала распаковывают в temp все, а потом ставят
поэтому 35 вроде гиг именно на C надо хоть ты тресни
я мучался переносил на другой диск профиль пользователя через симлинки, пока не наскреб нужное кол-во
а дома вообще плюнул и купил SSD 500 г
-
Pax Beach отреагировална Евгений Корепов в NetHTTPClient и личные сообщения на сайте forum.ru-board.com на C++Builder 10.1
Сейчас посмотрю исходники. Минутку...
Да, в Update1 System.Net.HttpClient.pas исправлен :-)
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в NetHTTPClient и личные сообщения на сайте forum.ru-board.com на C++Builder 10.1
попробуйте включить AllowCoockie
-
Pax Beach отреагировална Равиль Зарипов (ZuBy) в NetHTTPClient и личные сообщения на сайте forum.ru-board.com на C++Builder 10.1
DataList->Add("action=dologin&inmembername=USER&inpassword=PASSWORD=http%3A%2F%2Fforum.ru-board.com%2F"); явно ошибка в параметрах
action=dologin
inmembername=USER
inpassword=PASSWORD
??????=http%3A%2F%2Fforum.ru-board.com%2F
-
Pax Beach отреагировална sargon в Анимация при переходе между формами
Добрый день уважаемое сообщество. Возможно ли, и если возможно, то как, сделать что-то наподобие этого http://developer.alexanderklimov.ru/android/animation/overridependingtransition.php. В Android есть стандартная анимация при переходе между окнами в приложениях, мне было бы достаточно и такой, не знаю только как ее прикрутить, в какую сторону рыть - ничего не нагуглил, знаю про TFloatAnimation но может быть есть какой-нибудь нативный способ для этого в FMX. Заранее благодарю за помощь.