Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
3-19433
off
2003-03-18 14:30
2003.04.07
В IB есть такая приблуда


3-19482
Jaxtor
2003-03-19 17:29
2003.04.07
Invalid column reference


1-19530
Вадим
2003-03-26 16:15
2003.04.07
TRcihEdit


14-19803
NetBreaker666
2003-03-19 19:11
2003.04.07
Слабо ? В. Цой.


8-19708
iNew
2002-12-18 10:30
2003.04.07
Как проиграть wav файл через динамик?




   Наверх