PDA

View Full Version : قسمت کردن یک برنامه بزرگ



rezamim
یک شنبه 27 آبان 1386, 16:04 عصر
با سلام
من درحال تهیه یک برنامه هستم که خودش از چند قسمت درست شده. فرض کنید قسمت حسابداری ، حقوق و دستمزد ، دفترچه تلفن .
برنامه اصلی در واقع یک prg هست که صفحه اصلی را ایجاد کرده و در وسط این صفحه یک فرم ظاهر میشود که بر روی آن 3 کلید ( جهت انتخاب هر یک از سه قسمت عنوان شده ) وجود دارد.
با زدن هر کلید منوی آن قسمت در پنجره اصلی ظاهر شده و امکان کار بوجود میاید. با انتخاب گزینه خروج نیز منو بسته شده و مجددا به فرمی که سه کلید بر روی آن هست برمیگردیم.
اگر نخواهم تمام اینها را در قالب یک پروژه ایجاد کنم ، بهترین راه از نظر شما چیست؟
منظورم مثل وقتی هست که ما توابع را درون یک prg مثلا با نام Library قرار میدهیم و با Set Procedure To به آنها دسترسی پیدا میکنیم. من هم تنها نیاز دارم که فرمها ، گزارشات ، لیبلها و چنین مواردی را جداگانه برای هر قسمت ایجاد کرده و در موقع لزوم ازآنها استفاده کنم.

rezaTavak
دوشنبه 28 آبان 1386, 07:40 صبح
شاید یک راه app باشد. یعنی اینکه هر پروژه شما به جای exe به app تبدیل بشه و بعد همه app ها پیوند بخوره توی یک exe.

rahro
دوشنبه 28 آبان 1386, 07:59 صبح
سلام
معمار عزیز:
فکر میکنی اگر در برنامه خود یک خروجی قرار دهی که کاربر هر لحظه خواست اطلاعات محدوده خود را بردارد چه ایرادی دارد.؟!
بیشتر توضیح دهم
من در برنامه حقوق و دستمزد قسمتی رو طراحی کردم که کاربر میتونه اطلاعات ماهیانه حقوق و یا محدوده خاصی رو در یک جدول طوری قرار بده که برنامه حسابداری مربوطه از آن استفاده کنه. مثلا پس از تهیه لیست حقوق و دستمزد اطلاعات به سیستم حسابداری ارسال میشه و اپراتور حسابداری با زدن یک کلیک میتونه سند حسابداری خودش رو مشاهده و در صورتی خاص ویرایش کنه.
در خصوص دفتر تلفن نیز به نظر حقیر ارزش ایجاده یک پروژه جانبی رو نداره .

rezamim
دوشنبه 28 آبان 1386, 10:42 صبح
شاید یک راه app باشد. یعنی اینکه هر پروژه شما به جای exe به app تبدیل بشه و بعد همه app ها پیوند بخوره توی یک exe.

دقیقا ولی من میخوام حجم exe پایین باشه و app ها بیرون باشند. ولی نمیدونم اون چیزی که گفتم یعنی قراردادن فرمها و گزارشات به تنهایی در این appها و بعد ارجاع به اونها امکانپذیره؟
نمیدونم اصلا بالا بودن حجم exe تاثیر زیادی در سرعت داره یا نه. البته فکر میکنم قبلا سئوال کرده بودم ، دوستان خارجی گفته بودند نه تاثیر زیادی نداره.
نظر شما چیه؟

rezamim
دوشنبه 28 آبان 1386, 10:45 صبح
سلام
معمار عزیز:
فکر میکنی اگر در برنامه خود یک خروجی قرار دهی که کاربر هر لحظه خواست اطلاعات محدوده خود را بردارد چه ایرادی دارد.؟!
بیشتر توضیح دهم
من در برنامه حقوق و دستمزد قسمتی رو طراحی کردم که کاربر میتونه اطلاعات ماهیانه حقوق و یا محدوده خاصی رو در یک جدول طوری قرار بده که برنامه حسابداری مربوطه از آن استفاده کنه. مثلا پس از تهیه لیست حقوق و دستمزد اطلاعات به سیستم حسابداری ارسال میشه و اپراتور حسابداری با زدن یک کلیک میتونه سند حسابداری خودش رو مشاهده و در صورتی خاص ویرایش کنه.
در خصوص دفتر تلفن نیز به نظر حقیر ارزش ایجاده یک پروژه جانبی رو نداره .

دوست عزیز
من کاری به اطلاعات نداشتم. فعلا گیر خود برنامه هستم.:بامزه:

