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

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

热度:106   发布时间:2016-04-29 05:49:29.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)

如果用的数……


朋友,自己先去了解知识,注意手德。

关于C/c++和PowerScript的类型对照可以去参考PB的帮助文档。
虽然一般都约定为int指16位,long指32位。但是由于不同平台上的的兼容性问题,因为各个平台提供的基本数据类型的长度是有可能不同的,如int型,有些平台是16位,有些平台是32位。
sizeof(int)结果只是针对具体平台而已,没有通用性。
等宽就行,这点的确是正确的。

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

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

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