Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

передача данных в DLL   Найти похожие ветки 

 
StarCon   (2003-03-26 13:23) [0]

вот такой рекорд:
type
TNewAcctPoint = ^TNewAcct;
TNewAcct = packed record
name: array[0..9] of char;
end;
далее в коде:
var pNewAcct: TNewAcctPoint;
pNewAcct.name := "NEWACCT ";
и передаем этот рекорд в DLL
а в DLL вместо "NEWACCT " приходит " NEWADS" - почему?
тут уже говорили, что возможно зависит от выравнивания
как это можно изменить?


 
Digitman ©   (2003-03-26 13:39) [1]

var
pNewAcct: TNewAcctPoint;
New(pNewAcct); // !!!!
pNewAcct.name := "NEWACCT ";
...


 
StarCon   (2003-03-26 13:49) [2]

сделал:
New(pNewAcct);
pNewAcct^.name := "NEWACCT ";
результат остался без изменений :(


 
Digitman ©   (2003-03-26 13:52) [3]

давай-ка приводи полный код - вызываемый и вызывающий


 
Smithson ©   (2003-03-26 13:58) [4]

ShareMem при передаче строк в/из DLL


 
StarCon   (2003-03-26 14:02) [5]

полный код слишком велик - да и рекорды не маленькие..
вот описание функции из ДЛЛ:
function send_replica(replica: pointer; len: integer; name: pchar): integer; cdecl; varargs;
implementation
function send_replica(replica: pointer; len: integer; name: pchar): integer; external "ApiMgr20.dll";
сам рекорд я выше описал с тем различием, что данных в нем больше, очевидно происходит "наложение" составляющих рекорда друг на друга.
функция подробнее:
New(pNewAcct);
pNewAcct^.name := "NEWACCT ";
pNewAcct^.brnm := 001; // longint
pNewAcct^.ccy := "USD";
Ret := send_replica(pNewAcct, SizeOf(pNewAcct), UnitName);



 
StarCon   (2003-03-26 14:06) [6]

исходников ДЛЛ нет - есть пример работы с ней на с++


 
Digitman ©   (2003-03-26 14:13) [7]

Ret := send_replica(pNewAcct, SizeOf(pNewAcct^), UnitName);

как объявлен/инициализирован UnitName в вызыв.коде ?


 
StarCon   (2003-03-26 14:25) [8]

const
UnitName: pchar = pchar("416");


 
StarCon   (2003-03-26 14:40) [9]

кажется заработало после изменения SizeOf(pNewAcct^)
сейчас приведу все в порядок и хорошенько потестирую
вот что значит не уметь с указателями работать :)
огромное спасибо!


 
Digitman ©   (2003-03-26 14:43) [10]


> StarCon



> вот что значит не уметь с указателями работать


"эт точно.. " ..)

(С) Верещагин П.А., "Белое солнце пустыни"



Страницы: 1 вся ветка

Текущий архив: 2003.04.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-19645
Demon[DZ]
2003-03-25 18:14
2003.04.07
Помогите с BitBlt !!!


1-19666
Soft
2003-03-18 16:12
2003.04.07
Области видимости модулей или перезагрузка методов


3-19489
Солер
2003-03-19 16:05
2003.04.07
ADO капризнечает


3-19442
Scaramanga
2003-03-18 11:16
2003.04.07
Access и Delphi


6-19716
xrip
2003-02-13 22:17
2003.04.07
Надо написать прокси на один порт и хост.