purebasic.info

PureBasic forum
Текущее время: Вт дек 11, 2018 12:18 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Чт май 16, 2013 3:46 pm 
Не в сети
студент

Зарегистрирован: Чт ноя 24, 2011 10:31 pm
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Добрый день.
Кто подскажет как правильно написать DLL ,чтобы перенести функцию из старой версии в новую.В новой версии её вообще нет.
Функция:
ParticleEmitterLocate(204,\Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed)

Написал так.

Global *strin,*strin2,*strin3,*strin4
ProcedureDLL AttachProcess(Instance.l)
Global MyFloat.f =ParticleEmitterLocate(*strin,*strin2,*strin3,*strin4)
EndProcedure


ProcedureDLL.l GetParticle(*strin,*strin2,*strin3,*strin4)
ProcedureReturn @MyFloat
EndProcedure

Собрал в PB461 + TailBite.Скопировал в новую версию PB511 .
Запустил.
В место функции.
ParticleEmitterLocate(204,\Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed)

Пишу так
GetParticle(204,\Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed)

вернуло адрес ,а эфектов нет.Как???


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 16, 2013 4:00 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Зачем нужен адрес переменной?
Проще передать ее как обычно.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 16, 2013 4:56 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Так если адрес вернуло, значит эффект есть :wink:

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт май 16, 2013 5:59 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 16 раз.
Пункты репутации: 10
dnobgt@ писал(а):
Пишу так
GetParticle(204,\Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed)

вернуло адрес ,а эфектов нет.Как???

А хде вызов AttachProcess()? Оно тебе вернуло адрес пустой переменной. После вызова GetParticle(204,\Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed) посмотри что в MyFloat
Код:
1
2
ShowMemoryViewer(@MyFloat, SizeOf(Float))
CallDebugger


_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 16, 2013 6:09 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
lakomet писал(а):
А хде вызов AttachProcess()?
Цитата:
To handle that, it's possible to declare 4 special procedures called: AttachProcess(Instance), DetachProcess(Instance), AttachThread(Instance) and DetachThread(Instance). This means than these 4 procedures names are reserved and can't be used by the programmer for other purposes.
http://purebasic.com/documentation/reference/dll.html

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 17, 2013 3:00 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 16 раз.
Пункты репутации: 10
Пётр
Понял. Тогда наверное нужно в библиотеке(именно в библиотеке, при её создании) вызывать всякие InitSprite() и т.д. и т. п., т.к. ParticleEmitterLocate() вроде из 3D?

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт май 17, 2013 3:04 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
lakomet писал(а):
ParticleEmitterLocate() вроде из 3D
Да. Его заменили на:
Цитата:
ParticleEmitterX
ParticleEmitterY
ParticleEmitterZ

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB