![]() |
|
![]() ![]() ![]() |
|
NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Здравствуйте! вопрос двоешника:
[BCC32 Error] script.hpp(245): E2231 Member SCRIPT::Message cannot be used without an object Возникает когда в статической функции класса, пытаюсь вызвать элементы этого самого класса.
Само собой код примерный, не думаю что будет вам удобно просматривать огрооооомный листинг того что там есть.... в общем набросал саму суть. На названия и прочее не обращайте внимание могут быть ошибки и не совпадения (лень проверять). Заранее благодарю за ответы и помощ ![]() ![]() Это сообщение отредактировал(а) NYX - 19.4.2010, 18:46 --------------------
'long long long' is too long for GC |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
||||
|
||||
NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Да это оно понятно
![]() ![]() ![]() Это сообщение отредактировал(а) NYX - 19.4.2010, 18:45 --------------------
'long long long' is too long for GC |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
NYX, просто создать еще один аргумент - ссылку на объект данного класса.
|
|||
|
||||
NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
А передача аргументов в поток? При попытке отправить в DWORD инициатора потока ДЕСКРИПТОР на объект, опять же возникает ошибка, что мол невозможно привести CLASS_OBJECT к unsigned long :(
--------------------
'long long long' is too long for GC |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
||||
|
||||
NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
WIN APIшный Createthread где в виде аргументов используется указатель на функцию потока и указатель на DWORD аргумент. Это единственное что я могу передать в функцию потока :(
--------------------
'long long long' is too long for GC |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
NYX, к DWORD можно привести любой указатель с помощью обычной операции приведения типа.
Можно текущий объект класса (DWORD)(this). |
|||
|
||||
NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
[BCC32 Error] script.hpp(329): E2031 Cannot cast from 'SCRIPT' to 'unsigned long'
и тут же [BCC32 Error] script.hpp(332): E2034 Cannot convert 'unsigned long (__stdcall *)(SCRIPT *)' to 'unsigned long (__stdcall *)(void *)' Это сообщение отредактировал(а) NYX - 19.4.2010, 19:10 --------------------
'long long long' is too long for GC |
|||
|
||||
ИванМ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
Я говорил про указатель, а не объект.
Код покажите, что вы там передаете. |
||||
|
|||||
NYX |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Вот так работает
Вот так не хочет работать... пишет что невозможно привести unsigned long к void ![]() [BCC32 Error] File1.cpp(24): E2034 Cannot convert 'unsigned long (__stdcall *)(unsigned long &)' to 'unsigned long (__stdcall *)(void *)' и [BCC32 Error] File1.cpp(24): E2342 Type mismatch in parameter 'lpStartAddress' (wanted 'unsigned long (__stdcall *)(void *)', got 'unsigned long (__stdcall *)(unsigned long &)')
P.S. - код уже раз 50 в этом месте менялся, счас делаю в отдельном проекте, что бы не листать на пол экрана.... тут в функция вне класса, но смысл думаю не меняется... --------------------
'long long long' is too long for GC |
||||
|
|||||
NYX |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
LPVOID
Указатель на любой тип. Этот тип объявлен в Windef.h как показано ниже: typedef void *LPVOID; Один фиг не вкурю :( Никогда не пользовался такими указателями :( Ну передал я указатель на объект... а далее... как его к чеему приводить что бы можно было обращаться... блин голова опухла и уже не соображаю. Хрень какая то :( Вот так блин работает!
А вот так блин не работает :( Компилятор не ругается, запускат все гуд! Но результат 0!
Это сообщение отредактировал(а) NYX - 20.4.2010, 12:14 --------------------
'long long long' is too long for GC |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Все должно работать. Поставь Sleep(1000) после CreateThread
|
|||
|
||||
NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
ставил задержки :(
В общем пришлось сделать глобальный массив указателей, куда конструктор класса пихает указатель на себя. В случае вызова функции потока, потоку передается номер экземпляра класса \ объекта, по которому из массива извлекаю указатель, который и используется в дальнейшем в функции. Хотя эт конечно для моего случая не обязательно, ибо функция потока один фиг запускается не более чем в одном экземпляре... так что необходимости в привязке к классу нет ![]() ![]() Вот с передачей копии объекта или копии аргумента, проблем нет, а вот сам объект по ссылке не передается :( чуть позже начирикаю БРЕДНИ которые стали решением ))) ** ))) Тупая моя голова, я разрушаю класс прежде чем закрываю поток!!! В этом и вся беда!!!!!!! стало быть разрушается класс, методом которого является статическая функция потока, следовательно ... ... ...
В общем как то так.... Думаю больше 50 объектов просто не к чему будет ![]() Да и после удаления класса наобходимо отматать счетчик экземпляров на 1. ... Отнюдь! стала вылетать пристраннейшая ошибка приошибка! Каким то левым боком, ругается на оконную процедуру и ссылается на classes.h честн сказать вобще черт ногу сломит что там происходит. но вышеперечисленный код работает только на консоли. В окошечном приложении данное подобие кода провацирует кучу каких то невероятных ошибок. Поведение программы такое: Запускаю прогу, пинаю кнопочку РАБОТАЕТ! Все норм, все данные те что надо легко меняются и легко читаются... но как только стоит мне провести мышой по заголовку окна, ВСЕ нафиг слетает компилятор останавливается на цикле внутри потока O_O с чем это связано я представить себе даже не могу!!! К сведению - компилятор Embarcadero Code Gear RAD STUDIO триалка 2009 ... По последнему видать что то в компиляторе, так как на 6 BCB все работает превосходно. Тема закрыта ![]() Это сообщение отредактировал(а) NYX - 20.4.2010, 18:42 --------------------
'long long long' is too long for GC |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
У вас написан знатный бред. Вполне может и не работать. Обычная передача this в качестве параметра процедуре thread'а всегда работала на ура. Кстати, чем вас TThread не устроил? И еще кстати - вы в курсе, что выполнение thread'ов надо синхронизировать?
Добавлено через 1 минуту и 58 секунд Не верю! (с) Станиславский. Код с задержками в студию |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |