Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

С какой радости 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]

Потому что об этом в хелпе всё написано.
Если ты возмёшь словарь и переведёшь название функции на свой родной язык, то возможно ты приблизишься к Великой Истине.


Наверх

Титульная страница Поиск, карта сайта Написать письмо