![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с определением свойства компонента по индексу [D5, Win95/98]
ДмитрийК. © (2002-11-29 13:22:00)Кто сможет подсказать?
Есть комтонент TShkaf наследник от TImage с свойствами DL,Gl:real,находящийся на первой форме, при написаниии во второй форме строкиForm1.FindComponent("Shkaf"+inttоstr(n)).DL:=SpinEdit1.Value;
Выдаётся сообщение о том что DL Или GL незадекларирован. Хотя если написать
Form1.Shkaf2.Dl:=.... Всё работает.
Помогите разобраться!
oomneeq (2002-11-29 16:24:00) [1]
oomneeq>as делает проверку, и генирит эксепшн, если фолс.
Skier>Если уже установлено (через is TShkaf) что это TShkaf
Skier>то какой же Exception даст as TShkaf ?!!
не даст , именно потому что не фолс,
а проверку делать будет, потому что не знает, что не фолс
но ты то уже уверен, так как is-ом опросил! дак зачем же ж перепроверять as-ом то?
фух =)
а с досугом напряг, думать мне некогда, мне работать нада :-)
2 Владислав
Cоображаешь! :-)
--------------------------------------------------------------------------------
Skier © (29.11.02 13:50)
>oomneeq
Что за бред !
Подумай на досуге...
Владислав (2002-11-29 14:07:00) [2]Если он nil, то условие (AComponent is TShkaf) будет равно False.
:)
А если условие выполниться (AComponent есть TShkaf), тогда exception не произойдет при as. Тогда на кой его использовать?
Проще использовать TShkaf(AComponent). Он не будет делать проверку, которая и так уже пройдена.
:)
Skier (2002-11-29 14:01:00) [3]>Владислав
Да а это что ?
>as делает проверку, и генирит эксепшн, если фолс.
Может я что непонял...Тогда извиням-с...
> Так не проще будет
А что если AComponent = nil ?
думай на досуге :)
Владислав (2002-11-29 13:58:00) [4]Тебе не про exeption говорят, а про эффективность :)
Это ты думай на досуге :)
Пример-то свой смотрел? ;)
"if (AComponent <> nil) and (AComponent is TShkaf) then begin
with AComponent as TShkaf do DL:=SpinEdit1.Value;"
if (AComponent is TShkaf) then
TShkaf(AComponent).DL:=SpinEdit1.Value;
Так не проще будет?
Skier (2002-11-29 13:50:00) [5]>oomneeq
Что за бред !
Если уже установлено (через is TShkaf) что это TShkaf
то какой же Exception даст as TShkaf?!!
Подумай на досуге...
oomneeq (2002-11-29 13:48:00) [6]2 skier, да и ващще
маленький рекомендация:
ecли что за тип уже установлено с помощью is,
то делать as, излищне, эффективнее будет простое приведение.
if (AComponent is TShkaf) then
TShkaf(AComponent).DL:=SpinEdit1.Value;
asделает проверку, и генирит эксепшн, если фолс.
Skier (2002-11-29 13:30:00) [7]>ДмитрийК.
ну в общем так :
var
AComponent : TComponent;
begin
AComponent := Form1.FindComponent("Shkaf"+inttоstr(n)).DL:=SpinEdit1.Value;
if (AComponent <> nil) and (AComponent is TShkaf) then begin
with AComponent as TShkaf do DL:=SpinEdit1.Value;
end; //if
end;
FreeLancer (2002-11-29 13:28:00) [8]Приведение типов
TShkaf(Form1.FindComponent("Shkaf"+inttоstr(n))).DL:=SpinEdit1.Value;
Skier (2002-11-29 13:27:00) [9]>ДмитрийК.
А что в nпопадает ?
Проверял ?