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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 00:35   #1
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию Как ускорить загрузку текста в memo?

Если в memo загружать текст из файла размером например 1мб, то на это уходит больше секунды. Можно ли как-нибудь ускорить загрузку и отображение текста в мемо? Или может посоветуете другой компонент более шустрый. Мне только надо, чтобы текст быстрее отображался.
zver777 вне форума Ответить с цитированием
Старый 10.01.2010, 00:58   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Наипростейший вариант - грузите в Мемо первые 20 КБ - они сразу отобразятся.
Остальное грузите в TStrings и потом разом добавите в Мемо (Lines.AddStrings())
mihali4 вне форума Ответить с цитированием
Старый 10.01.2010, 01:09   #3
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию

Спс. Не скажете как можно сделать прогрессбар, чтобы показывалось сколько % текста загрузилось?

Последний раз редактировалось zver777; 10.01.2010 в 01:12.
zver777 вне форума Ответить с цитированием
Старый 10.01.2010, 10:06   #4
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Для ускорения загрузки текста в TMemo необходимо временно отключить отображение изменений компонента. Это делается так:
Код:
  Memo1.Lines.BeginUpdate; // отключаем отображение изменений
  try
    // здесь производим загрузку текста
  finally
    Memo1.Lines.EndUpdate; // включаем отображение
  end;
Для отображения прогресса загрузки текста можно сделать следующее:
Код:
  // допустим, источником текста для загрузки у нас является переменная Text : TStrings, тогда пишем такой код:
var
  I : Integer;
begin
  Memo1.Lines.BeginUpdate; // отключаем отображение изменений
  try
    // в цикле по одной строке добавляем содержимое Text в наш Memo
    for I := 0 to Text.Count - 1 do
    begin
      Memo1.Lines.Add( Text[ I ] );
      ProgressBar1.Position := I * 100 div Text.Count; // пересчитываем прогресс выполнения
      Application.ProgressMessages; // чтобы приложение не зависало, обрабатываем поступившие ему оконные сообщения
    end;
  finally
    Memo1.Lines.EndUpdate; // включаем отображение изменений
  end;
end;
maxionans вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать загрузку части страницы? Virus191288 Общие вопросы Delphi 0 06.07.2009 20:23
Как автоматизировать загрузку текста на сайт allakh HTML и CSS 4 24.06.2009 17:46
Memo - обробка текста sv2311 Помощь студентам 0 25.04.2009 17:42
Как ускорить загрузку списка ListBox из txt-файла? Dux Компоненты Delphi 24 30.10.2008 19:02
Как ускорить загрузку битмапа в tImage Altera Мультимедиа в Delphi 10 24.03.2008 17:39