N
njcliff
Unregistered / Unconfirmed
GUEST, unregistred user!
刘艺《Delphi面向对象编程思想》中-第4章使用对象->使用对象集->系统登录 中的示例程序(第164页)
新建一个类Profile如下,然后将ClientDataSet1中的数据(登录信息)赋值给类Profile的一个对象AMan,最后再由AMan保存到对象集Profile
List;
TProfile = class(TObject)
Name : String;
Dep : String;
Password :String;
Job : String;
......
var
ProfileList: TObjectList;
i:integer;
AMan:TProfile;
begin
......
ProfileList:=TObjectList.Create(True);
//AMan:=TProfile.Create;{标记2}
ClientDataSet1.first;
for i:=0 to ClientDataSet1.RecordCount -1 do
begin
AMan:=TProfile.Create;{标记1}
AMan.Name:=ClientDataSet1.FieldByName('Name').AsString;
AMan.Job:=ClientDataSet1.FieldByName('Job').AsString;
AMan.Dep:=ClientDataSet1.FieldByName('Dep').AsString;
AMan.Password :=ClientDataSet1.FieldByName('Password').AsString;
ProfileList.Add(AMan);
ClientDataSet1.Next;
end;
......
我将例子中标记1的AMan:=TProfile.Create放在标记2的位置,编译可以通过,却发现对象集Profile中保存的记录全部是ClientDataSet1的最后一条记录,但是记录条数没有变化。如果注销标记2的语句,恢复到标记1的位置,则一切正常。
请大侠分析一下原因,我目前正在看面向对象,但是对怎么创建一个对象理解的还是比较吃力;
新建一个类Profile如下,然后将ClientDataSet1中的数据(登录信息)赋值给类Profile的一个对象AMan,最后再由AMan保存到对象集Profile
List;
TProfile = class(TObject)
Name : String;
Dep : String;
Password :String;
Job : String;
......
var
ProfileList: TObjectList;
i:integer;
AMan:TProfile;
begin
......
ProfileList:=TObjectList.Create(True);
//AMan:=TProfile.Create;{标记2}
ClientDataSet1.first;
for i:=0 to ClientDataSet1.RecordCount -1 do
begin
AMan:=TProfile.Create;{标记1}
AMan.Name:=ClientDataSet1.FieldByName('Name').AsString;
AMan.Job:=ClientDataSet1.FieldByName('Job').AsString;
AMan.Dep:=ClientDataSet1.FieldByName('Dep').AsString;
AMan.Password :=ClientDataSet1.FieldByName('Password').AsString;
ProfileList.Add(AMan);
ClientDataSet1.Next;
end;
......
我将例子中标记1的AMan:=TProfile.Create放在标记2的位置,编译可以通过,却发现对象集Profile中保存的记录全部是ClientDataSet1的最后一条记录,但是记录条数没有变化。如果注销标记2的语句,恢复到标记1的位置,则一切正常。
请大侠分析一下原因,我目前正在看面向对象,但是对怎么创建一个对象理解的还是比较吃力;