![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
С какой радости Borland в DB.pas написала такое?
}|{yk © (2004-10-12 18:13:00)
function TFields.FieldByName(const FieldName: string): TField;
begin
Result := FindField(FieldName);
if Result = nil then DatabaseErrorFmt(SFieldNotFound, [FieldName], DataSet);
end;
зачем мне получать ошибку, и потом обрабатывать ее? Если я получу nil, и попытаюсь работать с ним, я и так получу AV. Зачем мне лишний try-except&
Reindeer Moss Eater (2004-10-13 14:26:00) [1]FieldByName и Exception
или
FindField и nil
что хочешь то и используй.
Anatoly Podgoretsky (2004-10-13 11:26:00) [2]}|{yk © (12.10.04 19:19) [8]
Потому что в первом случае сделано с генерацией исключения, а во втором случае нет.
Не нравится не используй или скажи свое фи Борланду. Каждую функцию надо использовать в соответствии со спецификаей а не вкусом конечного пользователя.
Polevi (2004-10-12 19:54:00) [3]покачану
}|{yk (2004-10-12 19:19:00) [4]почему
function TFields.FieldByNumber(FieldNo: Integer): TField; не создает исключения, а
function TFields.FieldByName(const FieldName: string): TField;
создает?
jack128 (2004-10-12 19:10:00) [5]Не понял в чем проблема?? Есть два метода, хочешь, чтобы было исключение - используй FieldByName, хочешь получить nil - FindField..
}|{yk © (12.10.04 18:13)
Если я получу nil, и попытаюсь работать с ним, я и так получу AV. Зачем мне лишний try-except
Где лишний try- except ?? Если ты обращешься к указателю на нил, значит у тя неправельно постоена логика приложения.
}|{yk (2004-10-12 18:43:00) [6]а в
function TFields.FieldByNumber(FieldNo: Integer): TField;
var
I: Integer;
begin
for I := 0 to FList.Count - 1 do
begin
Result := FList.Items[I];
if Result.FieldNo = FieldNo then Exit;
end;
Result := nil;
end;
опять же Exception я не получу!
}|{yk (2004-10-12 18:42:00) [7]Да проблема в том, что сам Borland там же пишет
function TFieldList.FieldByName(const Name: string): TField;безо всяких возбуждений ошибок!
begin
Result := TField(FindItem(Name, True));
end;
icWasya (2004-10-12 18:28:00) [8]>..Я хочу получить nil...
Ну так и пользуйся FindField - в чём проблема?
Johnmen (2004-10-12 18:23:00) [9]Просто есть два подхода к таким вещам.
Они реализовали один из них. Т.е. они гарантируют, что вернут запрашиваемое. Если не будет ошибки...:)
}|{yk (2004-10-12 18:23:00) [10]Зачем мне получать Exception? Я хочу получить nil. Что возвратит FindWindow, если не найдет нужного окна?
Плохиш (2004-10-12 18:20:00) [11]Потому что об этом в хелпе всё написано.
Если ты возмёшь словарь и переведёшь название функции на свой родной язык, то возможно ты приблизишься к Великой Истине.