Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрая загрузка текстового файла! 
:(
    Опции темы
VAVII
Дата 28.2.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.1.2006

Репутация: нет
Всего: нет



Приветствую!

Возникла такая проблема: есть огромный текстовый файл размером 170 метров, требуется быстро загрузить его в память и отобразить!

Если есть какие-нибудь мысли делитесь!

Зарание благодарен!
PM MAIL   Вверх
Guedda
Дата 28.2.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Используй TFileStream. Это самый быстрый способ.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
_hunter
Дата 28.2.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



самый быстрый -- вообще-то отображение в память...
+ на вторую часть вопроса отвечать кто будет?..


VAVII, а ты уверен что тебе нужно отображать все 170 метров? кто их читать будет?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
VAVII
Дата 28.2.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.1.2006

Репутация: нет
Всего: нет



Для нагляднисти желательно отобразить все!
PM MAIL   Вверх
_hunter
Дата 28.2.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



ну тогда бери и суй их в TListBox. ну лучше ( всетаки ) подумать нужно ли это и использовать тот же бокс, только виртуальный ( самому отрисовкой/вставкой данных заниматься ) -- тот же FileMon 100 тысяч строк за доли секунды показывает.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Guedda
Дата 28.2.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Все равно винда все 170 метров не засунет в память... Он ее запихнет в файл подкачки, и будет оттуда брать... А если хочешь, чтобы все в память закинулось, используй ассемблерные вставки


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
_hunter
Дата 1.3.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а файл подкачки это уже не память что-ли?
+ при наличии свободного места в оперативке именно туда мапа и отобразится.

P.S.
и чем тут помогут асм-вставки?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
VAVII
Дата 1.3.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.1.2006

Репутация: нет
Всего: нет



Примерчик бы не помешал!
PM MAIL   Вверх
_hunter
Дата 1.3.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



примерчик чего?
если виртуализации бокса -- поиск по слову lbVirtual


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Dian
Дата 1.3.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2006

Репутация: нет
Всего: 1



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

Цитата(Guedda @ 1.3.2006, 05:44 Найти цитируемый пост)
Все равно винда все 170 метров не засунет в память...

Если есть столько свободной памяти - то почему бы и нет
PM MAIL WWW   Вверх
VAVII
Дата 1.3.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.1.2006

Репутация: нет
Всего: нет



Примерчик загрузки файла через TFileStream!
PM MAIL   Вверх
_hunter
Дата 1.3.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



загрузки куда?
+ идем в справку и читаем, читаем, ...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
pmax
Дата 15.3.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.3.2006

Репутация: нет
Всего: нет



Цитата

Примерчик загрузки файла через TFileStream!


У меня это реализовано примерно так:

Код

............................................................................................
Procedure TMainForm.LoadButtonClick(Sender: TObject);
Var
       f          : TStringList;
       Path    : String;        //Путь к файлу с данными
  Begin
 OpenDialog1.Filter:='*.asN';
 OpenDialog1.Title:='Открыть файл';
  if OpenDialog1.Execute then begin
   Path:=OpenDialog1.FileName;
   f:=TStringList.Create();
   f.LoadFromFile(Path);
..............................................................................................



Успехов!

PM MAIL   Вверх
Guedda
Дата 15.3.2006, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



И ты считаешь, что этот пример для загрузки при помощи TFileStream?
Вот пример для этого:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Buffer: PChar;
  Stream: TFileStream;
  Size:   LongInt;
begin
  Stream := TFileStream.Create('Unit1.pas', fmOpenRead);
  try
    Size := Stream.Size;
    GetMem(Buffer, Size);
    try
      Stream.Read(Buffer[0], Size);
      Memo1.Lines.Text := Buffer;
    finally
      FreeMem(Buffer);
    end;
  finally
    Stream.Free;
  end;
end;



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
pmax
Дата 16.3.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.3.2006

Репутация: нет
Всего: нет



Цитата

И ты считаешь, что этот пример для загрузки при помощи TFileStream?


Нет, но для работы с текстовыми файлами удобнее пользоваться объектом TStrings...
Правда не знаю какой объект быстрее TFileStream или TStrings, поверю Guedda.

P.S. Файл размером 35 метров у меня загружается за 5 сек. (но я закачиваю не всю информацию файла).
PM MAIL   Вверх
Alexeis
Дата 16.3.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Можно попробовать закачивать файл вручную.
По опыту знаю, что максимальная скорость загрузки достигается при загрузке данных блоками от 2х до 10 мБ



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демо
Дата 16.3.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(pmax @ 16.3.2006, 10:34 Найти цитируемый пост)
Правда не знаю какой объект быстрее TFileStream или TStrings,


И тот , другой используют одни и те же функции для чтения.
Другое дело, что затем нужно с данными делать.

>Автор.

В случае, если достаточно памяти на компьютере, можно воспользоватся самым простым методом:
1. Весь текст загружаем в TStringList.
2. В TListBox отображаем(коипируем из TStringList только те строки, которые необходимы для отображения(т.е. используем метод движущегося фрейма).


--------------------
    
PM MAIL ICQ Skype   Вверх
pmax
Дата 16.3.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.3.2006

Репутация: нет
Всего: нет



Цитата

В TListBox отображаем(коипируем из TStringList только те строки, которые необходимы для отображения


Что то не понимаю, зачем их отображать в TListBox, почему нельзя их в массив откинуть и далее с ним работать? По моему так удобнее, или нет?
PM MAIL   Вверх
Демо
Дата 16.3.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(pmax @ 16.3.2006, 12:53 Найти цитируемый пост)
Что то не понимаю, зачем их отображать в TListBox, почему нельзя их в массив откинуть и далее с ним работать?

По условию задачи строки надо отображать.


Цитата(pmax @ 16.3.2006, 12:53 Найти цитируемый пост)
По моему так удобнее, или нет?


Вряд ли.



--------------------
    
PM MAIL ICQ Skype   Вверх
pmax
Дата 16.3.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.3.2006

Репутация: нет
Всего: нет



Цитата

По условию задачи строки надо отображать.


Не заметил.

Просто у меня примерно такая же задача, только мне нужны определенные значения из файла, для последующей их обработки.
PM MAIL   Вверх
Демо
Дата 16.3.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(pmax @ 16.3.2006, 14:38 Найти цитируемый пост)
только мне нужны определенные значения из файла,


Ну в твоем случае намного проще прочитать файл построчно и выбрать только те строки, которые нужны (ReadLn);


--------------------
    
PM MAIL ICQ Skype   Вверх
pmax
Дата 16.3.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 13.3.2006

Репутация: нет
Всего: нет



Цитата

Ну в твоем случае намного проще прочитать файл построчно и выбрать только те строки, которые нужны (ReadLn);


Строки то мне нужны все а вот информация из каждой строки нужна выборочная. smile

Пример считываемого файла:

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...

PM MAIL   Вверх
Демо
Дата 16.3.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Ну 35Мб в наше время - немного.


--------------------
    
PM MAIL ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1390 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.