我有两个类 
TWaVeMSG=class
  ...
    WellID:string;
  public
    procedure OpearteMSg();
    ...
end;TWellInfo
  ...
  public 
   WellID
   Tablename:string
end;这两个类有聚合类,如
  TWellinfoList 假如在TWAVEMSG类的
  OpearteMSg();中使用Twellinfolist 中类的某个Twellinfo对象的 Tablename 根据WELLID去对应问题是,这几个都是在另一个模块中定义具体的对象的,根据数据库去生成这些对象,
那么,在定义OpearteMSg();这个TWELLINFO对象并没有定义,我如何解决这个问题,如果采用这样的方式OpearteMSg(AWellinfo:Twellinfo); 把这个对象做为一个参数引用,也可以解决,但还有更好的方法吗
  
  

解决方案 »

  1.   

    有没有办法这样实现:OpearteMSg(); 中
    根据自已的WELLID,调用程序中的Twellinfolist 对象的方法(例如是INDEXOF()),找到对应的TWELLINFO 对象
    然后,调用TWELLINFO 对象的方法,如果象我上面的解决方案,
    要在主程序中,先找到这个TWELLINFO的对象
    然后将对象作为OpearteMSg(); 中的参数,
      

  2.   

    楼主:
    “有没有办法这样实现:OpearteMSg(); 中 
    根据自已的WELLID,调用程序中的Twellinfolist 对象的方法(例如是INDEXOF()),找到对应的TWELLINFO 对象 
    然后,调用TWELLINFO 对象的方法”
    上面的方法是可以的,Twellinfolist 里定义几个方法能够通过WELLID来找到TWELLINFO对象就可以。
      

  3.   

    楼上的,如何实现,在TWellinfolist 对象找TWEELINFO 很容易
    但是在TWaVeMSG.OpearteMSg(); 的定义中,如何去找这个TWellinfolist 对象呢,因为在定义的时候,Twellinfolist这个类是定义了,但是还没有对象啊
      

  4.   

    看不太明白...我一般用 TList 来解决这些麻烦问题.只要定义一个 record
      

  5.   

    看不懂...都不知道这几类干什么的建议楼主:
    1. 想想每个类的职责是什么,之间怎么交互
    2. 看看《Applying UML & Patterns》和《PEAA》
      

  6.   

    设计不必如此复杂;可以这样解决;目前已知你能找到WELLID这个变量;首先定义好类;
    重载一个Create()方法;
    比如:
    Twellinfo.Create(_ID:integer);override;
    begin
    inhertied create;
    //然后从数据库创建对象;
    SqlText := Format('select aid,aname from A where aid=%d',[_ID]);
    with qry do
    begin
      close;
      sql.clear;
    sql.add(SqlText);
    open;
    if not isEmpty then
    begin
      id := _ID;
      TableName := FieldByName('TableName').AsString;
    ...
    end;end;//当你到达需要处理这个变量时;
    可以定义一个实例;
    Var
    wellinfo:Twellinfo;
    begin
      WeelInfo := TWellInfo.create(id);
      ....
    wellinfo.Free;
    end;如果你能将代码贴出来就最好了。以上仅供参考!
      

  7.   

    >>如何实现,在TWellinfolist 对象找TWEELINFO 很容易 
    但是在TWaVeMSG.OpearteMSg(); 的定义中,如何去找这个TWellinfolist 对象呢,因为在定义的时候,Twellinfolist这个类是定义了,但是还没有对象啊始终,你需要传递一个变量过去的,无论是Twellinfolist 还是 TWEELINFO 
    当然可以做成全局的对象,看实际情况了
      

  8.   

    因为我是先定义好需要的类,然后再在程序中,引用这些类,的对象,但这样在写类的时候就出现一个问题,这些类的方法中需要使用某些其它类的对象,
    而我还没有开始定义这些对象,只是定义了相关的类,我原来想这么设计,在程序中先定义一个全局对象TLIST,存储指针,和类名
    那么在创建每个对象时,都把自已的类名和指针写到这个LIST当中
    这样,在类中,要用其它类的对象时,就不用考虑这个对象是否存在,而是直接去这个TLIST中去查找指针,根据指针找到已有的对象,再根据匹配的方式,确定具体引用的对象,
    这样写类的时候,就不用考虑具体的对象这样的细节了但是这样我觉得还是不彻底,因为还是用了一个全局对象,TLIST
      这样,如果我把这些类封装之后,给其它人的程序用,就不太方便,所以,我想应当有更好的机制实现这个问题,