当前位置: 代码迷 >> PB >> API中的结构怎样申明?该怎样声明定义?解决思路
  详细解决方案

API中的结构怎样申明?该怎样声明定义?解决思路

热度:91   发布时间:2016-04-29 08:47:22.0
API中的结构怎样申明?该怎样声明定义?
门锁函数给出的结构定义: VC的

typedef stryct_Cardinfo
{
  unsigned int Roomaddr;
  unsigned short isEmpty;
  unsigned short Year;
  unsigned short Mon;
  unsigned short Day;
  unsigned short Hour;
  unsigned short Num;
  unsigned short ExpireMode;
  unsigned short ExpireValue;
  unsigned short isDisable;
  unsigned short Reserved1;
  unsigned short Reserved2;
  unsigned short Reserved3;
}Cardinfo, *LPCardinfo

函数为:
int ReadGuestCardInfo(const char * PortName,CardInfo * Plnfo);


这种结构在PB中该怎么声明阿? 实在不会,希望各位能帮助.

------解决方案--------------------
function Ulong ReadGuestCardInfo(ref string PortName,ref structure Plnfo) library "xxxx.dll"

------解决方案--------------------
结构用Pb中的结构对象定义即可
$PBExportHeader$us_cardinfo.srs
global type us_cardinfo from structure
ulong Roomaddruint
uint isEmpty
uint Year
uint Mon
uint Day
uint Hour
uint Num
uint ExpireMode
uint ExpireValue
uint isDisable
uint Reserved1
uint Reserved2
uint Reserved3
end type
然后定义外部函数
function long ReadGuestCardInfo(ref string PortName,ref us_cardinfo Plnfo) library "xxxx.dll"

------解决方案--------------------
PB不支持指针。
把结构转成字符串,然后在PB中转成你需要的格式吧。
------解决方案--------------------
探讨
引用:
c/c++的 unsigned int 对应PB的UnsignedInt


睁眼乱说!
你sizeof(int)看看!

注意:
VC PB
int long
unsigned int ulong

反正是等宽就行了。

当然,对说原子类型,小一点也没有关系。如:

LONG WINAPI f(LONG L)

如果用的数……

------解决方案--------------------
但是由于不同平台上的的兼容性问题,因为各个平台提供的基本数据类型的长度是有可能不同的,如int型,有些平台是16位,有些平台是32位。

上面那位仁兄,这句话没有说错。

我可以肯定的告诉大家,VC2005,VC2008,还有WINDONS自带的API,的int 是32位四字节
  相关解决方案