record记录赋值问题
TAddress是一个record类型的数据,里面的字段有street、city、state等,能不能给其中任意字段赋值,比如Person.address.city:='Shanghai'; (总是遇到left side cannot be assigned to). 问题点数:20、回复次数:6Top
1 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2005-05-16 12:05:14 得分 15
能不能给其中任意字段赋值
// 當然可以呀
总是遇到left side cannot be assigned to
// 左值?? 你貼一下詳細代碼?Top
2 楼Corn1(玉米)回复于 2005-05-16 12:29:08 得分 0
TPerson的Address属性是否设成只读?Top
3 楼zhongjinting()回复于 2005-05-16 12:44:34 得分 0
数据类型:
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';
Top
4 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2005-05-16 13:32:10 得分 0
你得思路 也有點問題哦。。
應該是這樣得。。
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 沒有對裡面的成員。。。Top
5 楼hotzhu(天下无妞)回复于 2005-05-16 13:45:02 得分 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;Top
6 楼zhongjinting()回复于 2005-05-16 16:51:17 得分 0
beyondtkl, 谢谢你,但是还是有问题,因为这些类里面都连着数据库,TAddress类的使用者只有TPerson类一个,它们俩读写的数据库其实是一个,分成两部分的想法是思路会清晰一些。如果改成你所说的方式,会不会因为增加一个数据库连接而使得效率会有所降低?Top




