讀健保IC卡資料會產生Access Violation At Address 20202020 |
缺席
|
alex621013
一般會員 發表:1 回覆:4 積分:1 註冊:2005-05-01 發送簡訊給我 |
不知是哪裡出錯,
每個label都可以正常顯示資料,
都就是在最後會出現
Access Violation At Address 20202020
的訊息。
還請各位先進不吝賜教!
unit Main; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,StrUtils; type
TfmMain = class(TForm)
Button1: TButton;
Label1: TLabel;
Label19: TLabel;
Label2: TLabel;
Label16: TLabel;
Label3: TLabel;
Label18: TLabel;
Label5: TLabel;
Label15: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
fmMain: TfmMain; implementation Function csOpenCom(pcom:Integer):Integer stdcall;external 'cshis.dll';
Function hisGetRegisterBasic(pBuffer:PChar;var iBufferLen:Integer):Integer stdcall;external 'cshis.dll';
Function csCloseCom:Integer stdcall;external 'cshis.dll';
{$R *.dfm} procedure TfmMain.Button1Click(Sender: TObject);
var
err:Integer;
iBufferLen:Integer;
pBuffer:PChar;
begin
err:= csOpenCom(0);
if err <> 0 then
MessageDlg(IntToStr(err),mtError,[mbOK],-1);
iBufferLen := 78;
err := hisGetRegisterBasic(pBuffer, iBufferLen);
If err = 0 Then
begin
//基本資料段
//卡片號碼
Label19.Caption := MidStr(pBuffer, 1, 12);
//姓名
Label16.Caption := MidStr(pBuffer, 13, 20);
//身份證字號
Label18.Caption := MidStr(pBuffer, 33, 10);
//出生日期
Label15.Caption := MidStr(pBuffer, 43, 7);
end
else
MessageDlg(IntToStr(err),mtError,[mbOK],-1);
err:= csCloseCOm;
end;
end.
|
alex621013
一般會員 發表:1 回覆:4 積分:1 註冊:2005-05-01 發送簡訊給我 |
小弟已解決此問題,
就此結案。
沒想到竟在這麼不起眼的地方。 unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,StrUtils; type
TfmMain = class(TForm)
Button1: TButton;
Label1: TLabel;
Label19: TLabel;
Label2: TLabel;
Label16: TLabel;
Label3: TLabel;
Label18: TLabel;
Label5: TLabel;
Label15: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
fmMain: TfmMain; implementation Function csOpenCom(pcom:Integer):Integer stdcall;external 'cshis.dll';
Function hisGetRegisterBasic(pBuffer:PChar;var iBufferLen:Integer):Integer stdcall;external 'cshis.dll';
Function csCloseCom:Integer stdcall;external 'cshis.dll';
{$R *.dfm} procedure TfmMain.Button1Click(Sender: TObject);
var
err:Integer;
iBufferLen:Integer;
pBuffer:Array [0..78] of Char;// <-- 改這樣就可以了= =!
begin
err:= csOpenCom(0);
if err <> 0 then
MessageDlg(IntToStr(err),mtError,[mbOK],-1);
iBufferLen := 78;
err := hisGetRegisterBasic(pBuffer, iBufferLen);
If err = 0 Then
begin
//基本資料段
//卡片號碼
Label19.Caption := MidStr(pBuffer, 1, 12);
//姓名
Label16.Caption := MidStr(pBuffer, 13, 20);
//身份證字號
Label18.Caption := MidStr(pBuffer, 33, 10);
//出生日期
Label15.Caption := MidStr(pBuffer, 43, 7);
end
else
MessageDlg(IntToStr(err),mtError,[mbOK],-1);
err:= csCloseCOm;
end;
end.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |