Russian Qt Forum
Ноябрь 24, 2024, 07:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFile::size() возвращает ноль  (Прочитано 4378 раз)
ieroglif
Гость
« : Май 24, 2010, 17:04 »

Ничего не понимаю - обычный файл с диска. ничем не занят (никакой другой процесс к файлу не обращается).
Делаю наследника от QFile

соответсвенно:
Код
C++ (Qt)
MyClass::MyClass( const QString & filename, QObject * parent) : QFile(filename,parent)
{
   this->setFileName(filename);
   this->open(QIODevice::ReadOnly);
   qDebug() << this->size(); //возвращает ноль!
}

и есть ещё один вопрос =)
как писать в начало файла сдвигая имеющуюся в нём информацию? prepend, в общем =)
закатывать весь файл в память что бы там запрепендить и закинуть обратно - долго как-то.. могут быть очень больших размеров файлы.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Май 24, 2010, 17:27 »

Ты уверен что файл открылся? Попробуй так:
Код:
qDebug()<<this->open(QIODevice::ReadOnly);

Насчет препенда сложно сказать.. как-то двигать данные все равно придется..
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
ieroglif
Гость
« Ответ #2 : Май 24, 2010, 19:33 »

спасибо, вопрос с нолевым размером решён - моя дурость и программанье в 3 часа ночи - переопределил метод size() и поставил там тестом возврат нуля.

вопрос с препендом остался =)
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Май 24, 2010, 20:57 »

>>вопрос с препендом остался
создать временный файл, писать в него (по сути prepend). По окончании записи, открыть имеющийся и весь записть в конец временного. Оба закрыть, старый удалить а новый переименовать в старое имя
Записан

Юра.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Май 24, 2010, 21:01 »

и есть ещё один вопрос =)
как писать в начало файла сдвигая имеющуюся в нём информацию? prepend, в общем =)
закатывать весь файл в память что бы там запрепендить и закинуть обратно - долго как-то.. могут быть очень больших размеров файлы.
Никак, можно только крутиться с 2-мя файлами как предложил Юра. Часто также пишут файл chunk'ами,  чтобы данные могли следовать в любом порядке.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 22.