Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

[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;
Скачать: [xml.tar.bz2];

Наверх





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


15-1161154388
Prohodil Mimo
2006-10-18 10:53
2006.11.05
Можно ли убрать писк в UPSe?


15-1160521441
Moscow
2006-10-11 03:04
2006.11.05
Секундные пропадания напряжения в Москве У вас есть такое?


15-1160952282
AntiUser
2006-10-16 02:44
2006.11.05
Помогите правильно перевести на английский


15-1161194808
yura32
2006-10-18 22:06
2006.11.05
SQL+PHP





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