Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2009, 18:55   #11
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Быстрее работать со Stringlist, а потом результат кинуть в Memo. Проверенно!
И результат при больших объемах в сотни, а то и тысячи больше.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 01.12.2009, 18:56   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

причина в том что мемо обновляет данные а это долго.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2009, 19:18   #13
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
И попробуйте сотворить те же операции над TStringList, мне, например, тоже интересно, будет ли ощутимая разница.
Memo.Lines и StringList.Strings это одно и то же

Цитата:
Быстрее работать со Stringlist, а потом результат кинуть в Memo. Проверенно!
И результат при больших объемах в сотни, а то и тысячи больше.
Об этом речь не идет, читайте внимательно вопрос. Нужно читать из Мемо.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 01.12.2009 в 19:20.
mutabor вне форума Ответить с цитированием
Старый 02.12.2009, 06:52   #14
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Для парсера команд? Я б не стал держать это все в визуализации, а поступал как с канвой - в памяти соорудил тескт и одним большим движением закинул его в MEMO
В том то и дело, он закинут в Мемо, а перед стартом происходит распихивание проги на логические блоки. Для 60 строк программы задержка составляет до 5 секунд. Конечно дело не в Мемо, но хотелось бы рассмотреть все варианты для скорости.

Да. Там тратися много ресурсов на распознование текста.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 08:21   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и ещё занимается отрисовкой..
Вот именно поэтому я в свое время от него отказался.
Загружаю 10Мбайтный файл в TStringList (менее секунды) и уже самостоятельно отрисовываю на канве только те элементы которые должны быть видимы.
Цитата:
будет ли ощутимая разница.
Еще как будет - из-за отрисовки.
Цитата:
Там тратися много ресурсов на распознование текста.
В отдельный поток их пихни. И перед запуском потока из Мемо все в String выдерни.
I'm learning to live...

Последний раз редактировалось Stilet; 02.12.2009 в 08:24.
Stilet вне форума Ответить с цитированием
Старый 02.12.2009, 08:27   #16
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну так, немного подробностей в целях уточнения ситуации. Имеется программа на диске, она загружается в Мемо (пока что туда), а оттуда я забираю ее строки и распихиваю их по блокам (которые тут же и создаются из этой же программы). Процесс получения строк и их распихивания неразрывно связаны в одном цикле. Соответственно чем больше строк, тем дольше процесс.

Пробовал так:
Код:
procedure TValentina.ScanFag           (Source: TStrings; var Errs: TStringList);
var
      Dlina, i, Id: Integer;
      Stroka2, Stroka, Stroka3: String;
      fr: TStringList;
      z: TStrings;
begin


      Errs.Clear;
      fr:=TStringList.Create;
      z:=TStrings.Create;


      z.Text:=Source.Text;
      ...
AbstractError

Пробовал так:
Код:
z.Assign(Source);
Эффект тот же .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 02.12.2009 в 09:15.
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 09:15   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А...м.м.м.
Не луче ли будет читать поблочно файл через ReadFile в некую строку, ее анализировать, распихивать, подчитывать остальное и т.д. до конца?
Или через TFileStream - это в твоем случае помоему лучший вариант.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2009, 09:18   #18
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А...м.м.м.
Не луче ли будет читать поблочно файл через ReadFile в некую строку, ее анализировать, распихивать, подчитывать остальное и т.д. до конца?
Или через TFileStream - это в твоем случае помоему лучший вариант.
Дык это редактор кода (в смысле его жалкое подобие). Может я хочу сначала прогу дописать или править в ней чего? Проблема в том, что заранее неизвестно буду я изменять текст или нет.
Или предлагаете сначала грузить текст в интерпретатор, а оттуда в редактор? Но проблема редактирования все равно остается.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 09:29   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
      z: TStrings;
замени на TStringList
TStrings абстрактный класс
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.12.2009, 09:32   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Помогло в данном случае . Но не помогло в целом. Общее время выполнения функции не изменилось . Заодно и выяснили что время на обновление Мемо не сильно влияет на скорость его работы.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 02.12.2009 в 09:34.
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как быстро перемешать строки? zver777 Общие вопросы Delphi 5 23.08.2009 20:50
Как скопировать текст из мемо одной формы в мемо другой CraZZy RabbIt Общие вопросы Delphi 4 27.02.2009 00:01
Нужно найти папку быстро но как? zotox Помощь студентам 3 21.09.2008 13:35
Как быстро переверннуть(отразить) изображение? Paul Hindenburg Мультимедиа в Delphi 2 10.01.2008 12:51