![]() |
пример
Помогите плиз
в Блитце есть тип Type a Field x Fiels y Fiels z End Type Скажите как мне передать в ДЛЛ этот тип, в ДЛЛке допустим назначить новые значения поля объектам этого типа и вернуть все в блитц Или например: в блитце вызываем функцию из ДЛЛ DistanceCamera(PosCamX,PosCamY,PosCamZ), которая определяет нужно ли включать в тип и передавать в блитц данные об объектах Type'а а и только полученные объекты рендерить Если не трудно объясните на примере.. в коде...(BLITZ3D, c++) ДЛЛ хочу писать на с++ заранее спасибки за помощь... |
Re: пример
Самое простое - передать хендл типа - это будет адрес начала. далее расчитываешь смещения для переменных (см исследования МихаилаВ)
Просто в длл меняешь их значения и ничего возвращать не нужно |
Re: пример
Цитата:
|
Re: пример
Visual Studio:
Создаешь новый проект Win32 Dynamic-Link Library. Проект долджен быть пустым. После создания добавляешь cpp файл. В нем пишешь: [highlight=cpp] #define BLITZDECL extern "C" _declspec(dllexport) struct list { int a; float b; }; BLITZDECL void _stdcall DLLFunction(list* var) { var->a = var->a + 10; var->b = var->b - 0.6f; } [/highlight] BlitzBasic: [highlight=blitzbasic] Type TList Field int_val% Field float_val# End Type var.TList = New TList var\int_val = 5 var\float_val = 7.3 Print var\int_val Print var\float_val WaitKey() DLLFunction(var) Print var\int_val Print var\float_val WaitKey() Delete Each TList End [/highlight] decls-файл: Код:
.lib "dll.dll" |
Re: пример
спасибо... понял...но вытекает следующий вопрос...
получается список типа Tlist состоит из одного элемента, значение полей которого мы и меняем в длл...правильно... а как сделать так чтобы длл возвращала определенное кол-во элементов списка типа Tlist т.е. пример: в БД есть список игроков в кол-ве 2000 шт с определенными координатами дллка читает БД определяет колво игроков, находящихся на расстоянии 10 от камеры, и только эти игроки (например - 20) и должны быть отрендерены в блитце так вот как отдать из длл список типа Tlist нужного кол-ва ? мысль: зачем гонять список типа из 2000 элементов, если можно перебрать только 20? |
Re: пример
Цитата:
Если же хочется в DLL, то синхронизируй создание новых экземпляров типа в DLL и на Блице. Потом работай с элементами нужных тебе экземпляров в DLL и "посылай" их в Блиц. |
Re: пример
Цитата:
я то думал возможно наоборот в дллке получить из базы данных список, прогнать через условие и элементы, удовлетворящие условию, послать в блитц... а так, придется сначала через длл определять кол-во элементов а уже потом в цикле из длл работать с полями.... криво как-то |
Re: пример
Возможно все, если четко сформулировать задачу.
Если ты хочешь в Блиц послать только 20 элементов, то кто тебе мешает сделать это следующим образом: [highlight=blitzbasic] CallDllFunction() ;в этот момент происходит работа дллки с БД ... while DllResult() var.TList = New TList DLLFunction(var) wend [/highlight] Суть в том, что дллка подготавливает всю необходимую информацию. Допустим в результате вызова CallDllFunction() произошло считывание из БД, выборка результатов и занесение их в массив определенного пользователем типа. Код:
list* data[20]; [highlight=cpp] int result_num=0; [/highlight] Функция DllResult() возвращает значение result_num. [highlight=cpp] int DllResult() { return result_num; } [/highlight] А сама DLLFunction работает с текущим элементом. Код:
void DLLFunction(list* var) |
Re: пример
Цитата:
|
Re: пример
В MSDN ищи описания для: 1) malloc, realloc, free для С и 2) new, new[], delete, delete[] для C++.
|
Re: пример
Люди, помогите плиз....
Вот код... Блитц Код:
Const MAX%=10 Код:
#define B3DDLL extern "C" _declspec(dllexport) или я ерунду пытаюсь сделать? |
Re: пример
Во-первых, что это за безобразие?!
Цитата:
Part в проге на Блице. Оно-то структуру в длл изменит, но придется ухищрятся, чтобы получить необходимые x и y. А так, вообще, у меня на Блице выдает 2500 мс, а через DLL - 120 с чем-то :) |
Re: пример
Цитата:
или я неправильно опреатор использую? Цитата:
Цитата:
|
Re: пример
Цитата:
|
Re: пример
GoodWin
совет - сначала лутче научись на C++ прогать потом уже сойденение либ делай а то еще чисто философский цикл Код:
#define правда true |
Re: пример
Цитата:
взял бы пример сделал и выложил бы...а говорить, что кто-то чего-то не знает любой может.... P.S. Вопрос админам: а можно ли добавить на форум кнопочку -противоположную кнопке "Спасибо"? |
Re: пример
причем тут я
я могу написать на C++ многое но я никогда толком не писал либ для блица и тем более незнаю чего ты хочеш но базовые знания для программирования надо влюбом случае или ты тоже .. "хочу зделать страницу html, но без знаний етого html" не помню кто ... ps. без обид, чисто программиский взгляд |
Re: пример
Цитата:
Код:
Const MAX% = 10 Код:
#define BBDECL extern "C" _declspec(dllexport) |
Re: пример
Цитата:
невнимателен я стал..... |
Часовой пояс GMT +4, время: 21:45. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot