AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2022, 16:21   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Медленная работа StringEdit
Привет всем.

Недавно обнаружил что StringEdit - очень медленный контрол.
Пример
Есть табличка лог и форма с закладками
На 2-й закладке EditControl по memo полю в котором лежит текст примерно на 11 мегабайт. При попытке переключиться на 2-ю закладку все виснет. про загружен на 100%.
Пробовал экспериментировать подсовывая тексты разной длины
Число символов 5000. 46 миллисекунд на отображение.
Число символов 32 тысячи. 343 миллисекунд на отображение.
Число символов 256 тысяч. 5 672 миллисекунд на отображение.
Число символов 512 тысяч. 9 781 миллисекунд на отображение.
Число символов 1024 тысяч. 38 673 миллисекунд на отображение.

Можно ли как-то ускорить ?

Если текст выгрузить джобом в текстовый файл и открыть NotePad-ом то 11 мегабайт отображаются быстро.
Старый 05.12.2022, 18:43   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Напрашивающееся решение

Отображать в контроле первые XXX символов, а если надо все, то по отдельной кнопке. Или в новую форму или подгрузить в это же окно.

Кстати, можно по кнопке в блокноте открыть

Можно попробовать использовать Reach Text Box или HTML, но не уверен, что это будет быстрее. Не работал с такими объемными текстами...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 05.12.2022, 18:56   #3  
Pandasama is offline
Pandasama
Участник
 
457 / 137 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
с одной стороны, даже завидно становится таким неординарным задачам, в которых в StringEdit отображается мемо на 11 мегабайт
а с другой, создается впечатление, что вы Аксапту используете для того, для чего она не очень предназначена
Старый 06.12.2022, 09:53   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Да это обычный лог.
Но в него часто смотрят и при этом на некоторых записях клиент зависал.
Старый 06.12.2022, 09:54   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Напрашивающееся решение

Отображать в контроле первые XXX символов, а если надо все, то по отдельной кнопке. Или в новую форму или подгрузить в это же окно.

Кстати, можно по кнопке в блокноте открыть
Да, так и сделали. Если текст длинный, то контрол скрываем, но по кнопке открываем блокнот или по другой кнопке копируем в буфер обмена.
Старый 06.12.2022, 10:03   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
Да это обычный лог.
Но в него часто смотрят и при этом на некоторых записях клиент зависал.
А хранить лог в виде таблицы (одна строка лога - одна запись таблицы) и отображать эту таблицу в Grid?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Pandasama (2).
Старый 06.12.2022, 10:13   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
А хранить лог в виде таблицы (одна строка лога - одна запись таблицы) и отображать эту таблицу в Grid?
Не понял.
Там обычная табличка.
Есть 2 поля
Parameters str 1000
FullParameters Memo

Оба содержат одно и то же.
На гриде отображается Parameters (значение может быть усеченным из-за ограниченной длины поля в БД)
На 2-й закладке отображается полный текст FullParameters

Соответственно, все работает но для некоторых записей при переключении на 2-ю закладку все виснет.
Старый 06.12.2022, 13:09   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
FullParameters Memo

Содержимое этого поля - это строки. Вот и хранить каждую строку текста в отдельной записи. Вряд ли одна строка будет длиннее 1000 символов.

Порезать текст по символам перевода строки и возврата каретки 13+10. Каждый кусок - отдельная запись таблицы
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 06.12.2022, 16:35   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
FullParameters Memo

Содержимое этого поля - это строки. Вот и хранить каждую строку текста в отдельной записи. Вряд ли одна строка будет длиннее 1000 символов.

Порезать текст по символам перевода строки и возврата каретки 13+10. Каждый кусок - отдельная запись таблицы
Там один большой json, бОльшая часть которого - один большой Base64.
Старый 06.12.2022, 16:47   #10  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Logger Посмотреть сообщение
Там один большой json, бОльшая часть которого - один большой Base64.
А зачем пользователю видеть такой текст на форме? Что он сможет вычитать в json, а тем более в base64. Возможно такой текст будет копироваться куда-то еще, но вряд ли читаться прямо на форме
За это сообщение автора поблагодарили: Pandasama (2).
Старый 06.12.2022, 17:20   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
А зачем пользователю видеть такой текст на форме? Что он сможет вычитать в json, а тем более в base64. Возможно такой текст будет копироваться куда-то еще, но вряд ли читаться прямо на форме
Обычный пользователь туда не смотрит.
С формой работает аналитик или программист.
Там обобщенный лог.
99% записей не имеют там никаких base64
Старый 06.12.2022, 17:36   #12  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
А чем вариант открывать по кнопке блокнот не устраивает? Ускорить мне кажется не получится. Редакторы, которые работают быстро, скорее всего, текст динамически подгружают, а stringEdit грузит сразу все. Разве что какой-нибудь ActiveX прикрутить
Старый 06.12.2022, 18:21   #13  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
А чем вариант открывать по кнопке блокнот не устраивает? Ускорить мне кажется не получится. Редакторы, которые работают быстро, скорее всего, текст динамически подгружают, а stringEdit грузит сразу все. Разве что какой-нибудь ActiveX прикрутить
Так так и сделали.
stringEdit похоже пытается переносить по строкам и делает это медленно в отличие от того же notePad
Если в свойствах контрола включить multiline - да, то зависает сразу без переключения на закладку с контролом, сразу после того как на строке встанешь.
Старый 06.12.2022, 19:37   #14  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
Там один большой json, бОльшая часть которого - один большой Base64.
Так, может, попробовать для его отображения объект "HTML Document"? Ну, то, что в форме \Forms\tutorial_Form_Controls на последней закладке.

Или перед отображением вырезать Base64, если его можно по тегам определить. Хотя, вырезание из 11 МБ тоже долго будет выполняться
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Logger (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Запись в таблицу значения из StringEdit Metrofun DAX: Программирование 1 27.04.2020 18:51
Работа с со Stringedit r2d2 DAX: Программирование 2 29.12.2013 14:02
прокрутка в multiline StringEdit GSN DAX: Программирование 1 20.06.2008 16:32
Ruslan Goncharov: Dynamic enabled() property for StringEdit and arrows Blog bot DAX Blogs 0 18.04.2008 20:05
ComWordDocument_RU - медленная работа petergunn DAX: Программирование 2 06.10.2005 09:25

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:23.