Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
14-37314
Ketmar
2002-12-19 19:01
2003.01.13
---|Ветка была без названия|---


4-37431
vic_774N
2002-11-24 20:23
2003.01.13
Имеется TreeView в некотором приложении. Получить handle


14-37348
Дмитрий К.К.
2002-12-24 13:54
2003.01.13
Несовместимая версия заглушки RPC


1-37042
Шоломицкий
2003-01-02 17:10
2003.01.13
Вот на C++ не понимаю нифига! Пожалуйста помогите!


1-37017
Vampirus
2003-01-01 21:30
2003.01.13
Список поддиректорий и файлов в некоторой директории





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский