Delphi简单的对象问题!高手指点!急!!!在线等(100分)

  • 主题发起人 主题发起人 okgxsh
  • 开始时间 开始时间
O

okgxsh

Unregistered / Unconfirmed
GUEST, unregistred user!
我创建了2个对象

TClient = class(TPersistent)
private
FClientID : string; //用户编号

procedure SetClientID(Value : string);
public
property ClientID : string read FClientID write SetClientID;

procedure Assign(source: TPersistent); override;

constructor Create;
destructor Destroy;
end;

TLList = class(TObjectList)
private
function GetClient(Lindex: integer): TClient ;

public
property Client[windex:integer]: TClient read GetClient;

procedure LoadFromDB;
constructor Create;
destructor Destroy; override;
end;
/////////
var
Test_LList1, Test_LList2 : TLList;
....
procedure Test;
begin
Test_LList1:=Test_LList1.create;
Test_LList1.LoadFromDB;
//当赋值给 test_LList1.ClientID:=1时,如何把这个值 传递给Test_LList2.ClientID 而不是传递地址!
//当test_LList1.ClientID:=2时,不在影响Test_LList2.ClientID
//下面该如何写代码 把 1的值赋值给2,而不是共享内存地址?? 如果Test_LList2:=Test_LList1 这样赋值的话,系统传递是内存地址
Test_LList2:=
end;
////////

procedure TClient.Assign(source: TPersistent);
begin
if (source is TClient) then
begin
ClientID := TClient(source).ClientID;
end;
end;

function TLList.GetClient(Lindex: integer): TClient;
begin
if (Lindex < 0) or (Lindex >= Count) then
begin
result := nil;
exit;
end;
Result := TLList(Items[Lindex]);

end;
procedure TLList.LoadFromDB;
var
Client : TClient;
begin

XXX...'SELECT * FROM LoClientID';

while not XXX.DataSet.Eof do
begin
Client := TClient.Create;
with Client,XXXX.dataset do
begin
ClientID := fieldByName('ClientID').AsString;

end;
Add(Client);
XXXX.DataSet.Next;
end;
XXXX.Free;
end;
 
简单类型就可以用:=号来传递值,对象类型就要用Assign,在同一个单元内,不同对象的字段成员不管在什么位置都是相对可见的,但是2是另一个对象中的数据成员,要给2赋值,2所属的对象要先创建成一个实例,再直接给它的属性传值。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
775
import
I
I
回复
0
查看
573
import
I
I
回复
0
查看
547
import
I
后退
顶部