Форум: "Прочее";
Текущий архив: 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