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

Вниз

TYPE CAST   Найти похожие ветки 

 
чуть помедленнее   (2007-02-10 22:27) [0]

как запретить проверку TypeCast в таком коде:
  if (OPList[i]^.Name = "AltBtnGlyph")
    then ((GetClass(Output.ClassName)).AltBtnGlyph).Assign((GetClass(Input.ClassName)).Al tBtnGlyph)
?


 
DrPass ©   (2007-02-11 00:49) [1]


>
> чуть помедленнее

Как подсказывает мой телепатор,
> как запретить проверку TypeCast в таком коде

... на самом деле означает "как отключить проверку соответствия типов в таком коде"

Как и в любом другом коде - никак, естессно. Явно приведи результат, возвращаемый GetClass, к нужному тебе типу


 
Германн ©   (2007-02-11 01:20) [2]

А мой телепатор подсказывает, что и GetClass скорее всего тут не нужен.


 
Loginov Dmitry ©   (2007-02-11 10:16) [3]

А мой погорел и вовсе. Ну никак не докатывает, что автор хочет сделать своим (мягко говоря бредовым) кодом?


 
DrPass ©   (2007-02-11 11:46) [4]


>  что и GetClass скорее всего тут не нужен

Если Output и Input - это записи, а не классы, то нужен. В противном случае мой телепатор тоже
> никак не докатывает, что автор хочет сделать своим (мягко
> говоря бредовым) кодом?


 
DrPass ©   (2007-02-11 11:50) [5]

...правда, я не знаю, поддерживает ли Delphi в качестве статических полей/свойств объекты. Скорее всего, нет :)


 
чуть помедленнее   (2007-02-11 12:28) [6]

Да вобщем точно бред - некоторые property скрыты в базовом классе в секции protected - как пример Font в TControl. Мне нужно взять значение property Font из объекта Input и установить его в обект Output. И Input и Output одного класса, наследники TControl - property Font у них в секции published. Вот и получается что к TControl преобразовывать нет смысла - Font не видно из него, нужно тайпкастить к GetClass(Input.ClassName) - компилятор не пускает...


 
DrPass ©   (2007-02-11 12:59) [7]


> чуть помедленнее   (11.02.07 12:28) [6]

Ясно... убери GetClass вообще. И ClassName тоже нафиг убери. Заработает :)


 
Loginov Dmitry ©   (2007-02-11 13:24) [8]

Output.Font := Input.Font

Куда проще?


 
чуть помедленнее   (2007-02-11 23:38) [9]

> [7] DrPass ©   (11.02.07 12:59)


блин ну не вариант это - не работает...


 
DrPass ©   (2007-02-12 00:11) [10]


> блин ну не вариант это - не работает...

Работает, естественно. Ты просто чё-то не так делаешь :)


 
Германн ©   (2007-02-12 01:36) [11]

Автор сабжа изображает из себя агента 007, имхо :)
Вот только которого?
На мой скус, Шон Коннери - самый самый! :)


 
чуть помедленнее   (2007-02-12 18:18) [12]

наверное, я действительно неправильно выразился и плохо обЪяснил в чем вопрос...

var Input, Output : TControl;//на самом деле они другого класса - допустим TEdit или TLabel, но всегда классы совпадают (TControl потому что property Font наследуется из него)
...
//прохожу по property`s в цикле (OPList, IPlist - лист из property для Output и Input), нахожу нужное - TFont
 if (OPList[i]^.Name = "Font")
   then ((GetClass(Output.ClassName)).Font).Assign((GetClass(Input.ClassName)).Font)
//и пытаюсь безуспешно (( выполнить Assign


 
Германн ©   (2007-02-12 18:35) [13]


> чуть помедленнее   (12.02.07 18:18) [12]

Ну а почему бы не сделать так
Output.Font.Assign(Input.Font);?


 
чуть помедленнее   (2007-02-12 18:40) [14]

не видит Delphi в TControl Font (


 
чуть помедленнее   (2007-02-12 18:49) [15]

[Error] uEditForm.pas(251): Undeclared identifier: "Font"


 
Германн ©   (2007-02-12 22:10) [16]

Попробуй тогда так

type
 TMyControl = class(TControl);
...
 TMyControl(Output).Font.Assign(TMyControl(Input).Font);


 
чуть помедленнее   (2007-02-12 22:23) [17]

> [16] Германн ©   (12.02.07 22:10)

заработало! спасибо, Германн!!


 
Германн ©   (2007-02-13 00:47) [18]


> чуть помедленнее   (12.02.07 22:23) [17]
>
> > [16] Германн ©   (12.02.07 22:10)
>
> заработало! спасибо, Германн!!
>

Пожалуйста. Рад, что мои скромные познания всё-таки иногда позволяют кому-нибудь помочь :)
Но в будущем старайся уже в сабже приводить достаточное количество информации. А то я в [12] и не сразу заметил, что Input, Output : TControl. :(


 
Loginov Dmitry ©   (2007-02-13 07:43) [19]

Объявлять TMyControl не обязательно. Достаточно взять любой используемый класс, в котором свойство Font открыто, например:

TEdit(Output).Font := TEdit(Input).Font;

Минус здесь то, что затруднится сопровождение подобного кода.



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

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

Наверх




Память: 0.51 MB
Время: 0.035 c
2-1174218327
Nic (ro)
2007-03-18 14:45
2007.04.08
Непонятная ошибка


6-1161677126
Grassus
2006-10-24 12:05
2007.04.08
Определить список процессов


15-1173873526
nimp
2007-03-14 14:58
2007.04.08
Ошибка в дельфях


3-1169109557
GrBob
2007-01-18 11:39
2007.04.08
Упраление соединениями на MS SQL Server


15-1173935832
vajo
2007-03-15 08:17
2007.04.08
Microsoft рекомендует красть Windows