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

Вниз

Проблема с определением свойства компонента по индексу   Найти похожие ветки 

 
ДмитрийК.   (2002-11-29 13:22) [0]

Кто сможет подсказать?
Есть комтонент TShkaf наследник от TImage с свойствами DL,Gl:real,находящийся на первой форме, при написаниии во второй форме строки Form1.FindComponent("Shkaf"+inttоstr(n)).DL:=SpinEdit1.Value;
Выдаётся сообщение о том что DL Или GL незадекларирован. Хотя если написать
Form1.Shkaf2.Dl:=.... Всё работает.
Помогите разобраться!


 
Skier ©   (2002-11-29 13:27) [1]

>ДмитрийК.
А что в n попадает ?
Проверял ?


 
FreeLancer ©   (2002-11-29 13:28) [2]

Приведение типов

TShkaf(Form1.FindComponent("Shkaf"+inttоstr(n))).DL:=SpinEdit1.Value;


 
Skier ©   (2002-11-29 13:30) [3]

>ДмитрийК.
ну в общем так :


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;



 
oomneeq ©   (2002-11-29 13:48) [4]

2 skier, да и ващще
маленький рекомендация:

ecли что за тип уже установлено с помощью is,
то делать as, излищне, эффективнее будет простое приведение.

if (AComponent is TShkaf) then
TShkaf(AComponent).DL:=SpinEdit1.Value;

as делает проверку, и генирит эксепшн, если фолс.



 
Skier ©   (2002-11-29 13:50) [5]

>oomneeq
Что за бред !
Если уже установлено (через is TShkaf) что это TShkaf
то какой же Exception даст as TShkaf ?!!
Подумай на досуге...


 
Владислав ©   (2002-11-29 13:58) [6]

Тебе не про 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 14:01) [7]

>Владислав
Да а это что ?
>as делает проверку, и генирит эксепшн, если фолс.
Может я что непонял...Тогда извиням-с...

> Так не проще будет

А что если AComponent = nil ?
думай на досуге :)


 
Владислав ©   (2002-11-29 14:07) [8]

Если он nil, то условие (AComponent is TShkaf) будет равно False.
:)
А если условие выполниться (AComponent есть TShkaf), тогда exception не произойдет при as. Тогда на кой его использовать?
Проще использовать TShkaf(AComponent). Он не будет делать проверку, которая и так уже пройдена.
:)


 
oomneeq ©   (2002-11-29 16:24) [9]



oomneeq>as делает проверку, и генирит эксепшн, если фолс.

Skier>Если уже установлено (через is TShkaf) что это TShkaf
Skier>то какой же Exception даст as TShkaf ?!!

не даст , именно потому что не фолс,
а проверку делать будет, потому что не знает, что не фолс
но ты то уже уверен, так как is-ом опросил! дак зачем же ж перепроверять as-ом то?
фух =)

а с досугом напряг, думать мне некогда, мне работать нада :-)

2 Владислав
Cоображаешь! :-)








--------------------------------------------------------------------------------
Skier © (29.11.02 13:50)
>oomneeq
Что за бред !
Подумай на досуге...



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-28047
MAN-IN-RED
2002-11-30 15:15
2002.12.09
---|Ветка была без названия|---


14-28243
evgeg
2002-11-16 17:57
2002.12.09
Как избавились от Windows


3-27909
Oleon
2002-11-22 10:45
2002.12.09
Шаблоны платежных документов


1-28112
DmitriyN
2002-11-27 17:15
2002.12.09
Как в окне MDIParent сделать аналог виндовой панели задач?


1-28122
Сатир
2002-11-28 14:18
2002.12.09
Ошибка VCL