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

Ingalime

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

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

  • Посещение

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

    5

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

  1. Like
    Ingalime отреагировална GASCHE в C наступающим Новым Годом!   
  2. Like
    Ingalime отреагировална Nick Peterson в TMemo для вывода лога тормозит   
    Благодарю! Стало чуть понятнее - если добавлять 1 строку без Memo.BeginUpdate; из-за какого-то другого бага FMX в процедуре TStyledMemo.DoViewportPositionChange  ContentSizeChanged выставлялся в TRUE, даже если фактические размеры не менялись. Из-за этого запускался цикл
    if ContentSizeChanged then begin for I := 0 to FLineObjects.Count - 1 do begin Line := FLineObjects[I]; if Line.Layout <> nil then FLineObjects.UpdateLayoutParams(Line.Layout); Line.InvalidateSize; end; FLineObjects.RenderLayouts; end приводящий к фризам. Если делать Memo.BeginUpdate, этого не происходит; увидеть фризы, о которых я говорю, можно растягивая форму с Memo.Align = Bottom.
    Теперь к вопросу ЦПУ: Ваш пример в работе на 1-ядерной виртуалке

     
    На домашнем компе с GlobalUseDirect2D := false;

    Прикладываю архив с тестовым проектом, кому интересно поиграться :)
    MemoSpeedTest.zip
  3. Like
    Ingalime отреагировална Евгений Корепов в TMemo для вывода лога тормозит   
    Все ваши проблемы решаются добавлением трех строчек в код:
    Перед началом работы, сразу задаем количество строк Memo.Lines.Capacity:=1000000; Мемо сразу зарезервирует в своем TStringList нужный объем. Это позволит сократить накладные расходы на добавление в несколько раз. Перед добавлением строк в Memo обязательно делаем Memo.BeginUpdate; Это отключит перерисовку и другие операции. После добавления строк в Memo обязательно делаем Memo.EndUpdate; Это отрисует все изменения которые мы произвели. Вот итоговый код (в форме еще глобальный счетчик FLinesCounter : Integer;):
    procedure TForm1.FormCreate(Sender: TObject); Var I : Integer; begin Memo.Lines.Capacity:=1000000; Timer.Interval:=10; FLinesCounter:=1; Memo.BeginUpdate; for I := 1 to 10000 do begin Memo.Lines.Add('Это тест ' + FLinesCounter.ToString); Inc(FLinesCounter); end; Memo.EndUpdate; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer.Enabled:=True; end; procedure TForm1.Log(const AMessage : String); const ConsMaxLogSize = 50000; begin Memo.BeginUpdate; // while Memo.Lines.Count > ConsMaxLogSize do // Memo.Lines.Delete(0); Memo.Lines.Add(AMessage); Memo.GoToTextEnd; Memo.EndUpdate; end; procedure TForm1.TimerTimer(Sender: TObject); begin Log('Это тест ' + FLinesCounter.ToString); Inc(FLinesCounter); end; Код добавляет в Мемо 10 тысяч строк за примерно пол секунды. И добавление по таймеру 100 строк в секунду отнимает примерно 0% процессорного времени. Все будет работать без тормозов до разумного предела, при очень больший количествах строк вы столкнетесь с тормозами выделения памяти приложению, тут нужно будет использовать иные механизмы.
     
  4. Like
    Ingalime отреагировална Nick Peterson в TMemo для вывода лога тормозит   
    мой скрин как бы показывает обратное
    два приложения, два одинаковых таймера (100мс в данном случае) на добавление строки. Одна и та же машина (2х ядерная виртуалка).
    1 скрин FMX приложение, второй VCL
    1 потребляет 30-50% CPU второй 6-8%
    Мне нужен след. функционал: текст, являющийся логом и позволяющий промотать хоть немного вверх и скопировать любую.часть себя. Сейчас я ограничил до 300 строк, и с учетом убирания вот этого кода

    фризы ушли. Юзеры конечно недовольны, что для просмотра остального надо жать дополнительные кнопки..
    Позвольте пока считать вопрос открытым, может у кого есть на примере компонент или идеи с функционалом , описанным выше
  5. Like
    Ingalime отреагировална sinuke в Перезапись файлов   
    Разместитеи их в ресурсы проекта. В приложении в какой-нибудь файлик записывайте версию приложения при последнем запуске. При старте приложения проверяй записанную версию и текущую. Если расходятся - проверяйте файлы и обновляете их ресурсов. Имхо
  6. Like
    Ingalime отреагировална Maka в Перезапись файлов   
    Самым простым решением оказалось исправление файла System.StartUpCopy. Там комментариями разработчики явно указали, где код отвечающий за перезапись
  7. Like
    Ingalime отреагировална krapotkin в TMemo для вывода лога тормозит   
    memo на 5000 строк (в VCL программе, т.е. "те парни из MS") пожирает 80% CPU при изменении/добавлении строки. по сути вся программа работает на лог.
    потому что компонент внутри не очень простой, как бы вам ни казалось.
    память перевыделять постоянно для этого монстра надо, и пробегать по строкам, перерассчитывать
    поэтому просто не надо делать лог в мемо
    если вам нужна только функциональность просмотра - написать отображальщик лога из sgtringlist - 10 минут
  8. Like
    Ingalime отреагировална Nick Peterson в Постоянная потеря фокуса под Wine   
    Было похожее, правда только с окном в состоянии fsStayOnTop
    Временно решил так, пока разбираюсь с более серьёзными глюками платформы))
    procedure TPumpHelper.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); begin If Visible and not Active then Show; end;  
  9. Like
    Ingalime отреагировална Tumaso в В 10.2 работает, а в RIO зависает при присвоении медиа-файла   
    TMediaPlayer в android и ios вообще никогда стабильно не работал, и targetSDK тут даже не причем. Он кривой сам по себе изначально, смиритесь.
    Стабильное решение медиаплейера есть в библиотеке alcinoe,  но там поддерживается пока только tokyo, поддержка rio будет позже.
  10. Like
    Ingalime отреагировална Yarpda в В 10.2 работает, а в RIO зависает при присвоении медиа-файла   
    Нет, там права ни при чем. Даже внутренние файлы проекта (прописанные в деплоймент) под Адндроид перестает нормально играть, хотя и открывает. Но любая навигация, остановка и снова воспроизведение выдает невиданные глюки. (звуки задваиваются, видео то стоит то то вдруг начинает идти, потом просто вылетает приложение... Но связь четкая. Ставишь Tarket SDK 23 - нормально, ставишь 24 и выше - привет. ( это я еще на берлине заметил), а в RIO по умолчанию 26, там сразу что-попало...
  11. Like
    Ingalime отреагировална d7d1cd в Ошибка компиляции под Андроид   
    Решение найдено тут.
  12. Like
    Ingalime отреагировална sinuke в Вопросы о огромных списках со сложными элементами и картинками   
    я делал. просто чутка кода нужно, но все делается

    Демо проектик: [Tokyo] LV_URL_Demo.zip
     
    Нет. Не фреймы. ЛистВью - компонент, который рисует себя сам. Он не является контейнером для любых TControl. Поэтому придется самому все рисовать. Лично я "рисую" все кодом. Долговато в реализации, в начале не понятно как делать, но если разобраться, то сразу будет видна разница в скорости работы. ЛистВью очень шустрый компонент. Единственное, я не реализовывал поджинацию, но знаю что ее не так уж и сложно сделать на основе ЛистВью
  13. Like
    Ingalime отреагировална sinuke в TTouchAnimation   
    Не знаю как задать свою картинку, но я менял изображения стандартного стиля и изображение анимации расположено примерно здесь (если не изменяет мне память):
     

  14. Like
    Ingalime отреагировална Александр Жевлаков в Share картинок с targetAPI 24 и выше   
    Не знаю поможет ли это в решении конкретно данной проблемы, но вот на буржуйских просторах нашел общее решение
    перевода программ, написанных в Delphi для Android с поддержкой API 26.
    Который она "искаропки" не поддерживает. ?
    Перевод дельфи приложений на API 26, часть первая
    Перевод дельфи приложений на API 26, продолжение
    Вроде во второй части есть что-то про  = Accessing “external” URIs =.
    Сам еще не пробовал, пока только начал разбираться.
  15. Like
    Ingalime отреагировална AngryOwl в TLang + TEdit.TextPrompt?   
    Добрый!
    Никак. Как и многие другие элементы...
    Решение, до сих пор, - создание своего компонента или модуля для мультиязычных приложений.
    Пример - Мультиязычность в андроиде.
    Код, конечно, давно изменился и оптимизировался не раз. Если будет свободное время - выложу как-нибудь последнюю версию.
  16. Like
    Ingalime отреагировална ra.eremeev в XCode версия   
    Рутрекер не фейковый - это одно из зеркал. У меня работает именно оно. Ваша ссылка, к сожалению, недоступна
    Про связку - поторопился. При сборке arm64 именно на этом SDK и не работает
    Тот самый Linked Error 1.
    Возвращаюсь в начало топика: есть ли решение по скрещиванию SDK старше 11 и Berlin?
  17. Like
    Ingalime отреагировална Brovin Yaroslav в В Android TimeEdit не позволяет устанавливать секунды   
    через всплывающее окно не получится это сделать. Потому что сам андроид не дает такой возможности. А если использовать инплейс редактирование через клавиатуру, то просто задайти кастомный формат времени, в котором добавьте секунды.
  18. Like
    Ingalime отреагировална petyaas в Переместить курсор   
    Тему можно закрыть edit.selstart ответ
  19. Like
    Ingalime отреагировална Barbanel в Как в Delphi XE3 открыть word документ ?   
    if ( OpenDialog1.Execute ) then
      Memo1.lines.LoadFromFile(OpenDialog1.FileName);
    Выражайтесь точнее)
  20. Like
    Ingalime отреагировална Камышев Александр в Использование TClientSocket (old school )   
    Задача поднять старый (теплый ламповый) проект CBuilder 6 под Виндовс в RAD Studio.
    Просто открыл файл проекта, практически все подтянулось с небольшими изменениями в путях include. Кроме TClientSocket, нет такого визуального компонента.
    Компонента нет, но библиотеки в RAD Studio оставили. Подключил #include <ScktComp.hpp>, создал динамически TClientSocket, определил события - проект поднялся малой кровью.
    #include <ScktComp.hpp> TClientSocket *сlient = new TClientSocket(NULL); сlient->OnConnect = ClientConnect; сlient->OnDisconnect = ClientDisconnect; сlient->OnError = ClientError; сlient->OnRead = ClientRead; Аналогично можно пользоваться TServerSocket. Может кому пригодится.
  21. Like
    Ingalime отреагировална Ильдар в Как изменить цвет Label?   
    self.Label1.StyledSettings:= self.Label1.StyledSettings - [TStyledSetting.FontColor];   self.Label1.FontColor:= TAlphaColorrec.Red; Можно просто отключить стилизацию.
  22. Like
    Ingalime отреагировална dnekrasov в Как изменить цвет Label?   
    В FMX у TLabel нет свойства Color. В стандартных стилях у TLabel прозрачный фон, поэтому надо или сделать свой стиль или расположить ваш Label поверх TRectangle, TColorBox ну или что-то похожее.
  23. Like
    Ingalime отреагировална ENERGY в XCode версия   
    А SDK iOS точно 11.x выбрано? А Xcode какой? При билде не возникает ошибка Linker Error 1 или т.п. ?
    Кстати, ссылка у вас на какой то фейковый рутрекер. Вот тот же релиз на оригинальном рутрекере. 
    https://rutracker.org/forum/viewtopic.php?t=5461837
  24. Like
    Ingalime отреагировална ra.eremeev в XCode версия   
    Доброго времени суток!
    Может кому пригодится: конфигурация Berlin отлично работает с MacOS High Sierra + SKD 11
    Виртуалка для Hight Sierra доступна по ссылке
  25. Like
    Ingalime отреагировална x11 в Embarcadero.... Community Edition!   
    Настройка Delphi Community Edition для разработки под Android
     
    https://www.youtube.com/watch?v=_DXtU_8QdVE
     
×
×
  • Создать...