線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1388
推到 Plurk!
推到 Facebook!

讀取ic卡,如何將Buffer轉成String

尚未結案
wang000f
一般會員


發表:16
回覆:28
積分:8
註冊:2003-10-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-06 21:43:24 IP:211.72.xxx.xxx 未訂閱
unit dlldecl; interface type PAnsiString = ^AnsiString; PBYTE = ^BYTE; PInteger = ^Integer; PSmallInt = ^SmallInt; PDuration = ^Duration; Duration = {packed }record StartDate: array[0..6] of Byte; EndDate: array[0..6] of Byte; end; //基本資料 PBasicInfo = ^BasicInfo; BasicInfo = {packed }record CardNo: array[0..11] of Byte; Name: array[0..19] of Byte; ID : array[0..9] of Byte; end; {下面這段是我模仿上面所寫的,是可正確抓取,但我不知道這樣的寫法是否正確,因為還有好多的抓取值,是不是一直要這樣去定義呢?,可不可以不去定義就直接抓取呢?} //預防保健 PPreventInfo = ^PreventInfo; PreventInfo=Record Pre1: array[1..3] of Byte; Dat1: array[4..7] of byte; end; var p: BasicInfo; { 3.2.1 掛號或報到時讀取基本資料 } function hisGetRegisterBasic(Buffer: PByte; BufLen: PInteger): Integer; stdcall; { 3.3.1 預防保健掛號作業 } function hisGetRegisterPrevent(Buffer: PByte; BufLen: PInteger): Integer; stdcall;
wang000f
一般會員


發表:16
回覆:28
積分:8
註冊:2003-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-06 21:49:52 IP:211.72.xxx.xxx 未訂閱
procedure TForm1.btnReadCardClick(Sender: TObject); var Buffer: BasicInfo; Length: Integer; Res: Integer; i, LowIndex, HighIndex: Integer; sRetMsg: string; begin sRetMsg := ''; lblRetCode.Caption := sRetMsg; Length := sizeof(Buffer); Res := hisGetRegisterBasic(PByte(@Buffer), @Length); if Res = 0 then begin lblCardNo.Caption := GetFromBuffer(Buffer.CardNo); lblName.Caption := GetFromBuffer(Buffer.Name); lblIDNo.Caption := GetFromBuffer(Buffer.ID); lblBirthDay.Caption := GetFromBuffer(Buffer.BirthDay);
wang000f
一般會員


發表:16
回覆:28
積分:8
註冊:2003-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-07 21:04:13 IP:219.81.xxx.xxx 未訂閱
指標的部份現在實在找不到可供參考的資料, 事實上我是可模仿下面的方式照本宣科每個function均給他一組就解決了,但我不知道這樣的寫法在實際上線時,會不會出問題,因為我至少要建個20幾組,有沒有人可提供點建議呢? PBasicInfo = ^BasicInfo; BasicInfo = {packed }record CardNo: array[0..11] of Byte; Name: array[0..19] of Byte; ID : array[0..9] of Byte; end;
juantonia
一般會員


發表:14
回覆:12
積分:5
註冊:2003-07-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-08 10:32:52 IP:211.20.xxx.xxx 未訂閱
unit dlldecl; interface type PAnsiString = ^AnsiString; PBYTE = ^BYTE; PInteger = ^Integer; PSmallInt = ^SmallInt; PDuration = ^Duration; Duration = {packed }record StartDate: array[0..6] of Byte; EndDate: array[0..6] of Byte; end; RRegBasic = record CardNo : array[0..11] of Char; //卡片號碼 Name : array[0..19] of Char; //姓名 PersonID : array[0..9] of Char; //身份證字號 BirthDay : array[0..6] of Char; //生日 .. ... ... end; 在程式中 private _BufferLen,_RetNo: Integer; _CardNo,_Name,_PersonID,_Birthday:string; procedure TForm1.btnReadCardClick(Sender: TObject); var Buffer: RRegBasic; begin _BufferLen := Sizeof(Buffer); _RetNo := hisGetRegisterBasic(PByte(@Buffer), @_BufferLen); if _RetNo<>0 then begin ShowMessage('錯誤訊息'); exit; end; _CardNo :=Buffer.CardNo; _Name :=Trim(Buffer.Name); _PersonID :=Trim(Buffer.PersonID); _Birthday :=Trim(Buffer.BirthDay); .. .. end;
wang000f
一般會員


發表:16
回覆:28
積分:8
註冊:2003-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-12 15:10:25 IP:211.72.xxx.xxx 未訂閱
非常感謝您的幫忙! David Wang
系統時間:2024-05-19 13:42:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!