-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
264
Активность репутации
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в DeviceInfo - модуль для получения информации о девайсе
ну если вам для андроида, то есть один вариант
ANDROID_ID
// uses Androidapi.Helpers, Androidapi.JNI.Provider; // permission read_phone_state ShowMessage(JStringToString(TJSettings_Secure.JavaClass.getString(TAndroidHelper.ContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID)));
-
Равиль Зарипов (ZuBy) получил реакцию от Pax Beach в Get запросы в iOS
проверка интернета
function CheckInet: boolean; var aResp: IHTTPResponse; aHTTP: THTTPClient; begin Result := false; aHTTP := THTTPClient.Create; try try aResp := aHTTP.Head('http://google.com'); Result := aResp.StatusCode < 400; except Result := false; end; finally FreeAndNil(aHTTP); end; end; get запрос
function HTTPGet(const aURL: string): string; var aHTTP: THTTPClient; aResp: TStringStream; begin Result := 'Error'; aResp := TStringStream.Create('', TEncoding.UTF8); aHTTP := THTTPClient.Create; try try aHTTP.Get(aURL, aResp); Result := aResp.DataString; except Result := 'Error'; end; finally FreeAndNil(aHTTP); FreeAndNil(aResp); end; end;
-
Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в DeviceInfo - модуль для получения информации о девайсе
DeviceInfo - модуль для получения информации о девайсе
Android || Windows || IOS || MAC OS
Intel планшет
для Андроида нужно включить разрешения (permission)
Ссылка на GitHub
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Session ended
ничего страшного в этом нет, главное пакет устанавливается на телефон.
у меня тоже такое часто, иногда все нормально. причины не ясны
-
Равиль Зарипов (ZuBy) получил реакцию от Alex7wrt в Get запросы в iOS
проверка интернета
function CheckInet: boolean; var aResp: IHTTPResponse; aHTTP: THTTPClient; begin Result := false; aHTTP := THTTPClient.Create; try try aResp := aHTTP.Head('http://google.com'); Result := aResp.StatusCode < 400; except Result := false; end; finally FreeAndNil(aHTTP); end; end; get запрос
function HTTPGet(const aURL: string): string; var aHTTP: THTTPClient; aResp: TStringStream; begin Result := 'Error'; aResp := TStringStream.Create('', TEncoding.UTF8); aHTTP := THTTPClient.Create; try try aHTTP.Get(aURL, aResp); Result := aResp.DataString; except Result := 'Error'; end; finally FreeAndNil(aHTTP); FreeAndNil(aResp); end; end;
-
Равиль Зарипов (ZuBy) отреагировална krapotkin в Get запросы в iOS
Пользуйтесь Try - Except
try THttpClient.Create.Get(URL); HasConnection := true; except HasConnection := false; end;
Ну и вместо компонента TNetHTTPClient я обычно пользуюсь классом THTTPClient в отдельном потоке
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в файл не находится
ему необходимо для IOS
это не настраивается, т.к. выбора куда ложить свои файлы нету. система не разрешит положить в "левую" папку
-
Равиль Зарипов (ZuBy) отреагировална HyperZen в InputQuerySync реагирует только на OK
procedure GoToWithInputBox; begin TDialogServiceAsync.InputQuery('Введите номер страницы', ['№ страницы:'], [''], procedure(const AResult: TModalResult; const AValues: array of string) begin case AResult of mrOk: begin if AValues[0] <> '' then begin // делаем что надо с полученным значением по кнопке ОК, введенное значение в AValues[0] end; end; mrCancel: begin Exit; // тут выполняем действия по кнопке Отмена end; end; end ); end;
-
Равиль Зарипов (ZuBy) отреагировална chaplin.u@gmail.com в Многоязыковое приложение
как оказалось не все знали что установка _TCHAR mapping to wchar_t" должна заменять L.
Таки подстановка L решила проблему. вот и верь им после этого.
-
Равиль Зарипов (ZuBy) отреагировална AngryOwl в TVideoCaptureDevice, трансляция в потоке
На случай "своими руками", я бы порекомендовал Вам копать в сторону WebRTC. Разумеется все зависит от конечных задач, стоящих перед Вашей программой. Судя по всему - это организация потокового видео в режиме реального времени на соответствующие сервисы. А это значит, что:
- нужно организовать формирование и передачу RTMP (RTSP) потока, с чем в Delphi (если о нем речь идет) есть определенные сложности) (в ситуации с С++ будет немного проще);
- нужно использовать кодеки (encoder), формат которых поддерживается теми системами, на которых вы хотите видеть воспроизведение потока. Аналогично, как и в вопросе с rtmp-потоком, ситуация с реализацией в Delphi будет сложнее (хотя тоже можно);
- что касается конвертации кадров из одного формата в другой, то тут все немного проще. В интернете полно алгоритмов описывающих конвертацию битмапа из одного формата в другой. Разумеется - не все так просто. Поскольку необходимо не просто конвертировать кадры, перед тем как передать их энкодеру, но еще и правильно от энкодера получить сам поток и передать его. После энкодера, конечно, идут не просто "кадры". В зависимости от настроек энкодера, сначала идет "ключевой кадр" (и он повторяется с определенной периодичностью), а за ним последовательность "фреймов" - "описывающих" лишь изменения в "ключевом кадре".
Кратко как-то так...
В любом случае, я бы порекомендовал Вам сначала пошарить по ресурсу, описывающему работу с потоковым видео. Просто понять как это работает, в принципе. Ну и многое можно там же подчерпнуть. Например, просто как оптимальнее настроить энкодер для трансляции того или иного видео.
-
Равиль Зарипов (ZuBy) получил реакцию от chaplin.u@gmail.com в Многоязыковое приложение
нету на андроиде Ansi, на Билдере вроде ставится L
case 0: return L"Ожидание"; могу ошибаться конечно
-
Равиль Зарипов (ZuBy) получил реакцию от Menkos1 в Клавиша Tab
Если правильно помню, то ПКМ по форме -> Tab Order
там можно выставить правильный порядок
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Многоязыковое приложение
нету на андроиде Ansi, на Билдере вроде ставится L
case 0: return L"Ожидание"; могу ошибаться конечно
-
Равиль Зарипов (ZuBy) получил реакцию от Menkos1 в Изменение размеров формы
ClientHeight - высота клиентской области, без строки заголовка, бордюров и тд.
-
Равиль Зарипов (ZuBy) отреагировална ASovtsov в ListVew как лента твиттера
Сделал маленький пример, как использовать Binding Expressions в Design Time. По прилагаемому снимку экрана легче ориентироваться в выборе компонент.
Подробнее на эту тему здесь: http://docwiki.embarcadero.com/RADStudio/Berlin/en/Using_Custom_Format_and_Parse_Expressions_in_LiveBindings
pLBExpr1.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Подключение в VCL компонента FMX
Чтобы сделать аналог TLayout в VCL, достаточно унаследоваться от TWinControl
Я так понимаю, вам нужен прозрачный компонент с возможностью держать в себе компоненты?
Update: добавил компонент
TLayout Win32.zip
-
Равиль Зарипов (ZuBy) отреагировална sinuke в Учебное приложение "Слесарное дело"
Вышло обновление до версии 1.5.0:
- Исправлены переходы в глоссарии
- Значительно уменьшен размер приложения
- Настройки автоматической проверки обновлений
- [Windows] Переработка приложения для Windows
- [Windows] Добавлены анимации перехода
- [Windows] Минимальные размеры окна ограничены 800 пикселями по ширине и 600 по высоте
- [Android] Системная строка подкрашивается в "фирменный" синий во всех режимах работы приложения
- [Android] Отключена анимация перетаскивания элементов бокового меню
- [Android] Индикатор загрузки
- [Android] Навигационная панель больше не перекрывает интерфейс приложения
- [Android] Исправлена ошибка с сохранением PDF-документа
- [Android] Увеличена скорость вывода информации и тестирования
- [Android] Немного изменен внешний вид экрана вывода результата тестирования
Ссылка на скачивание Android-версии: https://yadi.sk/d/edIZR2VuuRFce
Ссылка на скачивание Windows-версии: https://yadi.sk/d/iIeC0OE8ukMoi
-
Равиль Зарипов (ZuBy) получил реакцию от Kitty в Подключение в VCL компонента FMX
на VCL так не принято, хотя если постараться, то думаю можно такое сделать
-
Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в Подключение в VCL компонента FMX
Чтобы сделать аналог TLayout в VCL, достаточно унаследоваться от TWinControl
Я так понимаю, вам нужен прозрачный компонент с возможностью держать в себе компоненты?
Update: добавил компонент
TLayout Win32.zip
-
Равиль Зарипов (ZuBy) отреагировална AngryOwl в Подключение в VCL компонента FMX
Ой, не надо...
P.S. Ну а "по факту", где-то что-то было подобное.
-
Равиль Зарипов (ZuBy) получил реакцию от Major в Зависает программа, использующая фреймы (Android)
Метод Release как раз нужно использовать когда удаляешь "сам из себя"
На пальцах это выглядит так:
при вызове метода Release объект помещается в список/очередь запускается таймер с интервалом 10 мсек, в котором идёт очистка этой очереди при очистке используется метод DisposeOf Не нужно везде использовать этот метод, только при крайней необходимости
-
Равиль Зарипов (ZuBy) отреагировална kami в Зависает программа, использующая фреймы (Android)
if (TabControl1.ActiveTab = TabItem1) then if (FFrame <> nil) then begin FFrame.Parent := nil; FFrame.DisposeOf; FFrame := nil; end; вместо этого написать:
if (TabControl1.ActiveTab = TabItem1) then if Assigned(FFrame) then begin FFrame.Release; FFrame := nil; end; Этого будет достаточно, чтобы завершились все обработчики событий и в то же время не было новых обращений к этому фрейму.
Кстати, вам уже рекомендовалось использовать именно Release. Но, видимо, вам нравятся кактусы.
-
Равиль Зарипов (ZuBy) отреагировална enatechno в Зависает программа, использующая фреймы (Android)
1 Вариант. Заменой удаления фреймов на скрытие (подправленный проект приложил).
2 Вариант. Расположить панель с кнопкой Back на главной форме, а не дублировать ее в каждом фрейме. (При необходимости саму кнопку Back можно скрывать при возврате на первый таб).
3 Вариант. Использовать отложенное удаление фрейма).
...
и еще много разных вариантов.
Click; FPressed := False; StartTriggerAnimation(Self, 'Pressed') Отладчик выдал ошибку в методе объекта TControl (в Вашем случае это кнопка SpeedButton1 на фрейме). В этом методе в Click вы удаляете Frame, а значит и кнопку на ней. А в строке StartTriggerAnimation(Self, 'Pressed'); вы обращаетесь к этой удаленной кнопке (Self). Здесь и происходит AV.
test2.zip
-
Равиль Зарипов (ZuBy) получил реакцию от enatechno в первый раз публикую под IOS
такс видимо вы не совсем понимаете...
компилировать под эмулятор вы можете без сертификата, НО вы не можете этот файл выложить в App Store для того чтобы выложить в App Store, вам нужно приобрести сертификат разработчика, выполнить то что я описал в первом сообщении настроить проект Project - Options - Version Info CFBundleIdentifier - информация из App IDs CFBundleSignature - информация из App IDs выставить конфигурацию Application Store настроить Project - Options - Provisioning выбрать провижн файл для проекта и сертификат разработчика только после этого у вас на маке в документах появится IPA файл, который можно загрузить в App Store
-
Равиль Зарипов (ZuBy) получил реакцию от Rusland в Странное поведение TThread
procedure LoadBitmapFromURL(const aURL: string; aBitmap: TBitmap; const aSuccess: TThreadProcedure = nil; const aError: TThreadProcedure = nil); var thread: TThread; begin thread := TThread.CreateAnonymousThread( procedure var HTTP: THTTPClient; Result: TMemoryStream; begin Result := TMemoryStream.Create; HTTP := THTTPClient.Create; try try HTTP.Get(aURL, Result); TThread.Synchronize(TThread.CurrentThread, procedure var aSourceBmp: TBitmap; begin aSourceBmp := TBitmap.Create; try aSourceBmp.LoadFromStream(Result); if not aSourceBmp.IsEmpty then begin aBitmap.SetSize(aSourceBmp.Width, aSourceBmp.Height); aBitmap.CopyFromBitmap(aSourceBmp); if Assigned(aSuccess) then aSuccess; end; finally FreeAndNil(aSourceBmp); end; end); except TThread.Synchronize(TThread.CurrentThread, procedure begin if Assigned(aError) then aError; end); end; finally FreeAndNil(Result); FreeAndNil(HTTP); end; end); thread.FreeOnTerminate := true; thread.start; end; в последнее время пользуюсь такой конструкцией