![]() |
Написание DLL в Delphi для Blitz3D
Пробую делать Dll для Blitz3D на Delphi 7.
Первые тормоза появились при передачи обработанного текста из DLL-ки в программу Blitz3D. Пишу на Delphi 7 (Pascal) - потому что мне пока здесь удобно. PHP код:
Создал Delphi.decls PHP код:
Создал пример-программу Delphi.bb PHP код:
Возможно где-то пустота или потеря данных :dontknow: А может не совместимость String При попытках где-то добавить или убрать текст$ в скобках, или приписать $ - получается пустой текст.. С Integer всё нормально передаётся. PHP код:
PHP код:
PHP код:
|
Ответ: Написание DLL в Delphi для Blitz3D
PHP код:
Дело в том что делфийский String это щачло карпа которое понимает только Delphi. А везде принято использовать PChar тоесть грубо массив символов. |
Ответ: Написание DLL в Delphi для Blitz3D
И ещё вопрос:
если я к Dll-ке в Цитата:
Нужно ли будет к проекту докладывать Dll-ки от тех утилит? Например Indy. Цитата:
|
Ответ: Написание DLL в Delphi для Blitz3D
Всё что пожелаешь. Можешь к dll ещё Dll приделать если очень хочется.
|
Ответ: Написание DLL в Delphi для Blitz3D
Вложений: 1
Попробуй библиотеку из архива.
Имя функции такое же, т. е. npumep() В скобках функции ничего не передавать! |
Ответ: Написание DLL в Delphi для Blitz3D
"Например Indy"
C Indy дополнитеьных dll с проектом тоскать не нужно будет, но спешу огорчить многие события Indy (сети точно) не будут работать в dll (как минимум мне не удалось заставить их работать). |
Ответ: Написание DLL в Delphi для Blitz3D
Слушайте, а если я в длл для Блица опишу команды создания кнопок(и т.д.), кторые входят в команды Delphi, Блиц будет создавать мне кнопки?
|
Ответ: Написание DLL в Delphi для Blitz3D
Цитата:
|
Ответ: Написание DLL в Delphi для Blitz3D
В функцию ты должен будешь ещё передавать хендл окна.
( SystemProprty("AppHWND") ) И да. TButton тут не прокатит. Тебе нужно будет использовать чистый WinApi. Или создавать отдельное TForm окно, но это уже не интересно. |
Ответ: Написание DLL в Delphi для Blitz3D
Цитата:
|
Ответ: Написание DLL в Delphi для Blitz3D
Мне кажется, если будет установлен Graphics3D то не получится, даже с winapi скорее всего.
В таком случае наверно проще не делфи из под блица, а блиц из под делфи использовать (сдк). |
Ответ: Написание DLL в Delphi для Blitz3D
Проблема передачи данных (а так же текста) из Blitz3D в Delphi 7 и обратно.
Файл Delphi.bb Код:
Graphics3D 800,600,32,2 Код:
library DelphiText; Код:
.lib "DelphiText.dll" ![]() При завершении программы, когда с Blitz3d отправляешь данные на обработку в скобках: Код:
Graphics3D 800,600,32,2 ![]() Основная проблема - Delphi не возвращает принятое, а Blitz3D при отправке данных, после завершении программы, пишет об ошибке. А так же при пробе отправить integer 23423450 после обработке IntToStr()+'текст' - Blitz3D вообще как-то отобразил примерно "101021012 текст" |
Ответ: Написание DLL в Delphi для Blitz3D
Хм.. в общем чем дальше - тем больше проблем с этим будет..
Попробовал Indy, в итоге | Memory access violation | |
Ответ: Написание DLL в Delphi для Blitz3D
Цитата:
|
Ответ: Написание DLL в Delphi для Blitz3D
При изменении на function TextAdd(Text:PChar):PChar; в Blitz3D отображается такое:
![]() Я уже больше склоняюсь к такому пути: делать передачи данных через запись/чтение на файл out*.txt например... Но здесь ошибки будут при задержках записи и чтении И думаю - зачем с этим гемором связался :-D Но для текущего проекта это необходимо Вообще ошибка выходит при отправки данных в скобках, по decls такому Код:
npumep$(site%) : "npumep" Код:
MyText$=npumep(1) delphi.dll Код:
function npumep(x:integer):PChar; |
Ответ: Написание DLL в Delphi для Blitz3D
"делать передачи данных через запись/чтение на файл out*.txt например"
Делал такое, главное файл не закрывать, тогда все в кэше будет, дисковых операций не будет. Но это самый хреновый способ. Если уж на то пошло, то пусть по UDP общаются, так тоже делал, программа из 2-х exe`шников была, один на делфи другой на блице. Подумай над таким вариантом, т.к. если сеть будешь в dll выносить столкнешься еще с большики трудностями. Но если всетаки dll, передавай тогда строки побайтно. --- function npumep(x:integer):PChar; если не гоню, то блицевский integer в делфи longint (вроде так пишется) |
Ответ: Написание DLL в Delphi для Blitz3D
Вроде докапался что:
В Blitz3D int%() = у Delphi7 как Longint или Int64 В Delphi7 :Char = у Blitz3D как Chr(%) И перешёл я пока по пути CallDLL() |
Ответ: Написание DLL в Delphi для Blitz3D
инт в блитце - 4 байта, а не 64 бита
вторую строку не пропарсил |
Часовой пояс GMT +4, время: 08:24. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot