我想做一个类,应该如何声明  直接新建一个 unit.pas的文件,然后把类代码写在文件里吗?一个unit.pas可以写多个类的代码吗?
  我想重要一个card类,有属性
      cardnum
     cardtype  有方法:
   getCardType(cardnum)  根据cardnum返cardtype
    上面类的代码结构应该如何写,是像下面这样吗?type
  Card = class
  public
    class procedure getCardType(cardnum); virtual;
    ...
  end;class procedure Card.getCardType(cardnum);
begin
  
  ...
end;  

解决方案 »

  1.   

    unit U_classU;interface
    type
     TOperator=class
      id:integer;
      operatorId:string;
      operatorName:string;
      pwd:string;
      privilege:string;
      re:string;
    end;
    type
     Ttable=class
      id:integer;
      tableNO:integer;
      begintime:string;
      endtime:string;
      otherFee:real;
      allfee:real;
    end;
    implementationend.
      

  2.   

    type 
      Card = class 
      public 
        class procedure getCardType(cardnum);
      end; procedure Card.getCardType(cardnum); 
    begin 
      
    end; 
      

  3.   

    谢谢楼上两位,由于本人是昨天才开始搞delphi的,买书就来不及,delphi 7的帮助又是E文的。所以问东西都是很基础。综合两位的回答,我想代码应如下:
    unit Unit_PublicFun;interfacetype 
      Card = class
      cardNum:integer
      cardtype:integer
      public 
        class procedure getCardType(cardnum); 
      end; procedure Card.getCardType(cardnum); 
    begin 
      sql='select cardtype from card where cardnum='+cardnum+''
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sql);
      adoquery1.Open;
      cardtype=AdoQuery1.fieldbyname('cardtype').asinteger;
      ADOQuery1.Close;
    end; 
    implementationend.
    如果在其它代码需要查询cardtype值时,直接调用:
    cardnum:=1001
    tmpCardtype:=card.getCardtype(cardnum)
      

  4.   

    检你改一下
    Delphi(Pascal) codeunit Unit_PublicFun;interfacetype 
      Card = class
      cardNum:integer
      cardtype:integer
      public 
        class procedure getCardType(cardnum); 
      end; implementation
    //函数的定义应该放到这里
    procedure Card.getCardType(cardnum); 
    var
    sql:string;//因为你使用了变量,所以这儿要声明一下
    cardtype:integer;
    begin 
      sql='select cardtype from card where cardnum='+cardnum+''
    ADOQuery1.Close;//先关闭  
    ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sql);
      adoquery1.Open;
      cardtype=AdoQuery1.fieldbyname('cardtype').asinteger;//注意cardtype也没有定义哟
      
    end; 
    end.如果在其它代码需要查询cardtype值时,直接调用: 
    cardnum:=1001; 
    tmpCardtype:=card.getCardtype(cardnum) 
    //这儿是错误的,因为getCardtype是一个过程而不是一个函数,没有返回值,所以肯定要出错的
    要想当一个函数使用,应该重新作一下定义
    先在类里声明一下
    function getCardType(cardnum):integer;function Card.getCardType(cardnum):integer; 
    var
    sql:string;//因为你使用了变量,所以这儿要声明一下
    begin 
      sql='select cardtype from card where cardnum='+cardnum+''
    ADOQuery1.Close;//先关闭  
    ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sql);
      adoquery1.Open;
      result:=AdoQuery1.fieldbyname('cardtype').asinteger;//注意cardtype也没有定义哟 
    end; 
      

  5.   

    前面类已经定义了:procedure Card.getCardType(cardnum); 
    为什么还要在后面这么做?
    --
    要想当一个函数使用,应该重新作一下定义 
    先在类里声明一下 
    --这样的话,类方法getcardtype就感觉没有用上,那不如直接写个独立的函数。
    写类方法的目的就是方便在需要时直接调用。
      

  6.   

    楼主是从 JAVA 或是 C# 转过来的吧。
      

  7.   


    非了。  我不是编程的,我是技术支持,现在有个小程序是用delphi编写的,原来编写的人找不着了,临时客窜一下。