PDA

View Full Version : فرق Assign و =: ؟



mbshareat
چهارشنبه 07 اسفند 1387, 18:52 عصر
چه فرقی می کنه که یک BitMap رو با Assign به یک TImage بدهیم یا با دستور
نام بیت مپ=:Picture.Bitmap. ... ؟
آیا استفاده از Assign علاوه بر گسترش محدوده دریافتی از Bitmap به انواع گرافیک دیگر در عین حال موجب نمی شه که با تغییر در TImage که گرافیک رو دریافت می کنه گرافیک اصلی هم تحت تاثیر قرار بگیره؟

vcldeveloper
چهارشنبه 07 اسفند 1387, 19:26 عصر
در مورد Picture.Bitmap فرقی نمیکنه، چون در هر دو صورت Assigned فراخوانی میشه. اما اگر یک Property را که یک شی هست، خودتون در کلاس خودتان تعریف کرده باشید، و بخواید با := بهش مقدار بدید، باید حتما آن را بدرستی مدیریت کنید، وگرنه موجب Memory Leak میشه. در این مورد همین امروز در یک تاپیک دیگه در همین بخش توضیح دادم.

ghabil
پنج شنبه 08 اسفند 1387, 04:34 صبح
فرق Assign و := در دلفی این هست که شما وقتی که یک آبجکت رو به یک آبجکت Assign میکنید یعنی تمامی پراپرتیهای آبچکت اول رو برابر پراپرتیهای آبجکت دوم قرار میدین. اما اگر این کار رو برای پوینتر پراپرتی (یعنی با := انجام بدین) دیگه آبجت دومی وجود نداره و پراپرتی آبجکت شما فقط داره به آبجکا اولی اشاره میکنه برای نمونه یک مثال میزنم :


anObj := TObject.Create;
bObj.prop := anObject;
anObject.Free;

در کد فوق bObj.prop هم دیگه وجود نداره.


anObj := TObject.Create;
bObj.prop.Assign(anObject);
anObject.Free;


در کد فوق bObj.prop همچنان وجود داره.

mbshareat
پنج شنبه 08 اسفند 1387, 10:40 صبح
ممنون .من هم دنبال همین بودم. چون یادم می یاد وقتی برنامه می نوشتم با تغییر در یکی از دو تصویر دومی هم تغییر می کرد.:لبخند: