问题描述
定义FunctionEncodeInit(Parameter:Pointer):SmallInt;stdcall;external'HotelLock.dll';FunctionEncodeExit():SmallInt;stdcall;external'HotelLock.dll';{制宾客卡。}FunctionMakeGuestCard(Rom:Pointer;Pass:Pointer;Building:Smallint;Floor:Pointer;District:Pointer;Room:Pointer;enOverride:Smallint;FlatBit:Pointer;TimeWindow:Pointer;StartTime:Pointer;EndTime:Pointer):SmallInt;stdcall;external'HotelLock.dll';FunctionReadCard(Rom:Pointer;Pass:Pointer;Building:Pointer;Floor:Pointer;District:Pointer;Room:Pointer;enOverride:Pointer;FlagBit:Pointer;TimeWindow:Pointer;StartTime:Pointer;EndTime:Pointer):SmallInt;stdcall;external'HotelLock.dll';{清空卡片内容。Rom:卡号(返回值):smallint类型数组,长度为8}FunctionClearCardData(Rom:Pointer):SmallInt;stdcall;external'HotelLock.dll';事件(1)procedureTAPI_Demo.EncodeInit_BtClick(Sender:TObject);varParameter:array[0..255]ofchar;FunRet:smallint;beginLStrcpy(Parameter,Pchar(LockPath_Ed.Text));FunRet:=EncodeInit(@Parameter);ifFunRet<>1thenbeginMakeCardMsgBox(FunRet);exit;end;EncodeInit_Bt.Enabled:=False;EncodeGuestCard_Bt.Enabled:=True;ReadCard_Bt.Enabled:=True;ClearCard_Bt.Enabled:=True;EncodeExit_Bt.Enabled:=True;end;事件(2)procedureTAPI_Demo.EncodeGuestCard_BtClick(Sender:TObject);varLock_Make:TLock_Make;FunRet,i:smallint;EncodeDateTime:TDatetime;WordTime:array[0..6]ofword;begin//起始时间EncodeDateTime:=DateOf(SD_GQI_Dtp.DateTime)+TimeOf(ST_GQI_Dtp.DateTime);DecodeDatetime(EncodeDateTime,WordTime[0],WordTime[1],WordTime[2],WordTime[3],WordTime[4],WordTime[5],WordTime[6]);fori:=0to4doLock_Make.StartTime[i]:=smallint(WordTime[i]);//终止时间EncodeDateTime:=DateOf(ED_GQI_Dtp.DateTime)+TimeOf(ET_GQI_Dtp.DateTime);DecodeDatetime(EncodeDateTime,WordTime[0],WordTime[1],WordTime[2],WordTime[3],WordTime[4],WordTime[5],WordTime[6]);fori:=0to4doLock_Make.EndTime[i]:=smallint(WordTime[i]);//房号fori:=0to7do//清空房号信息,一张卡最多可以开4个独立的房门。Lock_Make.Room[i]:=0;Lock_Make.Room[0]:=se_Room1.Value;//挂失标志Lock_Make.enOverride:=1;//不覆盖旧卡(新卡旧卡可同时使用)//参数设置完毕,制卡FunRet:=MakeGuestCard(@Lock_Make.Rom,@Lock_Make.Pass,Lock_Make.Building,@Lock_Make.Floor,@Lock_Make.District,@Lock_Make.Room,Lock_Make.enOverride,@Lock_Make.FlagBit,@Lock_Make.TimeWindow,@Lock_Make.StartTime,@Lock_Make.EndTime);//显示制卡结果MakeCardMsgBox(FunRet);end;
解决方案
解决方案二:
就是把上面代码用vb或是c#解释一下?主要是指针这一块。
解决方案三:
比如像这个FunctionEncodeInit(Parameter:Pointer):SmallInt;stdcall;external'HotelLock.dll';在.net里定义时该用什么类型.
解决方案四:
[DllImport("HotelLock.dll",CallingConvention=CallingConvention.StdCall)]publicstaticexternshortEncodeInit(IntPtrpointer)
解决方案五:
delphi的这种定方法怎样转为C#Parameter:array[0..255]ofchar;
解决方案六:
procedureTAPI_Demo.EncodeInit_BtClick(Sender:TObject);varParameter:array[0..255]ofchar;FunRet:smallint;beginLStrcpy(Parameter,Pchar(LockPath_Ed.Text));FunRet:=EncodeInit(@Parameter);ifFunRet<>1thenbeginMakeCardMsgBox(FunRet);exit;end;这个怎么转为C#LStrcpy(Parameter,Pchar(LockPath_Ed.Text));
解决方案七:
大家帮帮忙啊。
解决方案八:
http://www.360doc.com/content/07/0405/11/2908_431505.shtml看看这个是否有帮助