Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Внизпередача данных в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c