17-10-2014, 04:59 AM
نفس النتيجة
عندما اعدل الـ
obj1.PhoneNumbers
سيتم تغيير قيمة الـ obj2.PhoneNumbers
والمطلوب هو نسخ الكلاس أي يكون الـ obj2 يملك مساحته الخاصة بالذاكرة والقيم الخاصة به بالذاكرة حيث انه ليس مرتبط بالـ obj1 كلياً
عندما اعدل الـ
obj1.PhoneNumbers
سيتم تغيير قيمة الـ obj2.PhoneNumbers
PHP كود :
obj1 := TMyClass.Create;
obj1.PhoneNumbers.strings[0] := '000000';
obj2 := TMyClass.Create;
copymemory(pointer(obj2), pointer(obj1), obj1.instancesize);
showMessage(obj1.PhoneNumbers.strings[0]); { Result will be : 000000 }
showMessage(obj2.PhoneNumbers.strings[0]); { Result will be : 000000 }
obj1.PhoneNumbers.strings[0] := '555555';
showMessage(obj1.PhoneNumbers.strings[0]); { Result will be : 555555}
showMessage(obj2.PhoneNumbers.strings[0]); { Result will be : 555555}
// so obj2 use same TStringList that belong to obj1 .. if you change PhoneNumbers
// in obj1 it will change in obj2.. same if you change obj2.PhoneNumbers it will change
// in obj1
والمطلوب هو نسخ الكلاس أي يكون الـ obj2 يملك مساحته الخاصة بالذاكرة والقيم الخاصة به بالذاكرة حيث انه ليس مرتبط بالـ obj1 كلياً

