![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
VAVII |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.1.2006 Репутация: нет Всего: нет |
Приветствую!
Возникла такая проблема: есть огромный текстовый файл размером 170 метров, требуется быстро загрузить его в память и отобразить! Если есть какие-нибудь мысли делитесь! Зарание благодарен! |
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Используй TFileStream. Это самый быстрый способ.
-------------------- Ll 2 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
самый быстрый -- вообще-то отображение в память...
+ на вторую часть вопроса отвечать кто будет?.. VAVII, а ты уверен что тебе нужно отображать все 170 метров? кто их читать будет? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
VAVII |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.1.2006 Репутация: нет Всего: нет |
Для нагляднисти желательно отобразить все!
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
ну тогда бери и суй их в TListBox. ну лучше ( всетаки ) подумать нужно ли это и использовать тот же бокс, только виртуальный ( самому отрисовкой/вставкой данных заниматься ) -- тот же FileMon 100 тысяч строк за доли секунды показывает.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Все равно винда все 170 метров не засунет в память... Он ее запихнет в файл подкачки, и будет оттуда брать... А если хочешь, чтобы все в память закинулось, используй ассемблерные вставки
-------------------- Ll 2 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
а файл подкачки это уже не память что-ли?
+ при наличии свободного места в оперативке именно туда мапа и отобразится. P.S. и чем тут помогут асм-вставки? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
VAVII |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.1.2006 Репутация: нет Всего: нет |
Примерчик бы не помешал!
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
примерчик чего?
если виртуализации бокса -- поиск по слову lbVirtual -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Dian |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 2.1.2006 Репутация: нет Всего: 1 |
||||
|
||||
VAVII |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.1.2006 Репутация: нет Всего: нет |
Примерчик загрузки файла через TFileStream!
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
загрузки куда?
+ идем в справку и читаем, читаем, ... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
pmax |
|
||||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2006 Репутация: нет Всего: нет |
У меня это реализовано примерно так:
Успехов! |
||||
|
|||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
И ты считаешь, что этот пример для загрузки при помощи TFileStream?
Вот пример для этого:
-------------------- Ll 2 |
|||
|
||||
pmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2006 Репутация: нет Всего: нет |
Нет, но для работы с текстовыми файлами удобнее пользоваться объектом TStrings... Правда не знаю какой объект быстрее TFileStream или TStrings, поверю Guedda. P.S. Файл размером 35 метров у меня загружается за 5 сек. (но я закачиваю не всю информацию файла). |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Можно попробовать закачивать файл вручную.
По опыту знаю, что максимальная скорость загрузки достигается при загрузке данных блоками от 2х до 10 мБ -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
И тот , другой используют одни и те же функции для чтения. Другое дело, что затем нужно с данными делать. >Автор. В случае, если достаточно памяти на компьютере, можно воспользоватся самым простым методом: 1. Весь текст загружаем в TStringList. 2. В TListBox отображаем(коипируем из TStringList только те строки, которые необходимы для отображения(т.е. используем метод движущегося фрейма). -------------------- |
|||
|
||||
pmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2006 Репутация: нет Всего: нет |
Что то не понимаю, зачем их отображать в TListBox, почему нельзя их в массив откинуть и далее с ним работать? По моему так удобнее, или нет? |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
По условию задачи строки надо отображать. Вряд ли. -------------------- |
|||
|
||||
pmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2006 Репутация: нет Всего: нет |
Не заметил. Просто у меня примерно такая же задача, только мне нужны определенные значения из файла, для последующей их обработки. |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Ну в твоем случае намного проще прочитать файл построчно и выбрать только те строки, которые нужны (ReadLn); -------------------- |
|||
|
||||
pmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 13.3.2006 Репутация: нет Всего: нет |
Строки то мне нужны все а вот информация из каждой строки нужна выборочная. ![]() Пример считываемого файла: File: C:\EMT-SW\EMT-SCUT\BRC339.AS4 > 00001 2003/12/10 - 10:45:02 SN:1485 SC:0150 CH:05 TG:32 ST:00 SA:00 >> Ch Flag: 0 0 0 0 0 BY:3 SR:00150 Cyc/Sec. CK:4 TE: 000000000uS. 1 527 1045 1551 -1498 -1283 2 769 833 2213 -1768 -1135 3 595 890 2211 -3115 -1013 4 366 945 2459 2533 -1200 5 800 800 2111 1466 -1007 6 746 799 1599 -2573 -778 7 511 906 1245 -1051 -743 8 679 851 741 -685 -611 9 895 789 909 -3835 -879 10 497 771 636 -3579 -857 11 582 852 -663 14 -483 И так 35Mb... |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Ну 35Мб в наше время - немного.
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |