chaplin.u@gmail.com
-
Постов
275 -
Зарегистрирован
-
Посещение
Активность репутации
-
chaplin.u@gmail.com получил реакцию от Rusland в баг в компоненте TBluetoothLE
докопался до истины и она посредине.
стандартно обмен идёт по минимуму - 20 байт
но есть процесс переговоров (NEGOTIATION ) между телефоном и устройством который может привести к увеличению пакета до 525 байт.
апликация должна запросить устройство на увеличение пакета. так вот несмотря на то что в файле этот параметр как видите есть в поставляемой от Абракадабры компоненте нет реализации этого процесса.
как и полностью отсутствует обмен паролем для защиты от постороннего вмешательства. т.е. любой посторонний может получить полный контроль над вашим устройством.
Вывод : компонента поставляется в ознакомительных целях и для создания коммерческих приложений запрещена !
Ну и если кто знает где есть нормальная компонента - просьба сообщить.
-
chaplin.u@gmail.com получил реакцию от Евгений Корепов в баг в компоненте TBluetoothLE
докопался до истины и она посредине.
стандартно обмен идёт по минимуму - 20 байт
но есть процесс переговоров (NEGOTIATION ) между телефоном и устройством который может привести к увеличению пакета до 525 байт.
апликация должна запросить устройство на увеличение пакета. так вот несмотря на то что в файле этот параметр как видите есть в поставляемой от Абракадабры компоненте нет реализации этого процесса.
как и полностью отсутствует обмен паролем для защиты от постороннего вмешательства. т.е. любой посторонний может получить полный контроль над вашим устройством.
Вывод : компонента поставляется в ознакомительных целях и для создания коммерческих приложений запрещена !
Ну и если кто знает где есть нормальная компонента - просьба сообщить.
-
chaplin.u@gmail.com получил реакцию от Pax Beach в баг в компоненте TBluetoothLE
докопался до истины и она посредине.
стандартно обмен идёт по минимуму - 20 байт
но есть процесс переговоров (NEGOTIATION ) между телефоном и устройством который может привести к увеличению пакета до 525 байт.
апликация должна запросить устройство на увеличение пакета. так вот несмотря на то что в файле этот параметр как видите есть в поставляемой от Абракадабры компоненте нет реализации этого процесса.
как и полностью отсутствует обмен паролем для защиты от постороннего вмешательства. т.е. любой посторонний может получить полный контроль над вашим устройством.
Вывод : компонента поставляется в ознакомительных целях и для создания коммерческих приложений запрещена !
Ну и если кто знает где есть нормальная компонента - просьба сообщить.
-
chaplin.u@gmail.com отреагировална Равиль Зарипов (ZuBy) в Как открыть файл по ссылке ?
то что вы описали, это открытие ссылки.
код который я привел выполнит открытие ссылки, а дальше сработает ассоциация и запустится "стандартное" приложение
если вы хотите открыть у себя в приложении, то скачивайте файл и делайте с ним что хотите
-
chaplin.u@gmail.com отреагировална Кривяков Виталий в Как открыть PDF в стандартном приложении просмотра PDF файлов?
function GetDefaultFilePath(const FileName: string): string; begin {$IFDEF Android} Result := TPath.Combine(TPath.GetSharedDocumentsPath, FileName); {$ENDIF} {$IFDEF IOS} Result := TPath.Combine(TPath.GetDocumentsPath, FileName); {$ENDIF} {$IFDEF MSWindows} Result := TPath.Combine(TPath.GetDocumentsPath, FileName); {$ENDIF} ForceDirectories(ExtractFilePath(Result)); end; procedure TForm.ShowPDF; var {$IFDEF Android} Intent: JIntent; {$ENDIF} FilePath, tmpStr: string; begin FilePath := GetDefaultFilePath(Filename); {$IFDEF Android } try Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(StrToJURI('file:' + FilePath), StringToJString('application/pdf')); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); SharedActivity.startActivity(Intent); except on E: Exception do ShowToast(E.Message); end; {$ENDIF} {$IFDEF IOS} wbViewPDF.Visible := True; wbViewPDF.URL := 'file:/' + FilePath; {$ENDIF} end; Приблизительно так...
-
chaplin.u@gmail.com отреагировална Равиль Зарипов (ZuBy) в как держать компоненты вместе
Top+Top
<TListBox>.Align := TAlignLayout.Top; <TPanel>.Align := TAlignLayout.Top; Top+Client
<TListBox>.Align := TAlignLayout.Top; <TPanel>.Align := TAlignLayout.Client; Client+Bottom
<TListBox>.Align := TAlignLayout.Client; <TPanel>.Align := TAlignLayout.Bottom;
-
chaplin.u@gmail.com отреагировална kami в как держать компоненты вместе
Выравнивание одного - Client. Выравнивание второго - Top или Bottom. Элементарно, Ватсон!
Примеры:
1. ListBox - Top , Panel - Client
2. ListBox - Client, Panel - Bottom.
Всё зависит от того, кто должен менять размеры, а кто оставаться недвижим.
-
chaplin.u@gmail.com получил реакцию от Евгений Корепов в Почему в Берлине нет кнопки Apply
Почему в Берлине нет кнопки Apply как это было на прошлых версиях ? вот так
-
chaplin.u@gmail.com отреагировална enatechno в Как сохранить пропорции у ScaledLayout ?
Если хотите пропорционального изменять размеры ScaledLayout:
1). Используйте для него выравнивание по одному краю (например: Top, Left ... );
2). При запуске программы фиксируйте TScaledLayout.OriginalWidth и TScaledLayout.OriginalHeight;
3). Т.к. в зависимости от выравнивания у Вас будет изменятся один из параметров (при выравнивании Top - Width, при Left - Height), то будьте готовы в OnResize изменять пропорционально второй параметр. Например так:
aRatio := ScaledLayout1.Width / ScaledLayout1.OriginalWidth; ScaledLayout1.Height := ScaledLayout1.OriginalHeight * aRatio;
tstScaledLayout.zip
-
chaplin.u@gmail.com получил реакцию от Kitty в Как реализовать такое-же окно как на картинке ?
Нашёл пример и сделал это окошко но только взгляните сколько кода нужно впихнуть вместо ваших 10 строк :
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mobile_Tutorial:_Using_dbExpress_and_SQLite_(iOS_and_Android)
-
chaplin.u@gmail.com получил реакцию от Kitty в Выход Update для RAD Studio 10 Berlin
кстати пометка : Update 1 requires a full uninstall and reinstall.
-
chaplin.u@gmail.com получил реакцию от Равиль Зарипов (ZuBy) в Выход Update для RAD Studio 10 Berlin
кстати пометка : Update 1 requires a full uninstall and reinstall.
-
chaplin.u@gmail.com получил реакцию от Rusland в баг в компоненте TBluetoothLE
Вот в файле Winapi.BluetoothLE.pas написано что минимум 23 а максимум 525 байт
{ MTU }
BTHLEENUM_ATT_MTU_MIN = 23;
{$EXTERNALSYM BTHLEENUM_ATT_MTU_MIN}
BTHLEENUM_ATT_MTU_MAX = $FFFF;
{$EXTERNALSYM BTHLEENUM_ATT_MTU_MAX}
BTHLEENUM_ATT_MTU_DEFAULT = BTHLEENUM_ATT_MTU_MIN;
{$EXTERNALSYM BTHLEENUM_ATT_MTU_DEFAULT}
BTHLEENUM_ATT_MTU_INITIAL_NEGOTIATION = 525;
{$EXTERNALSYM BTHLEENUM_ATT_MTU_INITIAL_NEGOTIATION
кто-то знает где копать ?
-
chaplin.u@gmail.com отреагировална AngryOwl в Как запустить приложение на планшете с Windows10 ?
Установить PAServer на удаленной машине (ПК/планшет) и все.
Как сделать тут и тут. И вообще много в сети примеров, в том числе и на этом форуме где-то было.
-
chaplin.u@gmail.com получил реакцию от Равиль Зарипов (ZuBy) в строка из массива шестнадцатиричных чисел
кстати я и не говорил что я профессионал. я самоделкин. делаю проект в одиночку:
- электрическую схему прибора в Оркаде
- развожу печатную плату в Аллегро
- делаю программу ( embeded real time) для контроллера от Cypress
- мульти-платформенную апликацию для смартфонов на Android / iOS
извините господа но у меня нет времени на диспуты. вот закончу проект и тогда свами подиспутирую.
И лет мне уже 57... Я программы писал ещё на перфокартах на Фортране.
-
chaplin.u@gmail.com отреагировална Камышев Александр в строка из массива шестнадцатиричных чисел
вот все злые, пристали к программеру, наговорили всякого,
человек хочет тупо массив данных в HEX просматривать, что от него уходит...
IntToHex используй, вот код на си:
AnsiString s; for ( unsigned int i = 0; i < size; i++ ) s += IntToHex( ( (unsigned __int8)(data[i] ), 2 ) + " "; на выходе строка HEXов через пробел
-
chaplin.u@gmail.com получил реакцию от Kitty в Можно ли собрать APK без смартфона ?
Вот окончательный вариант :
Project->Make <Имя проекта>
Deploy lib<Имя проекта> .so
Далее взять apk файл из .\$(Platform)\$(Config)\<Имя проекта>\bin
Всем Спасибо !
-
chaplin.u@gmail.com получил реакцию от Rusland в Вопрос Администратору! Какие планы на Россию?
Да печально что фирма в прошлом году обьявила про движение в сторону мобильных платформ а в этом свернула на Линукс сервера. Так и не сделали компилятор под Х86
-
chaplin.u@gmail.com получил реакцию от Sergionn в Вопрос Администратору! Какие планы на Россию?
Да печально что фирма в прошлом году обьявила про движение в сторону мобильных платформ а в этом свернула на Линукс сервера. Так и не сделали компилятор под Х86
-
chaplin.u@gmail.com получил реакцию от Kitty в Вопрос Администратору! Какие планы на Россию?
Да печально что фирма в прошлом году обьявила про движение в сторону мобильных платформ а в этом свернула на Линукс сервера. Так и не сделали компилятор под Х86
-
chaplin.u@gmail.com отреагировална enatechno в как сделать автоскролинг чтобы активный итем был виден ?
Активный итем или последний добавленный? На дельфи "скроллировать" можно с помощью TListbox.ScrollToItem(Item). Если последний добавленный, то сначала добавляем, а потом скролл к нему. Например вот так:
Listbox1.BeginUpdate; try aListBoxItem := TListBoxItem.Create(Listbox1); aListBoxItem.Text := 'text ' + random(500).ToString; Listbox1.AddObject(aListBoxItem); finally Listbox1.EndUpdate; end; Listbox1.ScrollToItem(aListBoxItem);
-
chaplin.u@gmail.com отреагировална Евгений Корепов в Как управлять ProgressBar с помощью Timer-а ?
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls; type TForm1 = class(TForm) ProgressBar: TProgressBar; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } Timer : TTimer; procedure TimerTimer(Sender: TObject); end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); begin ProgressBar.Min:=0; ProgressBar.Max:=100; Timer:=TTimer.Create(Self); Timer.Interval:=10; // милисекунд, 1000 = 1 секунде Timer.OnTimer:=TimerTimer; Timer.Enabled:=True; end; procedure TForm1.TimerTimer(Sender: TObject); begin ProgressBar.Value:=ProgressBar.Value+0.1; if ProgressBar.Value>=ProgressBar.Max then Timer.Enabled:=False; end; end.