急救!
错误信息如下:
Error] SPCOM.pas(39): Published property 'Buffer' cannot be of type POINTER
[Error] SPCOM.pas(54): Undeclared identifier: 'CommPort'
[Error] SPCOM.pas(55): Undeclared identifier: 'hCommFile'
[Warning] SPCOM.pas(61): Comparison always evaluates to False
[Error] SPCOM.pas(86): Undeclared identifier: 'Buffer'
[Error] SPCOM.pas(86): '(' expected but ')' found
[Error] SPCOM.pas(87): Incompatible types
[Error] SPCOM.pas(87): Undeclared identifier: 'hCommFile'
[Error] SPCOM.pas(92): '(' expected but '<=' found
代码如下:
unit SPCOM;interfaceuses
  SysUtils, Classes, Controls,Windows,Messages,Dialogs;type
  TSPCOM = class(TComponent)
  private
    { Private declarations }
    {以下为定义属性}
    FCommPort:String;     //操作端口
    FhCommFile:THandle;  //程序消息手柄
    FBuffer:PCommConfig; //端口数据缓冲区
    FSize:LongWORD;         //读取数据大小
  protected
    { Protected declarations }
  public
    { Public declarations }
    function SetupCom(pvar:Byte):boolean;   //设置串口
    function CloseCom():boolean;              //关闭串口
    function BeepOne(IBeepTime:Byte):Boolean;       //读卡器蜂鸣
    function Bright(BrightTime:longint):Boolean;       //发光管闪亮
    function Verity(AB:char;Block:Byte;CardNum:Longint):Boolean; //验证密码
    function FindCard(Mode:Byte;data:DWORD):Boolean;  //寻卡
    function TestCom():boolean;                         //测试通信
    function CloseCard():boolean;                       //关闭卡片
    function WriteCard(block:Byte;data:DWORD):boolean;         //写卡
    function ReadCard(block:Byte;data:DWORD):boolean;          //读卡
    function CloseAwoke(OperationType:Byte):boolean;      //关闭和环形射频电路
    function  DownPassword(AB:char;Section:Byte;PassWord:DWORD):boolean;
     //下载密码  published
    { Published declarations }
    property CommPort:String read FCommPort write FCommPort;
    property hCommFile:THandle read FhCommFile write FhCommFile;
    property Buffer:PCommConfig read FBuffer write FBuffer;
    property Size:DWORD read FSize write FSize;  end;procedure Register;implementation    function SetupCom(pvar:Byte):boolean;   //设置串口
    var
     lpdcb:Tdcb;
    begin
       if (pvar>0) and (pvar<5) then
       begin
           CommPort:='COM'+IntToStr(pvar);
           hCommFile:=createfile(PChar(CommPort),generic_read or generic_write,
                                 0,
                                 Nil,
                                 open_existing,
                                 file_attribute_normal or file_flag_overlapped,
                                 0);            //打开串口
           if hCommFile=invalid_handle_value then
           begin
               ShowMessage('不能打开串口'+CommPort+'!');
               exit;
           end           else
           begin //设置串口
              SetupComm(hCommFile,4096,4096);
              GetCommState(hCommFile,lpdcb);
              lpdcb.BaudRate:=19200;
              lpdcb.StopBits:=1;
              lpdcb.ByteSize:=8;
              lpdcb.Parity:=NoParity;
              SetCommState(hCommFile,lpdcb);
              SetCommMask(hCommFile,Ev_RxChar or Ev_TxEmpty);
           end;
       end       else
           ShowMessage('没有这个串口!');
    end;    function CloseCom():boolean;              //关闭串口
    begin
        FreeMem(Buffer,Size);
        CloseHandle(hCommFile);
    end;

解决方案 »

  1.   

    看出一点语法问题,但是恐怕不是全部原因
    (因为没有在家里,这里没有delphi)implementation    function TSPCOM.SetupCom(pvar:Byte):boolean;   //加上类名
        ...........    function TSPCOM.CloseCom():boolean;              //加上类名
       .........其他的我也看不懂
      

  2.   

    我已经找到其他的解决方案, lextm(LeLe)说得对,是少了类名。所以结贴先。