16-10-2014, 03:21 PM
فعلاً كما توقعت 
انظر لهذا المثال الذي قمت بتطبيق فكرتك فيه

انظر لهذا المثال الذي قمت بتطبيق فكرتك فيه
PHP كود :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMyClass = class
private
public
Name: String;
Age: Integer;
PhoneNumbers: TStringList;
constructor Create; virtual;
destructor Destroy; override;
end;
var
Form1: TForm1;
obj1, obj2: TMyClass;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
obj1 := TMyClass.Create;
obj1.Name := 'Ali';
obj1.Age := 15;
obj1.PhoneNumbers.Add('XXXXXXXXXXXXXXXXX');
ShowMessage( Format('Pointer for obj1.PhoneNumbers is : %p', [Pointer(obj1.PhoneNumbers)])
+ ' fist number value is : ' + obj1.PhoneNumbers.Strings[0]);
obj2 := TMyClass.Create;
ShowMessage(IntToStr(obj1.InstanceSize));
CopyMemory(Pointer(obj2), Pointer(obj1), obj1.InstanceSize);
obj1.Free;
// here you will get the error.. Because there is no pointer anymore
ShowMessage('fist number value is : ' + obj2.PhoneNumbers.Strings[0]);
obj2.Free;
end;
{ TMyClass }
constructor TMyClass.Create;
begin
PhoneNumbers := TStringList.Create;
end;
destructor TMyClass.Destroy;
begin
FreeAndNil(PhoneNumbers);
inherited;
end;
end.

