Russian Qt Forum
Июнь 03, 2024, 14:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: QFile::open() - как правильно открыть  (Прочитано 42377 раз)
spectre71
Гость
« : Август 10, 2009, 12:08 »

Есть флаги OpenMode.
Цитировать
QIODevice::WriteOnly   0x0002   The device is open for writing.
QIODevice::Truncate   0x0008   If possible, the device is truncated before it is opened. All earlier contents of the device are lost.

Почему QFile::open(QIODevice::WriteOnly) делает Truncate, нафига тогда QIODevice::Truncate?
И как правильно открыть файл на запись без Truncate?
Записан
ритт
Гость
« Ответ #1 : Август 10, 2009, 12:14 »

как бы не должно быть такого...
мб что-то в коде?
Записан
spectre71
Гость
« Ответ #2 : Август 10, 2009, 12:26 »

В доке про такое ничего нет!!!

    if ((openMode & QFile::WriteOnly) && !(openMode & (QFile::ReadOnly | QFile::Append)))
        openMode |= QFile::Truncate;

Код
C++ (Qt)
bool QFSFileEngine::open(QIODevice::OpenMode openMode)
{
   Q_D(QFSFileEngine);
   if (d->filePath.isEmpty()) {
       qWarning("QFSFileEngine::open: No file name specified");
       setError(QFile::OpenError, QLatin1String("No file name specified"));
       return false;
   }
 
   // Append implies WriteOnly.
   if (openMode & QFile::Append)
       openMode |= QFile::WriteOnly;
 
   // WriteOnly implies Truncate if neither ReadOnly nor Append are sent.
   if ((openMode & QFile::WriteOnly) && !(openMode & (QFile::ReadOnly | QFile::Append)))
       openMode |= QFile::Truncate;
 
   d->openMode = openMode;
   d->lastFlushFailed = false;
   d->tried_stat = 0;
   d->fh = 0;
   d->fd = -1;
 
   return d->nativeOpen(openMode);
}
Записан
ритт
Гость
« Ответ #3 : Август 10, 2009, 13:06 »

Spectre поднялся в моих глазах (не сарказм и даже не ирония)...

попробую в течении дня выяснить почему так и почему такое поведение специфично лишь для отдельно взятой энджины
Записан
ритт
Гость
« Ответ #4 : Август 10, 2009, 14:35 »

всё, выяснил Улыбающийся :
> it's probably following the semantics of fopen

т.е. можно считать багой или хотя бы неполной документацией.
Spectre, создавай таску в трекере и номерок сюда, а я отправлю исправление...
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Август 10, 2009, 15:30 »

Круто! Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
ритт
Гость
« Ответ #6 : Август 10, 2009, 15:32 »

kuzulis, что именно?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #7 : Август 10, 2009, 15:49 »

Ну,  это:
Цитировать
всё, выяснил Улыбающийся :
> it's probably following the semantics of fopen

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

в смысле я ничо не понял Улыбающийся (рано мне еще)
Записан

ArchLinux x86_64 / Win10 64 bit
ритт
Гость
« Ответ #8 : Август 10, 2009, 15:55 »

fopen не может открывать файл "только на запись" - может "write + append" и "write + truncate"
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #9 : Август 10, 2009, 16:00 »

не, я про сами таски, трекеры, номера и т.п.
Записан

ArchLinux x86_64 / Win10 64 bit
spectre71
Гость
« Ответ #10 : Август 10, 2009, 17:23 »

создавай таску в трекере и номерок сюда
Еще бы я знал что это такое. Улыбающийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #11 : Август 10, 2009, 17:52 »

Еще бы я знал что это такое. Улыбающийся

Это Task Tracker

Создание нового репорта Open a new Task


Пишешь репорт, отправляешь. Через определенное время получаешь ответ - бага это или нет. В случае подтверждения баги будет указан её номер (id) на Task Tracker
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
spectre71
Гость
« Ответ #12 : Август 10, 2009, 18:29 »

Отправил.
Сколько примерно ждать ответа?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Август 10, 2009, 18:46 »

Сколько примерно ждать ответа?

Ну это как повезет. Может сегодня-завтра прийти, а может и через несколько дней.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #14 : Август 10, 2009, 19:44 »

>>Сколько примерно ждать ответа?
Сначала жди автоответчика, он назначит "номер входящего" (Issue N...)
А потом уже с тобой свяжутся люди.
Записан

Юра.
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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