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

Вниз

[Builder 6] Приведение объектных типов   Найти похожие ветки 

 
Loginov Dmitry ©   (2006-10-12 22:05) [0]

Вот понадобилось написать курсач на этом языке. Уже третий день плююсь (какая-же отвратительная и глюкнутая вещь этот билдер). Не могу сделать приведение объектных типов. Вот есть процедурка:

void __fastcall TMyMailListForm::btnEditClick(TObject *Sender)
{

}

Хочу узнать Tag нажатой кнопки.

Код TObject *Btn = Sender работает, однако он бесполезен.

Следующие варианты не проходят:
TButton *Btn = Sender;
TButton *Btn = TButton(Sender);
TButton *Btn = (TButton)Sender;

Уже перепробовал все возможные комбинации всех возможных значков - не работает.

Что делать? :(

P.S. Все-таки работа с указателями в С++ по сравнению в Дельфи - атстой. Имхо.


 
Ketmar ©   (2006-10-12 22:08) [1]

синтаксис подучить не пробовал? %-) книжки там умные почитать...


 
Loginov Dmitry ©   (2006-10-12 22:10) [2]

А подсказать, что, влом?


 
Zeqfreed ©   (2006-10-12 22:11) [3]

((TButton *)Sender)->Tag?


 
Loginov Dmitry ©   (2006-10-12 22:13) [4]

Zeqfreed ©   (12.10.06 22:11) [3]
((TButton *)Sender)->Tag?


Вот спасиба! О такой комбинации закоручек я и не догадывался :)


 
Zeqfreed ©   (2006-10-12 22:14) [5]

> [4] Loginov Dmitry ©   (12.10.06 22:13)

[1] ;-)


 
Loginov Dmitry ©   (2006-10-12 22:18) [6]

А если не секрет, как сделать, чтобы заработала такая конструкция:

TButton *Btn = (TButton *)Sender;

А насчет умных книжек все не так просто. Есть только Архангельский по Builder 6, но его изучать всерьез я почему-то опасаюсь. И уж конечно, она не относится к разряду "умных".


 
Zeqfreed ©   (2006-10-12 22:25) [7]

> [6] Loginov Dmitry ©   (12.10.06 22:18)

А не работает?


 
Loginov Dmitry ©   (2006-10-12 22:29) [8]

Zeqfreed ©   (12.10.06 22:25) [7]
А не работает?


Когда писал [6] не работала. Выдавала какой-то Error (жаль текст не запомнил).

Сейчас работает. Чудеса!!!

P.S. Не повторяйте моих ошибок (не работайте с Билдером :)


 
Axis_of_Evil ©   (2006-10-12 22:31) [9]

>Вот спасиба! О такой комбинации закоручек я и не догадывался
вполне логичная с точки зрения С++ комбинация.
если работаем с указателем -> нужно явно это и указывать.
// "PNode.Next" vs "PNode^.Next"

т.е. явно приводить к типу TButton* переменную Sender.
// с одной стороны все весьма логично, с другой - такая гадость ..


 
Zeqfreed ©   (2006-10-12 22:32) [10]

> [8] Loginov Dmitry ©   (12.10.06 22:29)


> P.S. Не повторяйте моих ошибок (не работайте с Билдером
> :)

Зачем билдер, когда есть mingw-gcc?


 
guav ©   (2006-10-12 22:44) [11]

а эта... dynamic_cast в нём что-ли нет ?


 
Axis_of_Evil ©   (2006-10-12 22:48) [12]

>а эта... dynamic_cast в нём что-ли нет ?
должен быть. dynamic_cast, если не ошибаюсь, - проверяет корректность приведения. тут же мы вполне уверены.


 
guav ©   (2006-10-12 22:52) [13]

> dynamic_cast, если не ошибаюсь, - проверяет корректность
> приведения. тут же мы вполне уверены.

Я предпочитаю во всех обработчиках писать as. Чтобы если уж и оказался не тот объект в обработчике, чтобы сразу это отловить.


 
Axis_of_Evil ©   (2006-10-12 22:55) [14]

>Я предпочитаю во всех обработчиках писать as. Чтобы если уж и оказался не тот объект в обработчике, чтобы сразу это отловить.
согласен, спору нет.


 
Loginov Dmitry ©   (2006-10-12 23:37) [15]

Axis_of_Evil ©   (12.10.06 22:31) [9]
с другой - такая гадость


Да тут одни гадости со всех сторон. Уже пол-часа ищу, как заставить работать функцию StringReplace. Пока что непробиваемо. Эх и поизвращались борландовцы с эмуляцией множеств...

