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