13-10-2014, 06:55 AM
السلام عليكم ورحمة الله وبركاتة
لتو بدأت مع الـ OOP بشكل جاد
, وها أنا في اول المطبات
سؤالي هو كتالي : كيف اقوم بنسخ محتويات كلاس إلى كلاس آخر ؟
لدي هذا الكود :
كيف أقوم بنسخ محتويات Man1 إلى Man2 ؟
اريــ ـد نسخ المحتويات وليس إعطاء Man2 مؤشر إلى محتويات Man1
حيث لو قمت بإستدعاء الدالة Free لـ Man1 , ستذهب المعلومات من Man2 كذلك !
وكذلك نفطة آخرى .. عندما استعمل الأمر :
يحصل خطا حيث اني لم أعمل Create للقائمة .. هل يجب ان اعدل الدالة Create الخاصة بالكلاس واضع فيها امر انشاء القائمة ؟
اتمنى اني وضحت المشكلة
وشكراً لحسن القارءة
لتو بدأت مع الـ OOP بشكل جاد
, وها أنا في اول المطباتسؤالي هو كتالي : كيف اقوم بنسخ محتويات كلاس إلى كلاس آخر ؟
لدي هذا الكود :
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');
اتمنى اني وضحت المشكلة
وشكراً لحسن القارءة