А вообще интересно сделали - все стандартные библиотеки находятся в обычных Дельфовых DCU-шках. Только для каждой DCU идет в комплекте интерфейсный файл *.hpp. Писали бы только все это для людей, а не для забавы ради, могло бы че-нибудь неплохое получиться, а так... Кавно.


 
Loginov Dmitry ©   (2006-10-12 23:44) [16]

Ура!!! Нашел-таки нужную комбинацию закорючек:


 TReplaceFlags A;
 A << rfReplaceAll;
 ShowMessage(StringReplace("_a_a", "_", "b", A));


 
Alexis ©   (2006-10-13 01:31) [17]

TButton *Btn =  dynamic_cast<TButton *>(Sender);


> P.S. Не повторяйте моих ошибок (не работайте с Билдером
> :)

Успешно работаем с Билдером не один год. Все дело в руках :)


> P.S. Все-таки работа с указателями в С++ по сравнению в
> Дельфи - атстой. Имхо

Не зная языка, не стоит его хаять. Имхо


 
Loginov Dmitry ©   (2006-10-13 07:46) [18]

Alexis ©   (13.10.06 1:31) [17]
Успешно работаем с Билдером не один год


Ну и флаг в руки :))

Alexis ©   (13.10.06 1:31) [17]
Не зная языка, не стоит его хаять.


Да его и знать-то нечего :))
Серьезных недостатков 2:
глюченность - глючит все: редактор кода, среда. Вылетает - регулярно (Build 10.157).
Во-вторых - очень мало примеров во встроенной справке.

Зато есть и достоинство Билдера: на нем можно (не знаю насколько успешно) программировать, не имея особого представления о языке C++. Вот я так и зажигаю :))


 
Карелин Артем ©   (2006-10-13 08:02) [19]


> Зато есть и достоинство Билдера: на нем можно (не знаю насколько
> успешно) программировать, не имея особого представления
> о языке C++. Вот я так и зажигаю :))

Сомнительное достоинство!


 
Axis_of_Evil ©   (2006-10-13 08:30) [20]

Alexis ©   (13.10.06 01:31) [17]
>Не зная языка, не стоит его хаять. Имхо

можно и зная:>
a = b+++++c++;


 
wicked ©   (2006-10-13 10:33) [21]

> Loginov Dmitry ©  
без того, чтобы не прочитать о
> (TButton *)Sender
либо о
> dynamic_cast<>
можно успешно забыть о программировании на си++

> Выдавала какой-то Error (жаль текст не запомнил).

а после этого можно забыть о программировании вообще


>  TReplaceFlags A;
>  A << rfReplaceAll;
>  ShowMessage(StringReplace("_a_a", "_", "b", A));

ShowMessage(StringReplace("_a_a", "_", "b", TReplaceFlags() << rfReplaceAll));


> Зато есть и достоинство Билдера: на нем можно (не знаю насколько
> успешно) программировать, не имея особого представления
> о языке C++.
в равной степени это утверждение было бы справедливо и в отношении к делфи, при замене соответствующих слов
так ли это - прилетят борцуны и расскажут :)


 
Loginov Dmitry ©   (2006-10-13 12:10) [22]

> ShowMessage(StringReplace("_a_a", "_", "b", TReplaceFlags()
> << rfReplaceAll));


Фокусник!

:))


 
Игорь Шевченко ©   (2006-10-13 12:22) [23]


> Есть только Архангельский по Builder 6


Выброси


 
wl ©   (2006-10-13 17:16) [24]

кстати да, зная делфи, перейти на бс++ гораааздо проще (vcl один и тот же), чем, к примеру, на MS VC++ (с mfc)


 
Loginov Dmitry ©   (2006-10-14 09:51) [25]

Игорь Шевченко ©   (13.10.06 12:22) [23]
Выброси


Давно бы выбросил, да вот больше нечего использовать в качестве гантели :))

wl ©   (13.10.06 17:16) [24]
кстати да, зная делфи, перейти на бс++ гораааздо проще


Лучше не переходить на него вовсе. Переходить нужно на NET (мне на работе сказали, что он рулит :))



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

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

Наверх




Память: 0.53 MB
Время: 0.076 c
15-1160248027
kaif
2006-10-07 23:07
2006.11.05
В какой из передач лучший юмор на Ваш взгляд?


11-1137519814
Vladimir Kladov
2006-01-17 20:43
2006.11.05
ProjMover


2-1161340156
Gloomer
2006-10-20 14:29
2006.11.05
Как узнать текущий часовой пояс, установленный на компьютере


2-1161344478
Виктор1111
2006-10-20 15:41
2006.11.05
Аналог db 0 dup(2000)


15-1160559240
ANB
2006-10-11 13:34
2006.11.05
Меня тошнит от НТВ