Russian Qt Forum
Ноябрь 27, 2024, 10:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Успешность вызова метода
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Успешность вызова метода (Прочитано 6646 раз)
Alex_cs_gsp
Гость
Успешность вызова метода
«
:
Август 28, 2010, 19:07 »
Я столкнулся с тем, что не всегда понимаю нужно ли проверять возвращаемое методом значение или нет, и как на него реагировать.
Например, метод bool QAbstractItemModel::insertRows().
Я Qt только учусь, но программил WinAPi/MFC. В мсдн всегда указываются причины, которые приводили к ошибке, для таких вроде бы безобидных функций - то ли не удается выделить память, то-ли передан нулевой указатель...., и уже на основе этого принимается решение, то ли завершить программу, то ли должен как-то отреагировать пользователь и т.п.
Как тут???
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Успешность вызова метода
«
Ответ #1 :
Август 29, 2010, 21:13 »
Цитировать
bool QAbstractItemModel::insertRow ( int row, const QModelIndex & parent = QModelIndex() )
Note: The base class implementation of this function does nothing and returns false.
Inserts a single row before the given row in the child items of the parent specified.
Returns true if the row is inserted; otherwise returns false.
Чего не понятно?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Успешность вызова метода
«
Ответ #2 :
Август 29, 2010, 21:34 »
по умолчанию, этот метод ничего не делает, как я уже вам писал. Соответсвенно его работоспособность, как и причины, по которым он фейлится, зависят от конкретной модели. К примеру для QFileSystemModel этот метод не работает вообще (так же как и removeRows, что менее логично, но тем не менее), так как не реимплементен в ней.
Абстракт модель - лишь интерфейс, пусть и наделенный определенным функционалом
«
Последнее редактирование: Август 29, 2010, 21:39 от Авварон
»
Записан
Alex_cs_gsp
Гость
Re: Успешность вызова метода
«
Ответ #3 :
Август 29, 2010, 21:44 »
Returns true if the row is inserted; otherwise returns false.
Ну и с чем это азервайс связан? Я хочу знать может памяти недостаточно, или неправильная строка указана для вставки, или еще чего-нибудь. Я взял первый попавшийся метод, просто он попался в процессе прочтения книги, вот я и захотел выяснить, почему он false может возвращать, а в справке не сказано.
«
Последнее редактирование: Август 29, 2010, 21:57 от Alex_cs_gsp
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Успешность вызова метода
«
Ответ #4 :
Август 29, 2010, 21:55 »
еще раз, абстрактная модель - это ИНТЕРФЕЙС. То, с чем связан otherwise, решать ВАМ в ВАШЕМ наследнике
Записан
Alex_cs_gsp
Гость
Re: Успешность вызова метода
«
Ответ #5 :
Август 29, 2010, 21:58 »
Да не в конкретике дело, знаю что такое абстрактная модель. К асистенту у меня претензии.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Успешность вызова метода
«
Ответ #6 :
Август 29, 2010, 22:02 »
в чем? напишите мне то, не знаю что? Или там должно быть написано "возвращайте код ошибки, код возвращаете false"? бред же
Записан
Alex_cs_gsp
Гость
Re: Успешность вызова метода
«
Ответ #7 :
Август 29, 2010, 22:04 »
Самое элементарное - сравнить объем описание для любого метода в мсдн и в асистенте. Мало примеров, и возвращаемые значения методов не говорят смысл ошибки и как ее исправить.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Успешность вызова метода
«
Ответ #8 :
Август 29, 2010, 22:09 »
мне почему-то информации из ассистанта достаточно, а вот где написано что name у драйва в ф-ии GetVolumeInformation (
http://msdn.microsoft.com/en-us/library/aa364993(v=VS.85).aspx
) это на самом деле его label, яхз
Записан
Alex_cs_gsp
Гость
Re: Успешность вызова метода
«
Ответ #9 :
Август 29, 2010, 22:19 »
В смысле, если в качестве рута указать С:\\ ?
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Успешность вызова метода
«
Ответ #10 :
Август 29, 2010, 22:26 »
в том смысле что name - это метка, а rootPath - это c:\
в то время как в .net есть отдельно label, тот же rootDirectory и name, который таки буква. Зато все описания написаны в стиле кэпа - имя это имя, а метка это метка
для того чтобы выяснить эти отличия и что на самом деле возвращают методы, надо написать кучу кода (на си и c#) и расплодить дисков примонтированных в разные папки. Это я называю "плохая документация"
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Успешность вызова метода
«
Ответ #11 :
Август 30, 2010, 06:15 »
>>Я хочу знать может памяти недостаточно, или неправильная строка указана для вставки,
Если памяти не достаточно, я думаю, тут одним false дело не закончится.
Правильность строки нужно проверять до вызова метода.
П.С.
Для конкретной модели можно посмотреть исходник.
«
Последнее редактирование: Август 30, 2010, 06:18 от lit-uriy
»
Записан
Юра.
Alex_cs_gsp
Гость
Re: Успешность вызова метода
«
Ответ #12 :
Август 30, 2010, 14:14 »
Ну добрая половина ф-й WinApi возвращает значение, которое дает понять, что передан неверный аргумент.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Успешность вызова метода
«
Ответ #13 :
Август 30, 2010, 16:46 »
про неверный аргумент вам посяпятся сообщения в консоль - это раз
а два - в ООП языке сложно передать что-то не то
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...