![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Aleksei |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 3.9.2014 Пользователь №: 4219 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
в консоле получалась функция, а тут не знаю как.
mainwindow.h добавил
mainwindow.cpp добавил
как правильно оформить функцию? |
|
|
marsel |
![]()
Сообщение
#2
|
Студент ![]() Группа: Новичок Сообщений: 15 Регистрация: 29.1.2013 Пользователь №: 3693 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Слушай ты бы хоть, какой нибудь учебник по С++ почитал.
Если тебе надо передать имя файла, его сохраняй и потом используй. private: QString fileName Вот здесь QFileInfo info(mFile()); Во первых функция mFile(QString file) не возвращает ничего void. Зачем тогда она здесь? И во вторых у этой функции есть обязательный параметр. Читать и учить. |
|
|
Aleksei |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 3.9.2014 Пользователь №: 4219 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
разобрался с функциями
проверка открыт ли файл не работает if (iFile.open(QFile::isOpen())==true) ругается на эту строчку. если писать if (iFile.isOpen()== true) тоже не работает. Запускается без ошибки но результат всегда закрыт файл. |
|
|
FireBlack |
![]()
Сообщение
#4
|
![]() Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
если писать if (iFile.isOpen()== true) тоже не работает. Запускается без ошибки но результат всегда закрыт файл. Вам явно не хватает знаний языка, и как уже советовали выше - стоит почитать литературу. Я бы порекомендовал Лафоре, данная книженция чертовки помогла мне в свое время. Данная конструкция всегда будет возвращать false т.к. вы поверяете открытость не mFile, а открытость объекта iFile, для которого функция open не вызывалась. iFile, cFile и oFile - это совершенно разные переменные, между собой никак не связанные. Данная конструкция вообще лишена смысла т.к. вы пытаетесь закрыть еще не открытый файл. Поймите, Вы работаете не с файлом mFile (это всего лишь путь к файлу, а не его handle), а с локальным объектом QFile, который создаете на стеке и который будет уничтожен при выходе из функции, например здесь:
Если Вы хотите управлять объектом QFile вручную, то Вам следует вынести его в члены класса, например: Раскрывающийся текст где то в .h файле:
в .cpp файле:
Однако такой подход не является правильным т.к. файл у Вас открыт слишком долго. Обычно файлы закрываются сразу после использования (например, чтения или записи), чтобы другие приложения тоже имели к ним доступ. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Aleksei, Вам нужно прекращать обезьяничать с визуальным дизайнером. В частности с автоматическим созданием слотов.
Что делает эта функция : void MainWindow::on_pushButton_3_clicked() А эта? void MainWindow::on_pushButton_500_clicked() Функции и переменные должны в своём названии отражать суть, никаких pushButton_3 быть не может. Привыкайте сразу писать код для людей, а не для компилятора. Представьте себя в лифте, в котором кнопки обозваны, как у вас, например вместо кнопок Стоп и Вызов - pushButton_18 и pushButton_43 //<- вот здесь объект oFile будет уничтожен, и закрытие файла произойдет автоматически. + много! Это очень важно!Aleksei, вам книжку путнюю по Си++ надо держать под рукой На начальном этапе может Герберт Шилдт подойти (но если будете вникать вам её покажется мало), а отечественных авторов лучше не брать, они сами нифига не понимают. |
|
|
FireBlack |
![]()
Сообщение
#6
|
![]() Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
Aleksei, Вам нужно прекращать обезьяничать с визуальным дизайнером. В частности с автоматическим созданием слотов. Предлагаю компромиссное решение: использовать автоматическое создание слотов только для переименованных объектов. Например, QPushButton кнопку, при нажатии на которую выбирается файл - именовать pbnSelectFileName. Тогда слот будет выглядеть void MainWindow::on_pbnSelectFileName_clicked(), по-моему вполне читабельно. Поле ввода QLineEdit, куда Вы выводите имя файла именовать leFileName и так далее. ИМХО: подобное решение позволяет использовать все плюшки дизайнера и не снижает читабельности кода. Функции и переменные должны в своём названии отражать суть, никаких pushButton_3 быть не может. Привыкайте сразу писать код для людей, а не для компилятора. А вот с этим я полностью согласен, красиво сказано. |
|
|
Aleksei |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 23 Регистрация: 3.9.2014 Пользователь №: 4219 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
спасибо учту.
Такой вопрос: если с текстовым файлом постоянно работает система и ей нельзя мешать (допустим лог файл) в этом текст. файле нужно искать запись (допустим Error 100) файл довольно большой. Как лучше реализовать? Прямиком по файлу запустить поиск или через буфер или копию файла сделать, запустить поиск и потом его удалить? что меньше нагрузит систему и не помещает системе писать в этот файл? |
|
|
FireBlack |
![]()
Сообщение
#8
|
![]() Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 17.10.2010 Из: г.Пенза Пользователь №: 2121 Спасибо сказали: 13 раз(а) Репутация: ![]() ![]() ![]() |
если с текстовым файлом постоянно работает система и ей нельзя мешать (допустим лог файл) в этом текст. файле нужно искать запись (допустим Error 100) файл довольно большой. Как лучше реализовать? Просто периодически по таймеру или по сигналу от QFileSystemWatcher открываете этот файл для чтения, читаете его кусками и ищете искомую запись. Если, как Вы говорите, это большой лог файл (который только дополняется), то имеет смысл запоминать последнюю позицию и при следующем чтении файла начинать с нее. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 6:15 |