Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1097639943
Klim Samgin
2004-10-13 07:59
2004.11.14
Удаление папки после TBatchMove


14-1098951379
Григорьев Антон
2004-10-28 12:16
2004.11.14
Delphi 7 не хочет запускаться


14-1098790632
Мирон
2004-10-26 15:37
2004.11.14
Помогите с Novell ом


14-1098879796
Шишкин Илья
2004-10-27 16:23
2004.11.14
Аналог IntToStr в Turbo Pascal


1-1099056912
greenrul
2004-10-29 17:35
2004.11.14
Как узнать - стандартная ли иконка у файла?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский