PDA

View Full Version : سوال: مشکل در مورد دستورات free و destory



ehsan.moolaei
دوشنبه 29 فروردین 1390, 07:50 صبح
با سلام خدمت دوستان
کسی میدونه بر عکس دستورات free یا destory توی دلفی چیه؟ این دستورات یک شی رو از بین میبرن توی برنامه.من باهاشون بر حسب نیازم یک شی adoconnection رو از بین میبرم ولی بعدش که میخوام دوباره از همون adoconnection استفاده کنم دیگه همچین شی توی برنامه پیدا نمیکنه و پیغام خطا میده اگه کسی میدونه چطور میشه دوباره شی adoconnection رو احیا کنم لطفاً کمک کنه

vcldeveloper
دوشنبه 29 فروردین 1390, 11:48 صبح
ولی بعدش که میخوام دوباره از همون adoconnection استفاده کنم دیگه همچین شی توی برنامه پیدا نمیکنه و پیغام خطا میده
وقتی شی ایی رو Free می کنید، یعنی اونو از بین می برید، پس دیگه اون شی نیست که شما بخواید بهش دسترسی داشته باشید، در نتیجه باید هم خطا بگیرید.

هر شی رو با فراخوانی متد سازنده (constructor) آن شی میسازند، و پس از اتمام کارش، با استفاده از متد Free آزادش می کنند. همه اشیاء به طور پیش فرض یک متد سازنده با نام Create از کلاس TObject به ارث می برند.


چطور میشه دوباره شی adoconnection رو احیا کنم
شی مربوطه رو با فراخوانی متد Create اش دوباره می سازید، و سپس خصوصیاتش را (مثل ConnectionString و غیره) مجددا مقداردهی می کنید.


در ضمن، سوال ربطی به تالار بانک های اطلاعاتی در دلفی نداره؛ هر سوالی که توش AdoConnection باشه که مربوط به بانک اطلاعاتی نیست. باید سوال رو در تالار مباحث عمومی دلفی و پاسکال مطرح می کردید. تاپیک منتقل شد.

ehsan.moolaei
دوشنبه 29 فروردین 1390, 12:16 عصر
با سلام
ببخشید جناب کشاورز اشتباهاً مطلبم رو توی یه بخش دیگه نوشتم
اگه میشه نحوه ساخت یا همون create یک شی رو نشون بدین ممنون میشم

A.Nemati
دوشنبه 29 فروردین 1390, 12:42 عصر
دستور ساختن اشیا، عموما Create است. با این دستور شما می توانید به تعداد دلخواه از اشیا بسازید.
Create در کلاس های مختلف، پارامترهای مختلفی دارد. بطور مثال، در AdoConnection می توانید به این صورت یک شی بسازید:


var Connection1: TAdoConnection
begin
...
Connection1:= TAdoConnection.Create(nil)
try
....
....
finally
freeAndNil(Connection1)
end;
...
end;

ehsan.moolaei
سه شنبه 30 فروردین 1390, 07:50 صبح
جناب نعمتی ممنون از راهنماییتون.اگه میتونید یه توضیحاتی در مورد nil و دستورات try(البته میدونم این دستور چه کاری انجام میده ولی دلیل استفادشو اینجا نمیدونم) و finally و همچنین دستور freeandnil بدین ممنون میشم

Felony
سه شنبه 30 فروردین 1390, 16:04 عصر
جناب نعمتی ممنون از راهنماییتون.اگه میتونید یه توضیحاتی در مورد nil و دستورات try(البته میدونم این دستور چه کاری انجام میده ولی دلیل استفادشو اینجا نمیدونم) و finally و همچنین دستور freeandnil بدین ممنون میشم
اگر به جای این سوال فقط چند ثانیه وقت برای جست و جوی همین کلمات میزاشتی تا الان 1000 بار جوابت رو پیدا کرده بودی ؛ nil یک اشاره گر به پوچ هست در اینجا یعنی شئ مالکی نداره ، try استفاده شده تا در هر شرایطی اجرای FreeAndNil تضمین بشه و شئ حتما آزاد بشه ،خود FreeAndNil هم شئ رو آزاد میکنه و به nil اشاره میدش .