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

Виталий Иванов

Пользователи
  • Постов

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

  • Посещение

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

    1

Сообщения, опубликованные Виталий Иванов

  1. Я недавно или давно писал по поводу почему компилятор при разном наборе USES увеличивает время компиляции где-то от 4 до 10 раз. То есть проект может компилируются за 10 секунд, а при небольших манипуляциях с USES станет компилироваться 40 секунд и тд. Очень хорошо заметно на большом проекте у меня с 1 минуты 18 секунд выросло время компила до 1 часа 40 минут.

    Ну хватит предыстории после анализа зависимостей и проверки логов обращения к файловой системе был выяснен интересный факт :)

    У меня в проекте появился UNIT в котором глобальные методы для так сказать конфигурирования внешнего вида компонентов (компоненты тоже самописные) и получилось следующая ситуация:
    1. В UNIT с формой лежит один из визуальных компонентов назовем его TXXX
    2. соответственно в первом (interface секции) USES данного модуля прописывается автоматом модуль из зависимостей компонента
    3. В нижнем (implementation секции) USES расположен UNIT с глобальными методами (назовем его UNIT XXX) для так сказать конфигурирования его (установка бордера и другой дичи)
    4. В этом UNIT XXX (interface секции) USES также прописаны модули этих визуальных компонентов для передачи их в методы как параметры.

    Так вот из-за такой ошибочной связи время компила увеличивается в разы и по анализу project dependency увеличивается с более менее приемлемых (по времени компиляции) 200 до 500.

    Из сходя из этого начала рефакторинг всего кода и переводить компоненты на интерфейсы это сокращает project dependency проекта и неплохо так, перевод одного компонента который используется почти везде в проекте на интерфейс сократил с 200 до 190 и время компила начала сокращаться.

    Сори за много букавок, но может кому будет интересно или кто с толкнулся с такой проблемой.

     

    Так же в решении и анализе взаимосвязей помог эксперт MMX. 

  2. 12 часов назад, Alex7wrt сказал:

    Измените в Deployment RemotePath этого файла на assets\internal\

    Изменил, ситуация таже, при старте зависает на заставке и всё. Как раз в этот момент происходит инициализация BASS но так как он ненаходит свою греб**ую библиотеку то как следствие зависает нахлухо. Может проблема в весрии Android у меня строит 8.0.1

  3. Немогу понять в чём дело добавил в deployment библиотеку вроде все норм и она даже появилась в самой APK но любой пример с использование этой библиотеки тупо виснит при загрузке и всё больше ничего не делает, в логах пусто. Может кто сталкивался с подобным ?

  4. Теперь есть отправная точка :)  как это должно, теперь буду дальше эксперементировать. Нужно сделать теперь ещё сервер для того что бы это работало через NAT и проверить работу на Android

  5. Кому юудет интересно, собрал мини проект по примеру выше. Звук передает как ни странно, и да же приемлемого качества с минимальной задержкой :) спасибо всем кто участувет в этой теме :)

    Сразу извиняюсь за говно код внутри примера, делалось не для эстетики, а показать другим что пример рабочий. :)

    Chat Test_09.06.2018_19-04.rar

  6. 28 минут назад, Martifan сказал:

    Opus это кодек который сжимает буфер и гораздо быстрее работает чат пре плохом интернете

    Это я понял, пример бы тоже был как ни ксате замечательным дополнением темы :)

  7. 9 часов назад, Alex7wrt сказал:

    Советую обратить внимание на библиотеку Bass. Буквально на днях решал похожую задачу под Android (аудио чат в пределах локальной сети) с использованием данной библиотеки. Она же доступна и под iOS.

    Эх примерчик бы того как вы захватываете потом и отправляете его клиентуи как принимаете. Уже нескольок недель гуглю в этом направлении и инфы ноль. А бы ло бы интересно посмотреть как это работает. И да находил инфу что через bass.dll это делают захватывают поток с устройсва (микрофона) в событии захвата потока добавляют заголовк для куска (заголовок кодека) и передают его на клиента, но инфы о том как клиент должен это получить и воспроизвести нету да и вообще не будет ли случаем прерывании мезжу полученными кусками и как с памятью обстоят дела ? я так понимаю что для этого мазахизма выделяется какойто буфер и внесго складывается или дописываетс и наверное передача идет попакетно а не потоком (record package). (и это толкьо малая часть вопросов :()

     

    Вообщем если не сложно можете поделится примером :) а то вопросов больше чем ответов

  8. 17 минут назад, DMS сказал:

    Интересно, а какой компонент вы бы предпочли, если нужно отобразить в приложении что-то вроде стены вКонтакте? ListView, у которых разная высота для айтемов? (в зависимости от объема записи)

    Да, другого более подходящего я не знаю. Ну и с ним легко работать (в плане создания элементов)

  9. Использовал пост http://blog.rzaripov.kz/2017/04/android.html от много уважаемого "Равиля Зарипова"  Но у меня приключилась беда.

    Как видно на скриншоте календаря немного плющит в ширину. Может кто сталкивался с подобным знает как решить ?

     

    Screenshot_20180307-084933.jpg

  10. В 26.02.2018 в 18:04, FREEFAR сказал:

    Я думаю многие когда-то думали , что если разом загрузить все СтоПятьсот записей то все будет хорошо. Увы. 

    Я бы предложил sqllite + listview с динамической подгрузкой при проходе вниз на n-элементов. Поиск организовать выборкой из бд + перерисовка. 

    Такой вариант не подошёл?

    В эту сторону и думал пока не знаю как правильно это организовать 

  11. В 27.02.2018 в 11:00, Евгений Корепов сказал:

    Выполняйте oItem.Adapter.ResetView(oItem) в OnScrollViewChange по мере необходимости. Вначале для всех видимых + еще пару экранов вниз. При прокрутке повторяем.

    Круто работает. Делаю в цикле от первого видимого и до последнего видимого + количество видимого и при быстрой прокрутке начинается факханалия :) невозможно быстро листать.

  12. Есть такая идея. 

    Загружаю в TListView много элементов (от 500 до 1000 может и более) ситуация вынуждает грузить именно столько :( . Так вот когда начинаю создавать их кастомно после создания приходится вызвать oItem.Adapter.ResetView(oItem) (Если этого не делать то не корректно рассчитывается высота и ещё пару багов :) )  что соответсвенно вызывает подвисание интерфейса на Windows все круто это не так в глаза бросается, а на Android печалька форма зависает от 10 до 30 секунд 

    Так вот сам вопрос можно ли как это сделать в отдельном потоке что бы пользователю показывать какой нибудь Waiter. Или может кто как по другому предложит реализовать ? 

    Смотрел в сторону динамической подгрузки итемов но хотелось бы что и его поиск работал :)

  13. Ок. Спасибо всем. ModernLV очень спас компонент во всём на данный момент устраивает, как прозрачный разделитель так и прозрачный фон и прозрачный Item, просто супер.

     

    Есть ещё такой вопрос раз пошло тут про прозрачности. 

    Как можно нарисовать стиль для SearchBox хотелось бы что бы под Windows и Android выглядело одинаково, а не под платформу. 

  14. Вопрос к экспертам :)

    Возникла необходимость и хотел спросить можно ли как-то сделать TlistViewItem  прозрачным, а то получается что сам TlistView может быть прозрачным а его итем нет :(. Это как-то же делаться у TListBoxItem. 

    Заранее огромное спасибо.

  15. В 17.01.2018 в 07:55, krapotkin сказал:

    XSO удобнее в 10 раз по синтаксису и не требует бесконечных приведений типов.

    Может быть. Я обычно чтобы распарсить ответ от сервера, создаю класс и загружаю в него и уже потом работаю с классом (чего не умеет XSuperObject). Ну и как результат я не делаю приведение типов.

  16. Для Syste,.JSON необходимо использовать атрибуты по типу которые расположены в REST.Json.Types

    [JSONNameAttribute('НАЗВАНИЕ')] -Так ваша переменная назвается в JSON 

    [JSONMarshalledAttribute(False)] - Так блокируется выгрузка (нащет загрузки не уверен) тоесть при TJsonObject(oJSON).ToString переменной с таким атрибутом не будет

    TItems = class
      private
        [JSONNameAttribute('ERROR')]
        FERROR: String;
        [JSONNameAttribute('RESULT')]
        FRESULT: String;
        [JSONMarshalledAttribute(False)]
        FOwner : TItems;
      public
        property ERROR  : String read FERROR  write FERROR;
        property RESULT : String read FRESULT write FRESULT;
        property Owner  : TItems read FOwner  write FOwner;
      end;
      
     -------------Результат TJsonObject().ToString---------------------
     {"ERROR": "", "RESULT": ""}
     
     ==================================================================
     
     TItems = class
      private
        FERROR: String;
        FRESULT: String;
        FOwner : TItems;
      public
        property ERROR  : String read FERROR  write FERROR;
        property RESULT : String read FRESULT write FRESULT;
        property Owner  : TItems read FOwner  write FOwner;
      end;
      
     -------------Результат TJsonObject().ToString---------------------
     {"eRROR": "", "rESULT": "", "owner": ""} 

    Если честно то не знаю почему так все используют XSuperObject, встроенного инструмента "System.JSON, REST.Json, REST.Json.Types" с головой хватает на всё 

  17. 15 часов назад, Евгений Корепов сказал:

    Очень странно. Все настройки аналогичны вашим. Но не работает даблклик

    Извините совсем забыл, так же у меня строит вот такое дополнение DDevExtensions к IDE в нем как раз и настраиваться такое поведение, так же есть и super-zoom - который оставляет только поле редакторов как на сткриншоте ниже. 

    2018-01-10.png.7e4f26917446be2df4cec7d5e5d78fd6.png5a55bd03e5d10_2018-01-10(1).thumb.png.e3ebfc6c14882a1ffe980ab8b6d65375.png

  18. 5 часов назад, Евгений Корепов сказал:

    Хм, у меня такой фокус не срабатывает :-( Двойной клик по заголовкам Табов с юнитами? Или я не правильно понял? 

    странно. Подозреваю что дело в настройках редактор. вот мои настройки 

     

    5a54c3958571d_2018-01-09(3).thumb.png.131977e1937e5e989952a1e0d4f25621.png5a54c39902290_2018-01-09(4).thumb.png.122d0de42107611cad667658d2bcc8c2.png5a54c38b9658c_2018-01-09(2).thumb.png.f41db5ab6a9109f0a0a245696ee3b73d.png5a54c38686c6d_2018-01-09(1).thumb.png.b8cebd5e540ac212451548ed00db61d0.png

  19. А двойной клик по закладке с юнитами (я этим часто пользуюсь)? Оно же вроде как прячет все кроме мешюшки и доп кнопок, так сказать почти во весь экран, я думаю если перенастроить панель инструментов то можно добиться максимально пустого пространства

     

    2018-01-09.thumb.png.4e756e61ddfc3a5dad034129979211cf.png

×
×
  • Создать...