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

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

Быстро грузить текстовые файлы порядка 10 метров [D7, WinXP]


Страницы:   1 2

Димон ©   (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]

надо книжки почитать


Страницы:   1 2

Наверх

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