Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

Загрузка текстового файла   Найти похожие ветки 

 
SI-riuss ©   (2002-12-29 22:27) [0]

Требуется загрузить текстовый файл в Memo, но файл может быть достаточно большим. Как загрузить лишь часть файла?


 
Юрий Зотов ©   (2002-12-29 22:36) [1]

Читать его построчно (ReadLn) и построчно добавлять (Add).


 
SI-riuss ©   (2002-12-29 22:45) [2]

Можно пример. Например загрузить в Edit 6ю строчку из файла.


 
Anatoly Podgoretsky ©   (2002-12-29 23:12) [3]

В цикле конечно, пока не прочитаешь 6 строку


 
Юрий Зотов ©   (2002-12-29 23:22) [4]

Пример из хелпа:

var
F: TextFile;
S: string;
begin
if OpenDialog1.Execute then
begin
AssignFile(F, OpenDialog1.FileName);
Reset(F);
Readln(F, S);
Edit1.Text := S;
CloseFile(F);
end;
end;

Это чтение 1-й строки. Добавляем цикл от 1 до 6 - и, как сказал Анатолий, получаем 6-ю строку.


 
SI-riuss ©   (2002-12-29 23:35) [5]

Тогда следуют 2 вопроса:
1) Файл состоит из полутора тысячи строк. Сколько займет времени загрузить строку №1500?
2) Будет ли это быстрее, чем загрузить весь файл в, скажем, Memo, а затем прочесть Memo1.Lines[1500]?


 
Anatoly Podgoretsky ©   (2002-12-29 23:44) [6]

Весь файл ты в Memo не загрузишь, надо использовать TRichEdit
Чтение с помощью ReadLn очень быстрое, зависит от скорости дисков и мощности компьютера, от первого особенно. На моем компьютере порядка 100000 строк в секунду, примерно 10 мб.
На современных ееще быстрее.

Если же грузить весь фафл в память (конечно не в TMemo/TRichEdit, а в TStringList) потребует многократного выделения ресурсов и довольно больших объемов

Тебе просто надо проверить оба варианта с измерением времени на них и тебе сразу станет понятно. Вариант со TStringList удобен если надо обрабатывать весь файл и записывать результат обработки обратно.


 
SI-riuss ©   (2002-12-29 23:49) [7]

А кстати, какой лимит емкости для Memo и RichEdit?


 
Юрий Зотов ©   (2002-12-29 23:55) [8]

Думаю, чтение ЧАСТИ файла будет в любом случае быстрее, чем чтение ВСЕГО файла. Да еше в варианте с TStringList идут затраты времени на многократное выделение памяти, на поиск и выдачу N-й строки... да и вообще, просто зазря гробятся ресурсы.


 
SI-riuss ©   (2002-12-30 00:16) [9]

Еще варианты:
Читая строки методом ReadLn я нашел нужную на строке, допустим, 100. Как мне опять начать просчет сначала?
Если мне придется по сотни раз искать нужную строку, то наверно лучше один раз загрузить все и обращаться уже к оперативке.


 
Юрий Зотов ©   (2002-12-30 00:48) [10]

Это уже зависит от особенностей задачи. Если придется часто прогонять поиск, то, возможно, есть смысл загрузить и весь файл.


 
SI-riuss ©   (2002-12-30 00:54) [11]

А про лимит емкости для Memo и RichEdit никто не знает?


 
[NIKEL] ©   (2002-12-30 05:44) [12]

у рича нету лимита

Вот интересно как делает Windows Comander со своим просмотром F3
- там хоть какой файл открывай - все равно будет быстро и прокручиваться и смотреться, наверно там File Mapping и он напрямую отображает память на облость просмотра


 
Anatoly Podgoretsky ©   (2002-12-30 07:38) [13]

TMemo 64 на Win9x и 2 gb Win9x/NT

RichEdit 2 gb


 
Anatoly Podgoretsky ©   (2002-12-30 07:45) [14]

64 кб, но эти органы для визуализации, а не для поисков и тому подобное


 
Verg   (2002-12-30 12:16) [15]

Если про макс. скорость, то я бы file mapping-ом делал. Быстрее не выйдет. Но у маппинга тоже ограничение - <4Gb, не так ли? ;)

А проги типа Viewer-ов грузят частями, например, по 25 строк. Создают как бы "скользящее окно" на 25 строк.


 
Кулюкин Олег ©   (2002-12-30 13:42) [16]

А нельзя читать в TStringList?
А там уже искать нжные строки?



Страницы: 1 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
14-37294
Дмитрий К.К.
2002-12-23 06:14
2003.01.13
Именинники 23 декабря


1-37050
DJ!
2003-01-02 19:04
2003.01.13
TTreeView


1-37142
smok_er
2002-12-28 14:34
2003.01.13
TWebBrowser & GoggleToolbar: Возможно ли?


1-37155
NewGuest
2002-12-29 17:20
2003.01.13
Как добавить один символ в конец строки RichEdit


3-36915
Slava_V
2002-12-17 15:53
2003.01.13
Помоготе с отчетом ...