ايران ويج

نسخه‌ی کامل: عدم توانايي در بستن برنامه
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
خيلي خيلي خوشحالم كه سايت از ف ي ل ي ت ر در اومد.
آقا فقط خواهش مي كننم نخنديد ؟!؟ يه سوال مبتدي دارم؟
.
.
.
يه برنامه دلفي دارم كه توش يه فورم هست و يه Datamodule و توي datamoudel يه Mainmenu .من اين Mainmenu به فورم اصلي نسبت دادم ( توي فورم ازش استفاده كردم ) حالا توي Mainmenu يه گزينه خروج دارم .اما نمي تونم از دستور Application.terminate استفاده كنم؟؟؟من Unit هر دوتا ، يعني هم فورم و هم Datamodule رو هم اضافه كردم . اما كار نمي كنه؟
فقط با اين دستور مشكل دارم؟با بقيه اي دستورات مشكلي ندارم؟
ببخشيد سوال خيلي مبتدي بود
با تشكر
از این کد استفاده کن
کد:
halt;

اگه جواب ندارد از این کد استفاده کن

کد:
TerminateProcess(GetCurrentProcess,0);
سلام
ممنون كه جواب داديد..اما
1- دستور Halt با Application.terminate چه فرق داره؟
2-دستور دوك رو كه اصلن نمي دونم چي ؟ لطفا بشتر توضيح بديد؟
3-آيا اين دستور ميتونه جواب سوال من باشه (تازه پيداش كردم) Application.mainform.terminate ?
ممنون
Halt: تابعی برای خروج اضطراری از برنامه هست که توسط سیستم عامل ارائه میشه.

Application.Terminate: تمام منابع برنامه در حافظه را آزاد میکنه، و از Process خارج میشه. برای این منظور، Application.Terminate از تابع PostQuitMessage با پارامتر 0 استفاده میکنه که به سیستم اعلام میکنه این Thread (یعنی Thread اصلی برنامه) قصد خروج به صورت عادی را داره.

TForm.Close: برای فرم های عادی، فقط موجب بسته شدن فرم مربوطه میشه. فرم آزاد نمیشه، مگر اینکه برنامه نویس در رویداد OnClose صراحتا اعلام کنه که میخواد فرم را آزاد کنه. اگر متد Close مربوط به فرم اصلی برنامه فراخوانی بشه، علاوه بر بسته شدن فرم اصلی برنامه، متد Application.Terminate هم فراخوانی میشه؛ پس متد Close فرم اصلی معادل استفاده از Application.Terminate هست، با این تفاوت در صورت استفاده از متد Close رویدادهای OnCloseQuery و OnClose فرم اصلی هم فراخوانی میشند، ولی در صورت استفاده از Application.Terminate این رویدادها فراخوانی نمیشند.

TerminateProcess:هم از توابع api هست که پروسه رو میبنده
(۲۸-خرداد-۱۳۸۹, ۱۰:۱۸:۱۹)lord_viper نوشته است: [ -> ]از این کد استفاده کن
کد:
halt;

اگه جواب ندارد از این کد استفاده کن

کد:
TerminateProcess(GetCurrentProcess,0);

سلام
دستور اول كار كرد.ممنون
اما دستور دوم كار نكرد
.
.
.
متاسفانه من با Datamodule‌مشكل دارم .اولش فكر مي كردم فقط با Manimenu كه توي datamodule گذاشتم مشكل دارم اما حالا متاسفانه با بقيه كامپوننت هاي كه توي Datamodule ميزارم ، هم مشكل دارم.
به نظر شما آيا بايد ( / بهتر ) از Datamodule استفاده كرد؟؟ چون توي يه جاي خوندم كه استفاده ازDatamodule براي برنامه خوبه ، اما من الان به يه نتيجه ديگه رسيدم؟
نظر شما و دوستان چي؟
.
.
.
اگه من از Halt استفاده كنم باز هم منابع سيستم آزاد ميشه ؟؟ آيا استفاده كنم يا خير؟