![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли вернуть из DLL record? [D7, Win95/98, Win2k]
Adis Tadas © (2004-12-02 09:46:00)Здравствуйте, уважаемые специалисты !
Описал функцию DLL следующим образом:
TFr = function (var tar: TRc): integer ;
где:
TRc = record
sX: string ;
nY: integer ;
end ;
В программе вызываю эту функцию:
var
Foo: TFr ;
r: TRc ;
..
LoadLibrary('my.DLL');
Foo := GetProcAddress(Handle, 'FOO');
Foo (r);
FreeLibrary(Handle);
..
В DLL:
..
function FOO (var tar: TRc): integer ;
var
tar1: TRc ;
..
tar1 := tar ;
..
// что-нибудь делаю с tar1
tar1.sX := '..' ;
tar1.nY := 22 ;
..
// если в созданной форме нажали Ok
if (ModalResult=mrOk) then
tar := tar1 ; // т.е. возвращаем измененное значение tar
// иначе tar не меняется
>> но в этом месте (tar := tar1) выдается ошибка!
Скажите, в чем может быть дело ?
Заранее спасибо!
KSergey (2004-12-02 11:28:00) [1]> [4] Erik1 © (02.12.04 10:55)
> Или выкинь string и пользуйся String[10] а в DLL передавай
> указатель на Record.
Он и так указатель передает.
Erik1 (2004-12-02 10:55:00) [2]Или выкинь string и пользуйся String[10] а в DLL передавай указатель на Record.
PRC = ^TRc;
Var
r: TRc;
MyPtr: PRC;
begin
MyPtr := @r;
..
Foo(MyPtr);
А в Dll
function FOO(const tar: PRC): integer ;
tar.sX := '..';
Сколько на String выделить сам подумай, можно еще PChar использовать.
ghg (2004-12-02 10:26:00) [3]о как синхронно :))
Digitman (2004-12-02 09:59:00) [4]большущий комментарий в тексте dll-проекта читал ?
MBo (2004-12-02 09:59:00) [5]Нужно прочитать комментарий, который Delphi вставляет в начале при создании DLL