Название: Успешность вызова метода Отправлено: Alex_cs_gsp от Август 28, 2010, 19:07 Я столкнулся с тем, что не всегда понимаю нужно ли проверять возвращаемое методом значение или нет, и как на него реагировать.
Например, метод bool QAbstractItemModel::insertRows(). Я Qt только учусь, но программил WinAPi/MFC. В мсдн всегда указываются причины, которые приводили к ошибке, для таких вроде бы безобидных функций - то ли не удается выделить память, то-ли передан нулевой указатель...., и уже на основе этого принимается решение, то ли завершить программу, то ли должен как-то отреагировать пользователь и т.п. Как тут??? Название: Re: Успешность вызова метода Отправлено: Пантер от Август 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. Название: Re: Успешность вызова метода Отправлено: Авварон от Август 29, 2010, 21:34 по умолчанию, этот метод ничего не делает, как я уже вам писал. Соответсвенно его работоспособность, как и причины, по которым он фейлится, зависят от конкретной модели. К примеру для QFileSystemModel этот метод не работает вообще (так же как и removeRows, что менее логично, но тем не менее), так как не реимплементен в ней.
Абстракт модель - лишь интерфейс, пусть и наделенный определенным функционалом Название: Re: Успешность вызова метода Отправлено: Alex_cs_gsp от Август 29, 2010, 21:44 Returns true if the row is inserted; otherwise returns false.
Ну и с чем это азервайс связан? Я хочу знать может памяти недостаточно, или неправильная строка указана для вставки, или еще чего-нибудь. Я взял первый попавшийся метод, просто он попался в процессе прочтения книги, вот я и захотел выяснить, почему он false может возвращать, а в справке не сказано. Название: Re: Успешность вызова метода Отправлено: Авварон от Август 29, 2010, 21:55 еще раз, абстрактная модель - это ИНТЕРФЕЙС. То, с чем связан otherwise, решать ВАМ в ВАШЕМ наследнике
Название: Re: Успешность вызова метода Отправлено: Alex_cs_gsp от Август 29, 2010, 21:58 Да не в конкретике дело, знаю что такое абстрактная модель. К асистенту у меня претензии.
Название: Re: Успешность вызова метода Отправлено: Авварон от Август 29, 2010, 22:02 в чем? напишите мне то, не знаю что? Или там должно быть написано "возвращайте код ошибки, код возвращаете false"? бред же
Название: Re: Успешность вызова метода Отправлено: Alex_cs_gsp от Август 29, 2010, 22:04 Самое элементарное - сравнить объем описание для любого метода в мсдн и в асистенте. Мало примеров, и возвращаемые значения методов не говорят смысл ошибки и как ее исправить.
Название: Re: Успешность вызова метода Отправлено: Авварон от Август 29, 2010, 22:09 мне почему-то информации из ассистанта достаточно, а вот где написано что name у драйва в ф-ии GetVolumeInformation (http://msdn.microsoft.com/en-us/library/aa364993(v=VS.85).aspx) это на самом деле его label, яхз
Название: Re: Успешность вызова метода Отправлено: Alex_cs_gsp от Август 29, 2010, 22:19 В смысле, если в качестве рута указать С:\\ ?
Название: Re: Успешность вызова метода Отправлено: Авварон от Август 29, 2010, 22:26 в том смысле что name - это метка, а rootPath - это c:\
в то время как в .net есть отдельно label, тот же rootDirectory и name, который таки буква. Зато все описания написаны в стиле кэпа - имя это имя, а метка это метка для того чтобы выяснить эти отличия и что на самом деле возвращают методы, надо написать кучу кода (на си и c#) и расплодить дисков примонтированных в разные папки. Это я называю "плохая документация" Название: Re: Успешность вызова метода Отправлено: lit-uriy от Август 30, 2010, 06:15 >>Я хочу знать может памяти недостаточно, или неправильная строка указана для вставки,
Если памяти не достаточно, я думаю, тут одним false дело не закончится. Правильность строки нужно проверять до вызова метода. П.С. Для конкретной модели можно посмотреть исходник. Название: Re: Успешность вызова метода Отправлено: Alex_cs_gsp от Август 30, 2010, 14:14 Ну добрая половина ф-й WinApi возвращает значение, которое дает понять, что передан неверный аргумент.
Название: Re: Успешность вызова метода Отправлено: Авварон от Август 30, 2010, 16:46 про неверный аргумент вам посяпятся сообщения в консоль - это раз
а два - в ООП языке сложно передать что-то не то |