Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

С какой радости 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
14-1098709915
ArMellon
2004-10-25 17:11
2004.11.14
люди помогите найти дрова на видюху


14-1099067900
ArMellon
2004-10-29 20:38
2004.11.14
Как сделать чтобы TWebBrowser имел


3-1097576859
Санёк
2004-10-12 14:27
2004.11.14
Сравнение двух записей


1-1098942384
CrazyHacKeRs
2004-10-28 09:46
2004.11.14
Виртуальный DataSet


6-1094129018
GuAV
2004-09-02 16:43
2004.11.14
TEmbeddedWb