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

Вниз

Импорт ф-ции из библиотеки, где параметр указатель на структуру   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.004 c
1-1348336174
crossmark
2012-09-22 21:49
2017.02.26
странный поток


2-1434709662
Дмитрий
2015-06-19 13:27
2017.02.26
обмен приложения с сервером mySQL


15-1458564457
ttUser
2016-03-21 15:47
2017.02.26
Как сделать, чтобы TTouchKeyboard не получала фокус


15-1458595804
Юрий
2016-03-22 00:30
2017.02.26
С днем рождения ! 22 марта 2016 вторник


2-1435144825
shadow
2015-06-24 14:20
2017.02.26
RichEdit: Загрузка из rtf-файла только текста