Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор компонентов 
:(
    Опции темы
mrbrooks
Дата 3.4.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Dmi3ev, можешь выложить этот *.rtf сюды?
PM MAIL   Вверх
Dmi3ev
Дата 3.4.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



вот! я его получил таким путем:
открыл документ ворд, нажал сохранить как и сохранил вот так...

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  uk.rar 313,56 Kb


--------------------

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


трололомен
****


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

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



Цитата(Dmi3ev @  3.4.2009,  09:45 Найти цитируемый пост)
вот! я его получил таким путем:
открыл документ ворд, нажал сохранить как и сохранил вот так... 

оно понятно. тут главное что бы один документ был. ща заценю.

Добавлено через 2 минуты и 58 секунд
Цитата(Dmi3ev @  3.4.2009,  09:45 Найти цитируемый пост)
вот! я его получил таким путем:
открыл документ ворд, нажал сохранить как и сохранил вот так... 

оно понятно. тут главное что бы один документ был. ща заценю.

Добавлено через 6 минут и 38 секунд
Dmi3ev, плохой тебе совет я дал с PlainText. Не используй его.
Дело в том что твой файл тянет на 4 метра. Тут и Ворд заклинит. Мое предложение - использовать TFileStream и повесить на гуй индикатор загрузки.

Добавлено через 11 минут и 51 секунду
И поток присобачить не мешает
PM MAIL   Вверх
Dmi3ev
Дата 3.4.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



я че-то делаю как олень))) но не в этом суть)))
возникли проблемы, если пишу так:
Код

        char buf[256];
        TFileStream *fi=new TFileStream("D:\\uk.txt", Sysutils::fmOpenRead);
        fi->Seek(0, soFromBeginning);
        while ((fi->Position)<(fi->Size))
        {
                fi->ReadBuffer(buf, sizeof(buf));
                ShowMessage(buf);
                RichEdit1->Lines->Add(buf);
                Label1->Caption=IntToStr(fi->Position)+"/"+IntToStr(fi->Size);
        }

то все относительно хорошо (текст добавляется, лейбл обновляется), но в конце возникает ошибка ereaderror stream error, да бог с ней (http://www.freepascal.org/docs-html/rtl/classes/ereaderror.html), суть не в этом... так вот а если закомментить строку:
Код

                ShowMessage(buf);

то ничего не обновляется, поэтому каждый раз в цикле (в конце) пишу (пока это единственный выход, который придумал, который прост):
Код

                Form1->Refresh();

ЗЫ как узнать, что конец уже, дальше грузить не надо... понимаю, что (fi->Position)<(fi->Size) глуповатое условие...

Это сообщение отредактировал(а) Dmi3ev - 3.4.2009, 11:44


--------------------

PM MAIL   Вверх
THandle
Дата 3.4.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Dmi3ev, я бы такие большие файлы не стал бы сразу грузить и отображать. Можно было бы хранить все это в каком то куске памяти(типа TStream), и по мере надобности подгружать это в RichEdit... Можно даже попробовать подгрузку осуществлять с помощью доп. потока.

Цитата(Dmi3ev @  3.4.2009,  12:35 Найти цитируемый пост)
ЗЫ как узнать, что конец уже, дальше грузить не надо... понимаю, что (fi->Position)<(fi->Size) глуповатое условие...


Не вижу тут ничего глупого smile

Кстати IntToStr в подобном цикле будут очень сильно тормозить программу.
PM   Вверх
mrbrooks
Дата 3.4.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(Dmi3ev @  3.4.2009,  11:35 Найти цитируемый пост)
ЗЫ как узнать, что конец уже, дальше грузить не надо... понимаю, что (fi->Position)<(fi->Size) глуповатое условие...


типа этого.

Код

        char buf[256];
        int nRead;
        TFileStream *fi=new TFileStream("D:\\uk.txt", Sysutils::fmOpenRead); //здесь бы я использовал std::auto_ptr
        fi->Seek(0, soFromBeginning);
       do
        {
                nRead = fi->Read(buf, sizeof(buf));
                RichEdit1->Lines->Add(buf);
                Label1->Caption=IntToStr(fi->Position)+"/"+IntToStr(fi->Size);  //зачем это - вломи ProgressBar
                Application->ProcessMessages();
        }
        while(nRead);

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Конструкция
Код

                fi->ReadBuffer(buf, sizeof(buf));
                RichEdit1->Lines->Add(buf);
порубит загружаемый файл в капусту  smile RichEdit1->Lines->Add добавляет строки, а ReadBuffer читает куски из файла, не обращая внимания на границы строк.

PM MAIL   Вверх
Dmi3ev
Дата 3.4.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

порубит загружаемый файл в капусту  smile RichEdit1->Lines->Add добавляет строки, а ReadBuffer читает куски из файла, не обращая внимания на границы строк.

я это понимаю, но пока задача хоть как-то это загрузить, а далее буду все расчитывать и предусматривать
Цитата

Кстати IntToStr в подобном цикле будут очень сильно тормозить программу. 

тоже учту потом, сделал это для себя... пока... чтобы визуально наблюдать процесс...
Цитата

//зачем это - вломи ProgressBar

пока это не принципиально... важна сама загрузка... 
задача стоит в том, чтобы загрузить текст большого объема, и при этом чтобы не екнулось все...



--------------------

PM MAIL   Вверх
xvr
Дата 3.4.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Dmi3ev @ 3.4.2009,  21:27)
задача стоит в том, чтобы загрузить текст большого объема, и при этом чтобы не екнулось все...

