PDA

View Full Version : سوال در مورد حذف دایرکتوری



tabriz
شنبه 03 مرداد 1388, 09:12 صبح
من تویه یه برنامه یک دایرکتوری رو با دستور mkdir درست میکنم بعد یه فایلی رو توش کپی می کنم حالا وقتی میخواهم این دایرکتوری رو با rmdir حذف کنم error میده:

project ****.EXE raised exception class EInOutError with message I/O error 145
البته تابع کپی رو خودم نوشتم توی آخر تابع closefile رو هم نوشتم .

Felony
شنبه 03 مرداد 1388, 11:46 صبح
توسط تابع RMDir شما میتونید یک پوشه که حاوی محتویات ( فایل یا زیر پوشه ) نیست رو حذف کنید ، برای حذف این نوع پوشه ها که دارای فایل یا زیر پوشه هستند باید ابتدا فهرست فایلها و زیرپوشه های اون پوشه رو بدست بیارین ( به کمک توابع FindFirst و FindNext ) و یکی یکی اونها رو پاک کنید و در آخر پوشه ی اصلی رو با همین دستور RMDir پاک کنید .

skflower
یک شنبه 04 مرداد 1388, 07:50 صبح
سلام دوستان عزیز. یه سری توابع API مخصوص کار با پوشه ها و فایلها وجود داره. دارم سرچ میکنم که پیداشون کنم. تا چند دقیقه دیگه اگه پیداشون کردم، براتون تو همین تاپیک میذارم. البته چون بحثش مربوط به توابع API هست، لطف کنید تو اون تاپیکها هم لینک این تاپیک رو بدید.
با تشکر

skflower
یک شنبه 04 مرداد 1388, 08:02 صبح
تابع RemoveDirectory:
این تابع مخصوص پاک کردن پوشه هستش.
نحوه فراخوانی اون در دلفی:
function RemoveDirectory(lpPathName: PChar): BOOL; stdcall
پارامترها:
lpPathName: مسیر پوشه برای حذف

skflower
یک شنبه 04 مرداد 1388, 08:07 صبح
اگه مثال نیاز داشتید، بگید براتون بنویسم و بذارم. نذاشتم چون آماده نداشتم.
در ضمن خروجی تابع از نوع Boolean هستش. یعنی اگه کارشو درست انجام بده و پوشه رو حذف کنه True و در غیر اینصورت False خواهد بود

Felony
یک شنبه 04 مرداد 1388, 16:04 عصر
تابع RemoveDirectory:
این تابع مخصوص پاک کردن پوشه هستش.
نحوه فراخوانی اون در دلفی:
function RemoveDirectory(lpPathName: PChar): BOOL; stdcall
پارامترها:
lpPathName: مسیر پوشه برای حذف

این تابع RemoveDirectory که شما گفتید به درد این دوستمون نمیخوره چون مثل همون RMDir کار میکنه و اگر داخل پوشه فایل یا زیرپوشه هایی باشه نمیتونه پوشه رو پاک کنه ، در هر صورت باید ابتدا زیرپوشه ها و فایلهای داخل پوشه ی اصلی رو به طور کامل پاک کرد بعد خود پوشه رو میشه با تابع RMDir یا این تابعی که شما دادین پاک کرد .

bersam
دوشنبه 30 شهریور 1388, 15:59 عصر
توسط تابع RMDir شما میتونید یک پوشه که حاوی محتویات ( فایل یا زیر پوشه ) نیست رو حذف کنید ، برای حذف این نوع پوشه ها که دارای فایل یا زیر پوشه هستند باید ابتدا فهرست فایلها و زیرپوشه های اون پوشه رو بدست بیارین ( به کمک توابع FindFirst و FindNext ) و یکی یکی اونها رو پاک کنید و در آخر پوشه ی اصلی رو با همین دستور RMDir پاک کنید .
عذر میخوام میشه یه مثال بزنید؟

babakmomeni
دوشنبه 30 شهریور 1388, 16:30 عصر
توسط تابع RMDir شما میتونید یک پوشه که حاوی محتویات ( فایل یا زیر پوشه ) نیست رو حذف کنید ، برای حذف این نوع پوشه ها که دارای فایل یا زیر پوشه هستند باید ابتدا فهرست فایلها و زیرپوشه های اون پوشه رو بدست بیارین ( به کمک توابع FindFirst و FindNext ) و یکی یکی اونها رو پاک کنید و در آخر پوشه ی اصلی رو با همین دستور RMDir پاک کنید .

سلام. silversoft عزیز شما ظاهرا با فایل و فولدر زیاد سر و کار دارین. پیشنهاد حقیر برای شما و پرسش کننده محترم استفاده از کامپوننت های ABF هستش. مراحل کار:
1-دانلود آنها از آدرس http://www.abf-dev.com (کاملا رایگانه) و نصب روی دلفی
2- افزودن یونیت abfvclutils به بخش یونیت های برنامه
3-استفاده از کد زیر برای حذف فولدر حتی اگه خالی نباشه


abfremovedir(DIRPATH)


البته این سری کامپوننت ها صدها تابع و متد مفید دیگه هم داره که با وجود help فایل نسبتا جامع همراه به سادگی قابل استفاده خواهد بود.

موفق باشید