Главная страница
    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.038 c
1-1098967297
Chlavik
2004-10-28 16:41
2004.11.14
Надо после QueryInterface как то уничтожать полученый интерфейс ?


14-1098912615
хм
2004-10-28 01:30
2004.11.14
как же больно


14-1098695957
Debugger
2004-10-25 13:19
2004.11.14
LOL


14-1098703870
vopros
2004-10-25 15:31
2004.11.14
Сегодня иду на Зенит-ЦСКА.Но немножко не посебе.


8-1092082366
Константинов
2004-08-10 00:12
2004.11.14
Run time вставить субтитры в фильм реально ли?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский