crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Создание файла с помощью QFile
NO_0b
  опции профиля:
сообщение 23.3.2012, 15:48
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 23.3.2012
Пользователь №: 3285

Спасибо сказали: 0 раз(а)




Репутация:   0  


QFile mFile("F:/Test/MyFile.txt");
Как понимаю, создает объект mFile класса QFile. Но не понтно, соездает ли файл с именем F:/Test/MyFile.txt или он уже должен был существовать? И если верно второе, то как можно программно создать файл с определенным именем в определенной папке? Изучаю QT второй день, просьба ногами не бить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 23.3.2012, 16:24
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


QFile mFile("F:/Test/MyFile.txt");
mfile.open(QIODevice::WriteOnly);
mfile.close();

Файл создается при вызове функции open, если он не был создан до этого.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NO_0b
  опции профиля:
сообщение 23.3.2012, 16:47
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 23.3.2012
Пользователь №: 3285

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо. И тогда второй вопрос. Какие могут быть причины, что файл упорно не хочет открыватьс?

Вот написал функцию:

QString Write(QString Filename)
{
QFile mFile(Filename);
if(!mFile.open(QFile::WriteOnly,QFile::Text)) return "Could not open for writing";
QTextStream out(&mFile);
out<< "MF";
mFile.close();
return "Succesful writing";
}

При вызове постонно пишет что не может открыть.

Все, нашел проблему. В обучающем курсе c++ qt 12 на youtube было написано дл задани режима только запись QFile::WriteOnly и почему то работало.
Попробовал QIODevice::WriteOnly и у мен стало работать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 23.3.2012, 18:51
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


if(!mFile.open(QFile::WriteOnly,QFile::Text)) return "Could not open for writing";

Вы пытаетесь передать два параметра, а функция open принимает только один. Если хотите передать несколько флагов следует воспользоваться оператором '|' (побитовое ИЛИ).
Вот так правильно:
if(!mFile.open(QFile::WriteOnly | QFile::Text)) return "Could not open for writing";
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NO_0b
  опции профиля:
сообщение 23.3.2012, 20:08
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 23.3.2012
Пользователь №: 3285

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да, действительно. Был невнимателен и не увидел что там побитовое ИЛИ, а не запта под второй аргумент.
Большое спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 19:15