كيف يتم نسخ كلاس إلى آخر ؟
#1
السلام عليكم ورحمة الله وبركاتة
لتو بدأت مع الـ OOP بشكل جاد Smile , وها أنا في اول المطبات

سؤالي هو كتالي : كيف اقوم بنسخ محتويات كلاس إلى كلاس آخر ؟

لدي هذا الكود :
PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls;

type
  TForm1 
= class(TForm)
    
btn1: TButton;
    
procedure btn1Click(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

  
TMyClass = class
  private
    
FAge: Integer;
    
FName: string;
    
FPhoneNumbers: TStringList;
    
procedure setPhoneNumbers(const Value: TStringList);
  public
    
property Name : string read FName write FName;
    
property Age : Integer read FAge write FAge;
    
property PhoneNumbers: TStringList read FPhoneNumbers
      write setPhoneNumbers
;
  
end;

var
  
Form1: TForm1;
  
Man1, Man2 : TMyClass;

implementation

{$R *.dfm}

{ 
TMyClass }

procedure TMyClass.setPhoneNumbers(const Value: TStringList);
var
  
i : Integer;
begin
  
for i := 0 to Value.count-1 do
  
begin
    FPhoneNumbers
.Add(Value.Strings[i]);
  
end;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  
// create Man1 and fill its infos
  
Man1 := TMyClass.Create;
  
Man1.Name := 'Kahld';
  
Man1.Age := 15;
  
Man1.PhoneNumbers.Add('XXXXXXXXXXXX');
  
Man1.PhoneNumbers.Add('AAAAAAAAAAAA');
  
Man1.PhoneNumbers.Add('WWWWWWWWWWWW');

  
// Create Man2 and copy information form Man1
  //to Man2 ; How Can I do that ?
  
Man2 := TMyClass.Create;
  
// if I use this code
  
Man2 := Man1; // I give Man2 a pointer for Man1
  //so .. If i Free Man1.. Man2 will fo as well
end;

end. 

كيف أقوم بنسخ محتويات Man1 إلى Man2 ؟
اريــ ـد نسخ المحتويات وليس إعطاء Man2 مؤشر إلى محتويات Man1
حيث لو قمت بإستدعاء الدالة Free لـ Man1 , ستذهب المعلومات من Man2 كذلك !

وكذلك نفطة آخرى .. عندما استعمل الأمر :
PHP كود :
Man1.PhoneNumbers.Add('XXXXXXXXXXXX'); 
يحصل خطا حيث اني لم أعمل Create للقائمة .. هل يجب ان اعدل الدالة Create الخاصة بالكلاس واضع فيها امر انشاء القائمة ؟

اتمنى اني وضحت المشكلة
وشكراً لحسن القارءة
الرد


الردود في هذا الموضوع
كيف يتم نسخ كلاس إلى آخر ؟ - بواسطة 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 ) ضيف كريم