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

Равиль Зарипов (ZuBy)

Модераторы
  • Постов

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

  • Посещение

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

    264

Активность репутации

  1. Like
    Равиль Зарипов (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)));  
  2. Like
    Равиль Зарипов (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;  
  3. Like
    Равиль Зарипов (ZuBy) получил реакцию от Brovin Yaroslav в DeviceInfo - модуль для получения информации о девайсе   
    DeviceInfo - модуль для получения информации о девайсе
    Android || Windows || IOS || MAC OS
      

    Intel планшет

    для Андроида нужно включить разрешения (permission)
    Ссылка на GitHub
  4. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в Session ended   
    ничего страшного в этом нет, главное пакет устанавливается на телефон.
    у меня тоже такое часто, иногда все нормально. причины не ясны
  5. Like
    Равиль Зарипов (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;  
  6. Like
    Равиль Зарипов (ZuBy) отреагировална krapotkin в Get запросы в iOS   
    Пользуйтесь Try - Except
    try   THttpClient.Create.Get(URL); HasConnection := true; except  HasConnection := false; end;
    Ну и вместо компонента TNetHTTPClient я обычно пользуюсь классом THTTPClient в отдельном потоке
     
     
  7. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в файл не находится   
    ему необходимо для IOS
    это не настраивается, т.к. выбора куда ложить свои файлы нету. система не разрешит положить в "левую" папку
  8. Like
    Равиль Зарипов (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;  
  9. Like
    Равиль Зарипов (ZuBy) отреагировална chaplin.u@gmail.com в Многоязыковое приложение   
    как оказалось не все знали что установка   _TCHAR mapping to wchar_t"  должна заменять L. 
    Таки подстановка L решила проблему. вот и верь им после этого.
  10. Like
    Равиль Зарипов (ZuBy) отреагировална AngryOwl в TVideoCaptureDevice, трансляция в потоке   
    На случай "своими руками", я бы порекомендовал Вам копать в сторону WebRTC. Разумеется все зависит от конечных задач, стоящих перед Вашей программой. Судя по всему - это организация потокового видео в режиме реального времени на соответствующие сервисы. А это значит, что:
    - нужно организовать формирование и передачу RTMP (RTSP) потока, с чем в Delphi (если о нем речь идет) есть определенные сложности) (в ситуации с С++ будет немного проще);
    - нужно использовать кодеки (encoder), формат которых поддерживается теми системами, на которых вы хотите видеть воспроизведение потока. Аналогично, как и в вопросе с rtmp-потоком, ситуация с реализацией в Delphi будет сложнее (хотя тоже можно);
    - что касается конвертации кадров из одного формата в другой, то тут все немного проще. В интернете полно алгоритмов описывающих конвертацию битмапа из одного формата в другой. Разумеется - не все так просто. Поскольку необходимо не просто конвертировать кадры, перед тем как передать их энкодеру, но еще и правильно от энкодера получить сам поток и передать его. После энкодера, конечно, идут не просто "кадры". В зависимости от настроек энкодера, сначала идет "ключевой кадр" (и он повторяется с определенной периодичностью), а за ним последовательность "фреймов" - "описывающих" лишь изменения в "ключевом кадре".
    Кратко как-то так...
    В любом случае, я бы порекомендовал Вам сначала пошарить по ресурсу, описывающему работу с потоковым видео. Просто понять как это работает, в принципе. Ну и многое можно там же подчерпнуть. Например, просто как  оптимальнее настроить энкодер для трансляции того или иного видео.
  11. Like
    Равиль Зарипов (ZuBy) получил реакцию от chaplin.u@gmail.com в Многоязыковое приложение   
    нету на андроиде Ansi, на Билдере вроде ставится L
    case 0: return L"Ожидание"; могу ошибаться конечно
  12. Like
    Равиль Зарипов (ZuBy) получил реакцию от Menkos1 в Клавиша Tab   
    Если правильно помню, то ПКМ по форме -> Tab Order
    там можно выставить правильный порядок
  13. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в Многоязыковое приложение   
    нету на андроиде Ansi, на Билдере вроде ставится L
    case 0: return L"Ожидание"; могу ошибаться конечно
  14. Like
    Равиль Зарипов (ZuBy) получил реакцию от Menkos1 в Изменение размеров формы   
    ClientHeight - высота клиентской области, без строки заголовка, бордюров и тд.
  15. Like
    Равиль Зарипов (ZuBy) отреагировална ASovtsov в ListVew как лента твиттера   
    Сделал маленький пример, как использовать  Binding Expressions в Design Time. По прилагаемому снимку экрана легче ориентироваться в выборе компонент.
    Подробнее на эту тему здесь: http://docwiki.embarcadero.com/RADStudio/Berlin/en/Using_Custom_Format_and_Parse_Expressions_in_LiveBindings
     
    pLBExpr1.zip

  16. Like
    Равиль Зарипов (ZuBy) получил реакцию от Rusland в Подключение в VCL компонента FMX   
    Чтобы сделать аналог TLayout в VCL, достаточно унаследоваться от TWinControl
    Я так понимаю, вам нужен прозрачный компонент с возможностью держать в себе компоненты?
     
    Update: добавил компонент
    TLayout Win32.zip
  17. Like
    Равиль Зарипов (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
  18. Like
    Равиль Зарипов (ZuBy) получил реакцию от Kitty в Подключение в VCL компонента FMX   
    на VCL так не принято, хотя если постараться, то думаю можно такое сделать
  19. Like
    Равиль Зарипов (ZuBy) получил реакцию от AngryOwl в Подключение в VCL компонента FMX   
    Чтобы сделать аналог TLayout в VCL, достаточно унаследоваться от TWinControl
    Я так понимаю, вам нужен прозрачный компонент с возможностью держать в себе компоненты?
     
    Update: добавил компонент
    TLayout Win32.zip
  20. Like
    Равиль Зарипов (ZuBy) отреагировална AngryOwl в Подключение в VCL компонента FMX   
    Ой, не надо...
    P.S. Ну а "по факту", где-то что-то было подобное.
  21. Like
    Равиль Зарипов (ZuBy) получил реакцию от Major в Зависает программа, использующая фреймы (Android)   
    Метод Release как раз нужно использовать когда удаляешь "сам из себя"
    На пальцах это выглядит так:
    при вызове метода Release объект помещается в список/очередь запускается таймер с интервалом 10 мсек, в котором идёт очистка этой очереди при очистке используется метод DisposeOf Не нужно везде использовать этот метод, только при крайней необходимости
  22. Like
    Равиль Зарипов (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. Но, видимо, вам нравятся кактусы.
  23. Like
    Равиль Зарипов (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
  24. Like
    Равиль Зарипов (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
  25. Like
    Равиль Зарипов (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; в последнее время пользуюсь такой конструкцией
×
×
  • Создать...