这是PB中的代码,在DELPHI中怎么写?
string ls_bfr     
ls_bfr= space(40)

解决方案 »

  1.   

    var
      ls_bfr:stringls_bfr:=space;//这句看不明白..
      

  2.   

    var  S: array[0..79] of char;
    begin
      { Set to all spaces }
      FillChar(S, SizeOf(S), Ord(' '));
    end;
      

  3.   

    S := StringOfChar('A', 10);sets S to the string 'AAAAAAAAAA'.
      

  4.   

    上面2种,一种是填充字符数组,一种是填充 String
      

  5.   

    ls_bfr := StringOfChar(' ', 40);
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
      end;var
    ss:string;
      Form1: TForm1;
     Function  OpenPort( PortName:string; PortHandle:longint):longint;stdcall;far;External 'micro900.dll';
    Function ClosePort():longint;stdcall;far;External 'micro900.dll';
    Function   SelectPort ( PortHandle:longInt):longint;stdcall;far;External 'micro900.dll';
    Function   PowerOn() :longint;stdcall;far;External 'micro900.dll';
    Function    PowerOff()  :longint;stdcall;far;External 'micro900.dll';
    Function   CardChanged():longint;stdcall;far;External 'micro900.dll';
    Function   CardPresent(): longint;stdcall;far;External 'micro900.dll';
    Function   GetCardType( ATRBuffer:string):longint; stdcall;far;External 'micro900.dll';
    Function   Read_4442_NO_PB (  StartPos:longint;  NOB :longint;Bfr:pchar):longint; stdcall;far;External 'micro900.dll';implementation
    function  f_readcard ():string;//功能描述:从第33个字节开始读取数据,读取数据长度为40 bytes
    //返回值:读卡所得的字符串.有数据值--成功,空串--失败
    //-------------------------------------------
    //操作步骤:
    //1.上电
    //2.检查卡的状态及类型
    //3.读卡
    //4.下电
    //注意:失败后返回要下电操作,并释放串口
     var
     ll_result:longint;    //返回值
    ls_bfr :string;    //读卡缓冲变量
     ls_ATRbuffer:string;  //检验卡类型缓冲变量
     ll_startpos:longint;    //读卡开始点
     ll_nob:longint;         //读取数据长度
     ll_PortHandle :longint;
     ls_com :string;
     Buffer: pchar;
     ss:string;
     Moudle: THandle;
     Pfunc:TFarProc;
     s:array [0..40]of char  ;
    begin
    // ls_bfr:=space;
        FillChar(S, SizeOf(S), Ord(' '));
     //getmem(Buffer,40);  //预分配内存
    // getmem(buffer,4) ;    //预分配内存//初始化读卡器 ls_com := 'COM1';
           //  showmessage('1'); ll_result := OpenPort(ls_com, ll_PortHandle);
          //showmessage(inttostr(ll_porthandle));
           // If ll_result = 0 Then
           // exit    ;
    {if ll_porthandle =0 then showmessage('错误,无法初始化IC卡读写设备。发卡管理窗口将关闭!') else
    SelectPort(ll_PortHandle);      }//1.上电
    //showmessage('1');//SelectPort(ll_PortHandle);
    poweron()  ;
    //showmessage('2');
    //2.检查卡的状态及类型
    if cardpresent()<> 1 then
    begin
    showmessage('提示,没有IC卡在读写器内。')  ;
    poweroff() ;
    closeport() ;
    exit;
    end ;
    {if getcardtype(ls_atrbuffer) <> 2 then
    begin
    showmessage('错误,该卡不是横县医保卡。请用医保专用卡。') ;
    poweroff();
    closeport();
    exit;
    end ; }//3.读卡
    ll_result :=  Read_4442_NO_PB(33,40,s) ;//虚读一次  注:虚读的原因见相关文档
    ll_result :=  Read_4442_NO_PB(33,40,s); //实读
    ss:=ls_bfr;     //返回字符串
    poweroff();
    closeport() ;
    {if ll_result <> 0 then
    showmessage('提示,无法读取卡内信息。')  ;
       poweroff()  ;
    closeport() ;
    exit;       // 读卡失败返回空串
    end;  }
    //poweroff();
    //closeport() ;
    //ss:=ls_bfr;
    //showmessage(ls_bfr);     //返回字符串 end;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    f_readcard();
    showmessage(copy(ss,1,11));
    end;end.
    我的代码如下,运行到最后说地址出错,请大家在帮忙!