Показать сообщение отдельно
Старый 08.05.2010, 17:08   #1
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Сообщение Написание DLL в Delphi для Blitz3D

Пробую делать Dll для Blitz3D на Delphi 7.
Первые тормоза появились при передачи обработанного текста из DLL-ки в программу Blitz3D.

Пишу на Delphi 7 (Pascal) - потому что мне пока здесь удобно.

library Delphi;

uses
    SysUtils
,
    
Classes;

{
$R *.res}

function 
npumep(S:string):string// <-------  В СКОБКАХ () ВОЗМОЖНО БЕЗ НИЧЕГО
begin
    Result
:='Blitz3D npuBeT u3 Delphi 7';
end;

exports npumep;

begin
end

Скомпилировал Delphi.dll
Создал Delphi.decls
.lib "Delphi.dll"
npumep$():"npumep" 
Закинул эти файлы в папку Userlibs. (т.е. куда и надо)

Создал пример-программу Delphi.bb
Graphics3D 800,600,32,2
MyText
$=npumep$ ();        <-------  БЕЗ СКОБОК ПУСТОСО СКОБКАМИ () ОШИБКА
Repeat
    Text 10
,10,"!!! "+MyText$+" !!!"
    
Flip
Until KeyHit
(1)=True 
В итоге выхожит ошибка | Memory access violation |.
Возможно где-то пустота или потеря данных
А может не совместимость String

При попытках где-то добавить или убрать текст$ в скобках, или приписать $ - получается пустой текст..

С Integer всё нормально передаётся.

function npumep():Integer;
begin
    Result
:=2010;
end
npumep%():"npumep" 
MyText=npumep()
Text 10,10,"!!! "+Str(MyText)+" !!!" 
Возможно в stringах обходимости совсем нет и обойти это можно. Но в данный момент мне нужно передать текст.
(Offline)
 
Ответить с цитированием