Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Тормозит добавление текста в Memo


AlexeyT ©   (2006-08-29 03:29:00) 

Возникла проблемка: тормозит добавление в Memo текста, когда размер строки превышает где-то мегабайт. Добавляю так:
Memo.Lines.Add(s);
или так
Memo.Lines.Text:= s;
//Length(s)=N*1024*1024

Можно загрузить текст в мемо быстро? Может, предварительно преобразовать строку в StringList и передавать в мемо его? Может, лучше пользоваться не мемо, а, скажем, RichEdit, если у него такой проблемы нет?


DrPass   (2006-08-29 21:45:00) [1]


> тормозит добавление в Memo текста, когда размер строки превышает
> где-то мегабайт

В большинстве версий Windows (по-моему, во всех, кроме ХР/2003) там вообще ограничение на 64К


PSPF2003   (2006-08-29 20:56:00) [2]

Кстати автор этого блокнота добился очень высокой скорости загрузки, поинтересуйся у него может поделится секретом.
http://www.progland.org/


AlexeyT   (2006-08-29 20:51:00) [3]


> Может автор ветки поделиться гениальным замыслом - ЗАЧЕМ
> ЕМУ ЭТО НУЖНО ?


Гениальный замысел прост. Это работа плагина к Тотал Коммандеру "OpenOffice.org Viewer". Желающие могу скачать со страницы
http://wincmd.ru/plugring/OOSimpleViewer.html

Для показа текста там стоит мемо...


> Хотя если честно, БЫСТРО оно работать не будет НИКОГДА!!
> !


Похоже на то.
Наверное, лучше попробовать RichEdit.


Anatoly Podgoretsky   (2006-08-29 15:38:00) [4]

Dmitrij_K   (29.08.06 15:23) [7]
Вот это верный путь к тормозам.
Memo.Text := S;


Dmitrij_K   (2006-08-29 15:23:00) [5]

Еще вариант
Memo1.Lines.BeginUpdate;
Memo1.Lines.Add(String);
Memo1.Lines.Add(String);
Memo1.Lines.Add(String);
...
Memo1.Lines.EndUpdate;


McLaud   (2006-08-29 15:19:00) [6]

Попробуй следующий вариант:
procedureWriteToMemo(Str: string);
var
 Stream: TStream;
begin
Stream := TMemoryStream.Create;
try
 Stream.Read(PChar(Str), Length(Str));
 Memo1.LoadFromStream(Stream);
finally
 Stream.Free;
end
end;

Хотя если честно, БЫСТРО оно работать не будет НИКОГДА!!!


PSPF2003   (2006-08-29 12:48:00) [7]

Это коммерческая тайна… :)


Ганна Юхимівна   (2006-08-29 12:30:00) [8]

Может автор ветки поделиться гениальным замыслом - ЗАЧЕМ ЕМУ ЭТО НУЖНО ?


Desdechado   (2006-08-29 12:28:00) [9]

LoadFromFile ?


Ketmar   (2006-08-29 09:43:00) [10]

> [0] AlexeyT ©   (29.08.06 03:29)
может, лучше не грузить в memo мегабайты? memo -- это "памятка". где это видано -- памятка на мегабайты? %-)
пихай лучше в RichEdit. а ещё лучше -- реши: точно ли нужно там столько текста?


Германн   (2006-08-29 04:05:00) [11]


> AlexeyT ©   (29.08.06 03:29)
>
> Возникла проблемка: тормозит добавление в Memo текста, когда
> размер строки превышает где-то мегабайт. Добавляю так

Да как ты не добавляй! Результат всё-равно тот же. Тормоза!
Вот только сначала подумай - а нужно ли пользователю иметь в Memo столько "мегабайт!", если вышеуказанный может реально видеть только несколько десятков строк!


Наверх

Титульная страница Поиск, карта сайта Написать письмо