rezaTavak
دوشنبه 28 آبان 1386, 12:17 عصر
دقیقا ولی من میخوام حجم exe پایین باشه و app ها بیرون باشند. ولی نمیدونم اون چیزی که گفتم یعنی قراردادن فرمها و گزارشات به تنهایی در این appها و بعد ارجاع به اونها امکانپذیره؟
نمیدونم اصلا بالا بودن حجم exe تاثیر زیادی در سرعت داره یا نه. البته فکر میکنم قبلا سئوال کرده بودم ، دوستان خارجی گفته بودند نه تاثیر زیادی نداره.
نظر شما چیه؟

اگر راجع به ساختار فایل exe بدانید در واقع فایل exe دارای چندین قسمت است که هر کدام از قسمتها در جدولی در بالای فایل آدرسدهی شده است.

مثلا فایل exe با MZ شروع می شود که نشاندهنده امضای آن است.

اما قسمتهای برنامه اسمبلی در فایل به اسم code و آدرس آن ذخیره می شود.
قسمت دیگر data است که اطلاعات برنامه را نگهدای میکند.

در واقع برنامه exe که توسط هر foxpro با سازنده P-code ساخته می شود (تمام برنامه های ویژوال یا جاوا یا ...) به این صورت است که یک برنامه اصلی دارد که این p-code ها را اجرا کند. در واقع کد FXP شما یا هر from یا report یا حتی عکس و... که به برنامه exe اضافه شود data محسوب می شود.

بنابراین تاثیر در طول کد ندارد. یعنی یک برنامه چندین گیگابایتی هم که باشد مهم تعداد طول code است نه data چون در موقع بارگیری code روی رم می رود نه کل exe.


و هر موقع data خواست بارگیری می شود آن هم به اندازه مورد نیاز.


اما فایلهای از نوع com یا bin کل data,code در حداکثر ۶۴کیلوبایت قرار دارد و کل آن در حافظه قرار می گیرد.





تنها مشکل وقتی است که برنامه شما از طریق اینترنت upgrade شود در اینصورت exe حجم مشکل ساز است.

rezamim
دوشنبه 28 آبان 1386, 15:30 عصر
بسیار خوب بنابراین بزرگ بودن فایل اجرایی بدلیل زیاد شدن قسمت دیتا یا همان فرمها ، گزارشات و غیره میباشد. که احتمالا تاثیری در سرعت نخواهد داشت.
فقط موردی که میماند زیاد بودن ایتمهای موجود در پروژه است که من تنها راهی که به نظرم رسید برای مدیریتشان اینبود که مثلا فرمهای مربوط به حسابدرای را با Hesشروع کنم ، فرمهای مربوط به حقوق و دستمزد را مثلا با Pay و دفترچه تلفن را با Tel .
چقدر خوب بود اگر امکان ساختن چیزی مثل فولدر در اینجا موجود بود. آیا روش من مناسب است؟

rezaTavak
سه شنبه 29 آبان 1386, 07:53 صبح
در جاوا هر کلاسی می تواند در هر فلدری باشد. و شما با آدرس دهی به شکل زیر به آن دسترسی دارید:



java.lang.System.out.println
=
java/lang/System/out/println.class


و هر سیستم عاملی هم باشد فرقی ندارد نقطه نشاندهنده مسیر است.


اما در فاکس پرو امکان همچین چیزی نیست.



البته استفاده از فرمهای قابل استفاده مجدد و کلاسها کار را خیلی بهتر خواهد کرد

استفاده از نامهای طولانی در برنامه‌های تحت ویندوز مشکلی نیست اما ممکن است تناقضاتی هم باشد.

مثلا در جداول شما طول فیلد محدود به ۲۵۵ کاراکتر است اما در select ۱۰ کاراکتر است! (البته جدیدا تست نکرده ام ببینم نگارش ۹ هم همین است)


نامگذاری باید بر اساس کد مجارستانی باشد مثلا فرمها frm یا کامبوها cbo شروع شوند و... سپس یک نام با معنی و ترجیحا طولانی.



برای اینکه بدانید در هر برنامه چه دارید یک جدول برای فیلدها و یک جدول برای بقیه چیزها می توانید تعریف کنید که با اینکار تناقض هم مرتفع می شود. مثلا اگر متغیر public دارید حتما مشخص باشد.

سعی کنید تمام جاها ابتدای برنامه local بودن تمام متغیرها را به فاکس پرو بگویید.

(من یکبار یک برنامه داشتم و متغیر i را بر حسب عادت برای شمارشگر حلقه استفاده می کنم و یادم رفته بود local بودنش را مشخص کنم برنامه بالایی هم همین نام را داشت و خلاصه سه روز علاف اشکال زدایی !)