![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстро грузить текстовые файлы порядка 10 метров [D7, WinXP]
Димон © (2004-07-22 15:31:00)Как можно очень быстро (или хитро :)) загружать большие текстовые файлы (порядка 10 метров) в мемо или ричедит. Плюс к этому должен быть прогресс бар, отображающий процесс загрузки.
Быстро это примерно за 5-6 сек.
Хитро это как ВордПед, загрузил часть файла, а потом тихонько догружает остальное, а в это время можно прокручивать текст.
Так как это сделать? :)
ПсихЪ_дубль (2004-07-26 16:52:00) [1]Удалено модератором
Примечание: Нет это не офтопик, а грубая персональная нападка
Fay (2004-07-26 14:56:00) [2]К примеру "Borland Delphi6 руководство разработчика" от Стива Тейксейра и Ксавье Пачеко. На сайте АП есть типа такая же, но ".. Delphi 5".
ЮрийК (2004-07-26 14:50:00) [3]"Книг - море. Не все из них "профпригодные"."
Именно, если рекомендуете поискать инфу в книгах, то дайте названия правильных книг на ваш взгляд, пригодных для решения данной проблемы. Читайте книги вообще - совет слишком общий.
Fay (2004-07-26 09:29:00) [4]2Polevi © (26.07.04 09:25) [36]
На самом деле пора просто разместить на сайте нормальную статью о потоках. Книг - море. Не все из них "профпригодные". А после прочтения человеку иногда надо только глянуть "как ходят, как сдают", и всё встанет на свои места.
Добрее надо быть, короче.
Polevi (2004-07-26 09:25:00) [5]нет, заглянуть не получится если хотите с потоками работать
нужно почитать и понять
а объяснять в каких случаях нужна синхронизация с основным потоком и как не надо использовать Sinchonize мне уже надоело
извините
ЮрийК (2004-07-25 22:18:00) [6]"ЮрийК © (25.07.04 12:01) [23]
"Polevi © (25.07.04 11:23) [21]
надо книжки почитать"
Кому и какие?
Polevi © (25.07.04 12:39) [24]
> [23] ЮрийК © (25.07.04 12:01)
не выеживайтесь юноша, книжки почитать никому не вредно, а вам и подавно, судя по вашим постам"
Я не и выёживался.
Ответ "надо книжки почитать" на просьбу привести пример можно понять и так: чтобы привести пример, мне нужно в книжку заглянуть.
ЮрийК (2004-07-25 22:10:00) [7]Итого:
SetLength(s, 10MB);
FileStream.ReadBuf(Pointer(s)^,Length(s));
RichEdit.Text := s;
Так?
А сразу нельзя?
SetLength(RichEdit.Text, 10MB);
FileStream.ReadBuf(Pointer(RichEdit.Text)^,Length(s));
Anatoly Podgoretsky (2004-07-25 21:49:00) [8]Ну загружай с помощью ReadLn
Димон (2004-07-25 21:17:00) [9]>Сеня (25.07.04 14:35) [29]
К сведению:
за 2-3 сек. 4 метра грузятся с помощью RichEdit.Lines.LoadFromFile(); :o)
Ладно, черт с ней с быстрой загрузкой, пусть грузится со стандартной скорость, но чтобы отображался процесс загрузки, например с помощью прогрессбара.
Polevi (2004-07-25 16:58:00) [10]> [27] Mim1 © (25.07.04 14:26)
>События таймер выполняются в основоном потоке.
ваша фраза ? если знаете что не всегда в основнои - так и пишите
Mim1 (2004-07-25 14:35:00) [11]
> [28] Паша (25.07.04 14:32)
Вопрос был
> Как можно очень быстро (или хитро :)) загружать большие
> текстовые файлы (порядка 10 метров) в мемо или ричедит.
Про ограниечение уже писали в [8]
Сеня (2004-07-25 14:35:00) [12]Я сказал BlockRead и переменная String в качестве буфера. И не парьтесь. Потом RichEdit.Text = переменной_буферу. Все грузится, сам проверил. 4 мега за 2-3 секунды. Что еще надо?
Паша (2004-07-25 14:32:00) [13]В Memo не влезет больше 32k! О чем вы говорите? Какие 10 метров?!
Mim1 (2004-07-25 14:26:00) [14]
> [26] Polevi © (25.07.04 14:00)
Читал, читаю и буду читать. :)
А что я разве не прав, обьект ttimer выполняется в потоке отличном от основоного?
Ведь таймер это всего лиш оболока для функционала windows способного посылать сообщения wm_timer созданому этим отектом окну.
Соощения выбираются циклом выборки сообщений основного потока и диспетчеризируюются окну получателю.
Теоритически можно создать таймер в любом потоке, но это отнюдь не означает что любой таемервыполняет обработчики своих событий в дополнительном потоке.
А что конкретно вы мне советуете почитать?
И вообще не выеживайтесь, сообщение [25] я писал не вам а в ответ на [23].
PS Может рассходывать сколько угодно желчи в последующих, скорее всего я ее не увижу так как уезжаю вечером на заслуженый отдых.
Polevi (2004-07-25 14:00:00) [15]> [25] Mim1 © (25.07.04 12:50)
и вы тоже почитайте
Mim1 (2004-07-25 12:50:00) [16]
> [22] Димон (25.07.04 11:31)
События таймер выполняются в основоном потоке.
Polevi (2004-07-25 12:39:00) [17]> [23] ЮрийК © (25.07.04 12:01)
не выеживайтесь юноша, книжки почитать никому не вредно, а вам и подавно, судя по вашим постам
ЮрийК (2004-07-25 12:01:00) [18]"Polevi © (25.07.04 11:23) [21]
надо книжки почитать"
Кому и какие?
Димон (2004-07-25 11:31:00) [19]Объясните мне, ламерюге необразованному :), получается, что все что выполняется в
procedure TMyThread.Execute;
begin
...
end;
как бы не тормозит, т.е в отдельном потоке, как если бы я засунул это в таймер. Я правильно понял?
Polevi (2004-07-25 11:23:00) [20]надо книжки почитать