![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
доброго времени суток!
Столкнулся я с такой проблемой : не получается весь файл считать ! Подскажите более удобное решение(мое решение ниже ![]()
-------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
т.е. нужно while (ReadFile(...)) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Coala |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 4.5.2006 Где: Москва Репутация: нет Всего: 0 |
А кто мешает определить размер файла, создать буфер соответствующего размера и за один заход считать весь файл в буфер?
ЗЫ - что с файлом-то делать надо? |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Coala,
Да, интересно будет считывать файл размером метров хотя бы в 600 ![]() Должен быть РАЗУМНЫЙ компромис между скоростью (количество операций чтения) и памятью (размером буфера) -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
_hunter, у меня компилятор ругается если ставить так
-------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 15 Всего: 124 |
Точку с запятой уберите в конце строки, однако...
![]() while( ReadFile( hFile, str, 1024, &dwBytesRead, NULL ) ); // вот эту вот |
|||
|
||||
vood |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Это опечатка. Но экзешник после изменения
на
очень глючит Это сообщение отредактировал(а) vood - 27.10.2006, 11:42 -------------------- Вы все еще курите ? Тогда мы идем к вам |
||||
|
|||||
sergejzr |
|
||||||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Ну вроде ведь задача так стоит: "считать весь файл сразу". Значит наверное автор проверяет длину перед зачитыванием ![]() Вот кросплатформенная функция определения длины файла
Аот тебе простой, кросплатформенный пример копирования файла. Не раз ещё пригодится ![]() Если за размер буффера возьмёшь длину файла, то он считается "за раз";
|
||||||
|
|||||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
sergejzr, длину файла я определяю функцией _findfirst
за функцию копирования спасибо, но я пытаюсь считать весь файл( и за один присест у меня это не получится) -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Зачем её каждый раз определять, когда она в таблице уже есть? Почему? Файл большой? |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
это просто долго) файлов нужно много обрабатывать
определять нужно тк у себя модуля sys/stat.h я не нашел а findfirst мне удобней Добавлено @ 12:21 но мой вопрос еще остается в силе(см 1 пост) -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Тогда я не понимаю смысл вопроса и проблемы
Разве ЭТО не считает весь файл?
ПС: sys/stat.h - стандартная вещь есть в любом компиляторском наборе. Что у тебя за компилер? Хотя конечно, бегай по файлу, если есть желание. |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
sergejzr, понимаете, меня сам метод Ваш не устраиваетю. Файлы надо обрабатывать по 50-60 кб, экзешник будет запущен не раз, а память у меня на компе всего 512мб. Лично Вам огромное спасибо за участие, но я бы хотел узнать еще и другие мнения.
Это сообщение отредактировал(а) vood - 27.10.2006, 12:29 -------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
jnb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.10.2006 Репутация: нет Всего: 1 |
Попробуй использовать проецируемые в память файлы.
В таком случае сразу получишь указатель на буфер и избавишься от необходимости копирования файлов в память. Почитать можно у Рихтера. |
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Какой такой Рихтер?
-------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |