Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1348498746
jacksotnik
2012-09-24 18:59
2017.02.26
Вопрос по fastreport


2-1434957180
Djonik
2015-06-22 10:13
2017.02.26
idhttp json - авторизация qiwi


15-1458477503
MsGuns
2016-03-20 15:38
2017.02.26
Excel->MS SQL Server


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


1-1348336174
crossmark
2012-09-22 21:49
2017.02.26
странный поток





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский