من می خوام برنامه ای بنویسم که در شبکه استفاده کنم من دنبال یک تابع و روش کار آن می گردم که بفهمم این بانک توسط کاربر دیگر باز شده یا نه.
میرسی خوشحال می شم منو راهنمایی کنید
با تشکر فراوان
من می خوام برنامه ای بنویسم که در شبکه استفاده کنم من دنبال یک تابع و روش کار آن می گردم که بفهمم این بانک توسط کاربر دیگر باز شده یا نه.
میرسی خوشحال می شم منو راهنمایی کنید
با تشکر فراوان
در ضمن برنامه من تحت داس و فاکس پرو می باشد. قابل توجه برنامه نویسان
در ضمن برنامه من تحت داس و فاکس پرو می باشد. قابل توجه برنامه نویساننوشته شده توسط alib537123
تابع used()
توضیحات:
Determines if an alias is in use or a table is open in a specific work area.
تابع aused()
توضیحات:
Places table aliases and work areas for a data session into a variable array.
مثال:
OPEN DATABASE (HOME(2) + 'Data\testdata') EXCLUSIVE
USE Customer IN 0
CLEAR
? AUSED(gaInuse)
DISPLAY MEMORY LIKE gaInuse
CLOSE DATABASES
_________________
عاشق FoxPro
در تندیس های تخت جمشید هیچ کس در حال تعظیم نیست ، هیچ کس عصبانی نیست ، هیچ کس سرافکنده و شکست خورده نیست ، هیچ کس سوار بر اسب نیست ، هیچ قومی بر قوم دیگر برتر نیست ، هیچ کس برده نیست و هیچ تصویر خشنی دیده نمیشود.
************************************************** ******************************************
اندیشه کن , آنگاه سخن گو تا از لغزش بر کنار باشی
سلام و صد سلام
فکر کنم منظور شما این باشه که میخواهید بدانید که یک فایل توسط دیگری باز باشد یا خیر؟ این فایل به صورت Share باشد یا Exclusive. خوب تابعی که بتواند این کار را بکند میتواند بر دو اصل استوار گردد:
اولین راه : اگر فایل توسط دیگری بصورت Share باز باشد توسط دیگر نیز میشود آنرا باز کرد ولی اگر Exclusive باشد نمیتوان. بنابراین شما میتوانید فایل را در هر دو حالت Share و Exclusive امتحان کنید و اگر خطایی بدست آمد آنر Handle کنید. مثلا در صورتیکه Set Exclusive در حالت Off باشد شما فایل را به صورت Share باز میکنید یا حتی میتوانید در جلوی دستور use کلمه Share را قرار دهید. اگر با خطا مواجه شدید نشان میدهد که فایل توسط دیگری یا برنامه دیگر به صورت Exclusive باز شده. اما اگر خطا نداد باید بعد شما Set Exclusive را در حالت On قرار داده و دوباره جدول را باز کنید. اگر خطا نداد فایل توسط دیگری باز نیست اما اگر خطا داد فایل توسط دیگری به صورت Share باز شده. این ملزم به هدایت خطاهاست که من زیاد با آن موافق نیستم.
دومین راه: دومین راه را من خودم امتحان کردم و تابعی در این مورد نوشتم که در اینجا مشاهده میفرمایید. منطق تابع مذکور این است : اگر فایلی باز نشود یا وجود ندارد یا به صورت Exclusive توسط دیگری باز شده است. بنابراین اگر باز شد دو حالت داریم: اول اینکه فایل توسط دیگری به صورت Share باز شده که آنرا با تابع Fopen امتحان میکنیم. در دو حالت با Attrib 0 و 2 که در تابع آنرا مشاهده خواهید فرمود. مقادیری که این تابع برمیگرداند بدین شرح است: 1 فایل توسط دیگری به صورت مشترک (Share) باز شده. 2: فایل توسط دیگری باز نشده 3 فایل توسط دیگری به صورت انحصاری (Exclusive) باز شده 4 فایل با این نام وجود ندارد
امیدوارم این تابع برای شما درست کار کند و همان چیزی که شما مد نظر دارید را انجام دهد.
یاد آوری: برای اینکه برنامه ای را بفهمید تحت شبکه درست کار میکند میتوانید آنرا در ویندوز دوبار اجرا کنید. اگر برنامه تحت Dos هم باشد مهم نیست فقط Shell برنامه بصورت Dos خواهد بود.
در پایان اگر این تابع درست کار نکرد مرا هم مطلع بفرمائید.
در ضمن فایل به صورت Prg در آورید.
محمد رضا توکل
سلام
فکر کنم کسی از این برنامه خوشش نیومده!
__________________________________________________ _____________
____________________________
همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)
جناب آقای توکل دست شما درد نکنه تابع مفیدی بود.
دیگران یا مثل من از روش اول استفاده می کنن یا اینه روی برنامه های تحت شبکه کار نمی کنند.در هر صورت تابع شما از روش اول مفیدتر است.