Поставь эксперимент - открой свой 'файл большого объема' в WordPad'е Там как раз RichEdit20W
PM MAIL   Вверх
Dmi3ev
Дата 3.4.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

порубит загружаемый файл в капусту  smile RichEdit1->Lines->Add добавляет строки, а ReadBuffer читает куски из файла, не обращая внимания на границы строк.

теперь вот это надо действительно победить, как можно сделать что-то типа, только более быстрое...
Код

RichEdit1->Text=RichEdit1->Text+buf;

потому как так будет тормозить ужасно... хотя думаю, сработает...


--------------------

PM MAIL   Вверх
Anikmar
Дата 3.4.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dmi3ev @  3.4.2009,  22:01 Найти цитируемый пост)
потому как так будет тормозить ужасно... хотя думаю, сработает... 

А чего не ->Lines->Add ? Зачем сто раз такие объемы гонять?
PM MAIL ICQ   Вверх
xvr
Дата 3.4.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Dmi3ev @ 3.4.2009,  22:01)
теперь вот это надо действительно победить, как можно сделать что-то типа, только более быстрое...
Код

RichEdit1->Text=RichEdit1->Text+buf;

потому как так будет тормозить ужасно... хотя думаю, сработает...

Будет тормозить. Что бы не тормозило надо сделать так -
Код

int pos=0;

RichEdit1->SelStart=pos; 
RichEdit1->SelLegth=0; 
RichEdit1->SelText=String(buf,nRead);
pos+=nRead;
Еще более ускорить можно перейдя на нижний уровень работы с RichEdit и отсылать ему текст непосредственно, вместо присваивания SelText. Это сэкономит формирование сроки (заказ памяти, копирование, удаление памяти)

PS. RichEdit собственно справляется, проверил?

PM MAIL   Вверх
Dmi3ev
Дата 4.4.2009, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата



Anikmar, ты не в теме...

xvr, спасибо, но думаю, того, что ты предложил хватит пока...
Цитата

PS. RichEdit собственно справляется, проверил?

Да, тянет, еще как! Пока только на тхт проверял, но работает довольно быстро... 
 


--------------------

PM MAIL   Вверх
Anikmar
Дата 4.4.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dmi3ev @  4.4.2009,  07:24 Найти цитируемый пост)
Anikmar, ты не в теме...

Не понял?
PM MAIL ICQ   Вверх
xvr
Дата 4.4.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Anikmar @ 4.4.2009,  09:54)
Цитата(Dmi3ev @  4.4.2009,  07:24 Найти цитируемый пост)
Anikmar, ты не в теме...

Не понял?

См. сюда и сюда. Теперь понял?  smile 

PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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