vc相关定义
typedef struct tagTCardInfo
{
char sCard[21];
double cFee;
unsigned int dStart;
/*
struct dStart
{
int Year;
int Month;
int Day;
int Hour;
int Mintus;
int Seccond;
}
*/
char sName[21];
char sNo[19];
char SBarNo[21];
char sPwd[11];
char sRevers[21];
}TCardInfo;怎样在DELPHI中调用ReadCard函数extern "C" __declspec(dllexport) BOOL __stdcall ReadCard(TCardInfo *s)
{
char comport[2]="1";
unsigned char buf[10];
int i;
_itoa(1,comport,11);
if(!OpenPort(comport))
return GetLastError();
if(!ReadABuffer((unsigned char *)buf,11))
{
ClosePort();
return false;
}
// TCardInfo ss;
for (i=0;i<11;i++)
s->sCard[i] = buf[i];
s->sCard[11]='\0';
// s = &ss;
// AfxMessageBox("Read card",1,1); return true;
}delphi我这样定义的
function ReadCard( s: pointer): Boolean; stdcall; far; external 'carddll.dll';
运行是没错,但执行到ReadCard 函数是报错procedure TForm1.Button2Click(Sender: TObject);
var i: Integer;
// str: pointer; //array[0..30] of Char;
str:^TCardInfo;
begin
if ReadCard(str) then //执行到这里报错,通不过
edit1.Text :=str.sCard
else
MessageBox(Self.Handle, '下载服务器数据失败,请重新下载!', '警告', 16);
end;
typedef struct tagTCardInfo
{
char sCard[21];
double cFee;
unsigned int dStart;
/*
struct dStart
{
int Year;
int Month;
int Day;
int Hour;
int Mintus;
int Seccond;
}
*/
char sName[21];
char sNo[19];
char SBarNo[21];
char sPwd[11];
char sRevers[21];
}TCardInfo;怎样在DELPHI中调用ReadCard函数extern "C" __declspec(dllexport) BOOL __stdcall ReadCard(TCardInfo *s)
{
char comport[2]="1";
unsigned char buf[10];
int i;
_itoa(1,comport,11);
if(!OpenPort(comport))
return GetLastError();
if(!ReadABuffer((unsigned char *)buf,11))
{
ClosePort();
return false;
}
// TCardInfo ss;
for (i=0;i<11;i++)
s->sCard[i] = buf[i];
s->sCard[11]='\0';
// s = &ss;
// AfxMessageBox("Read card",1,1); return true;
}delphi我这样定义的
function ReadCard( s: pointer): Boolean; stdcall; far; external 'carddll.dll';
运行是没错,但执行到ReadCard 函数是报错procedure TForm1.Button2Click(Sender: TObject);
var i: Integer;
// str: pointer; //array[0..30] of Char;
str:^TCardInfo;
begin
if ReadCard(str) then //执行到这里报错,通不过
edit1.Text :=str.sCard
else
MessageBox(Self.Handle, '下载服务器数据失败,请重新下载!', '警告', 16);
end;
TCardInfo = record
sCard: array[0..20] of char; //卡号 chr(0) 结尾。
cFee: Currency; //余额
// dStart: TDateTime; //办卡时间
sName: array[0..20] of char; //用户姓名
sNo: array[0..18] of char; //证件号码
sBarNo: array[0..20] of char; //办卡网吧ID
sPwd: array[0..10] of char; //网吧密码
sRevers: array[0..20] of char; //保留字段
end;
B:function ReadCard( s: TCardInfo): Boolean; stdcall; far; external 'carddll.dll';
请问为什么要这们写啊,LongBool (*Boolean*); 不太明白,谢谢