Форум: "Основная";
Текущий архив: 2017.02.26;
Скачать: [xml.tar.bz2];
ВнизИмпорт ф-ции из библиотеки, где параметр указатель на структуру Найти похожие ветки
← →
sss (2012-09-24 03:49) [0]Добрый день!
на Си-------------------------------------------------#define CM24_NUMDEPCASSETTE 24
-----------------------------------------------
typedef struct SNOTECASSETTE // * Structure used in SCASH SDEP SWITH
{ // * for banknotes description
char CassName[2];
char Notetype[6];
int NumNote;
} SNOTECAS;
typedef struct SCASH
{
int InNumber;
SNOTECAS Types[CM24_NUMDEPCASSETTE*4];
} SCASSTAT;
typedef SCASSTAT *PCASSTAT;
написал на Delphi----------------------------
TSNOTECAS = record
CassName: array[1..50] of char;
Notetype: array[1..50] of char;
NumNote: Integer;
end;
SCASSTAT = record
InNumber: Integer;
SNOTECAS: array [1..110] of TSNOTECAS;
end;
type PCASSTAT = ^SCASSTAT;
......
......
var
dps_total: PCASSTAT;
......
New(dps_total);
code_total := InterDoTotalsDeposit(dps_total);
Dispose(dps_total);
Eror: ACCESS VIOLATION
Подскажите, что делаю не так?
← →
sss (2012-09-24 03:53) [1]Си *.h ----------------------
int APIENTRY InterDoTotalsDeposit(PCASSTAT);
-----------------------------
← →
bems © (2012-09-24 05:22) [2]размер массивов чаров не совпадает
также сишный char нужно заменить на AnsiChar
← →
КряКря (2012-09-24 05:35) [3]
const
CM24_NUMDEPCASSETTE = 24;
type
TSNOTECAS = packed record
CassName: array[0..1] of AnsiChar;
Notetype: array[0..5] of AnsiChar;
NumNote: longint;
end;
TSCASSTAT = packed record
inNumber: longint;
Types: array[0..CM24_NUMDEPCASSETTE * 4 - 1] of TSNOTECAS;
end;
PSCASSTAT = TSCASSTAT;
← →
sss (2012-09-24 07:26) [4]Спасибо за ответы.
Заменил код наconst
CM24_NUMDEPCASSETTE = 24;
type
TSNOTECAS = packed record
CassName: array[0..1] of AnsiChar;
Notetype: array[0..5] of AnsiChar;
NumNote: longint;
end;
TSCASSTAT = packed record
inNumber: longint;
Types: array[0..CM24_NUMDEPCASSETTE * 4 - 1] of TSNOTECAS;
end;
PSCASSTAT = TSCASSTAT;
...
var
dps_total: PSCASSTAT;
...
code_total := InterDoTotalsDeposit(dps_total);
Ошибка таже
← →
sss (2012-09-24 07:27) [5]Спасибо.
КряКря, ошибка не ушла.
← →
bems © (2012-09-24 07:28) [6]функцию сделай stdcall
← →
sss (2012-09-24 08:39) [7]ф-ция есть function InterDoTotalsDeposit (DepositCounters: PSCASSTAT): integer;stdcall;
← →
Dimka Maslov © (2012-09-24 11:09) [8]PSCASSTAT = ^TSCASSTAT;
или тогда
function InterDoTotalsDeposit(var DespositCounters: TSCASSTAT): Integer stdcall;
var
DepositCounters: TSCASSTAT;
InterDoTotalsDeposit(DepositCounters);
← →
КряКря (2012-09-24 11:21) [9]
> Dimka Maslov © (24.09.12 11:09) [8]
> PSCASSTAT = ^TSCASSTAT;
Да-да, совершенно верно. А то я опечатался... лоханулся, то есть)
← →
Dimka Maslov © (2012-09-24 11:50) [10]
> А то я опечатался... лоханулся, то есть
А автор, после копипасты мог бы и посмотреть, что он накопипастил.
← →
__ (2012-09-24 13:35) [11]> [0]
Ннн-да % понимаю еще Char =? AnsiChar, или там packed но
24 == 110
2 == 50
6 == 50
и это for banknotes description
sss, надеюсь код сугубо для личного использования ?
← →
sss (2012-09-25 08:05) [12]Спасибо, работает<B/>
← →
Dimka Maslov © (2012-09-25 10:33) [13]
> надеюсь код сугубо для личного использования
Нет, это для финансовых рынков. Одним кликом мышки 24 доллара становятся 110-ю. Впрочем, они и без программистов умеют так делать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2017.02.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c