كيف يتم نسخ كلاس إلى آخر ؟
#12
فعلاً كما توقعت Smile

انظر لهذا المثال الذي قمت بتطبيق فكرتك فيه

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. 
الرد


الردود في هذا الموضوع
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 13-10-2014, 06:55 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة SMP3 - 13-10-2014, 10:38 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 13-10-2014, 12:13 PM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة Amer12 - 14-10-2014, 05:27 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 14-10-2014, 06:00 PM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة SMP3 - 14-10-2014, 09:54 PM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 15-10-2014, 03:47 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة SMP3 - 15-10-2014, 10:29 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة me_delphi - 16-10-2014, 07:02 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 16-10-2014, 08:12 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 16-10-2014, 03:21 PM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة SMP3 - 16-10-2014, 08:47 PM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة me_delphi - 17-10-2014, 02:40 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة ALmuhhnad - 17-10-2014, 04:59 AM
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة SMP3 - 13-10-2014, 05:44 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم