TAddress是一个record类型的数据,里面的字段有street、city、state等,能不能给其中任意字段赋值,比如Person.address.city:='Shanghai'; (总是遇到left side cannot be assigned to).

解决方案 »

  1.   

    能不能给其中任意字段赋值// 當然可以呀总是遇到left side cannot be assigned to
    // 左值?? 你貼一下詳細代碼?
      

  2.   

    TPerson的Address属性是否设成只读?
      

  3.   

    数据类型:
    type 
      TAddress = record
        Company: string;
        Street: string;
        City: string;
        Province: string;
        Country: TCountry;
        ZipCode: string;
      end;TPerson类:
    type TPerson=class
        private
           m_Address:TAddress;
        published
           property Address: TAddress read m_Address write m_Address ; 
    end;实例:
       persen:=tperson.create;
       person.address.street:='Shanghai';
      

  4.   

    你得思路 也有點問題哦。。應該是這樣得。。TAddress = class
      private
        FCompany: string;
        FStreet: string;
        FCity: string;
        FProvince: string;
        FCountry: TCountry;
        FZipCode: string;
      private
        procedure SetCompanyValue(Value: string);   published
        property Company: string read FCompany write SetCompanyValue;
        .... // others
    end;property Address: TAddress read m_Address write m_Address ; 
    你這樣只是對Address 沒有對裡面的成員
      

  5.   

    赋值的时候属性定义如下
    property Address: TAddress read m_Address write SetValue; 可以添加一个过程:
    procedure SetValue(Add: TAddress);
    begin
      m_Address.City := Add.City;
      //others
    end;
    实例化时可以:
    var
      AddressValue: TAddress;
    begin
       AddressValue.city := 'ShangHai';
       //other items
       persen:=tperson.create;
       person.address := AddressValue;
       ...end;
      

  6.   

    beyondtkl, 谢谢你,但是还是有问题,因为这些类里面都连着数据库,TAddress类的使用者只有TPerson类一个,它们俩读写的数据库其实是一个,分成两部分的想法是思路会清晰一些。如果改成你所说的方式,会不会因为增加一个数据库连接而使得效率会有所降低?