PDA

View Full Version : سوال: ورود داده در RUNTIME



shervin110us
شنبه 12 فروردین 1391, 21:12 عصر
سلام
من در حال نوشتن برنامه ای هستم که از ویندوز فرم استفاده میکنه.
بعد از یک سری محاسبات ، در میان برنامه نیاز هست که کاربر یک سری اطلاعات وارد کنه ، اطلاعات عددی هست.
یک راه استفاده از INPUTBOX هست ، ولی پرسش من این هست که آیا میشه به نحوی ، اجرای برنامه موکول بشه تا ورود این اطلاعات و بعد وقتی این اطلاعات وارد شد ( ترجیحا روی فرم اصلی برنامه ، نه به صورت INPUTBOX ) برنامه ادامه روند خودش رو انجام بده ؟

ممنون از کمکتون

Hybrid
شنبه 12 فروردین 1391, 22:18 عصر
سلام ، مگه شما برنامتون چطور اجرا میشه ؟؟؟

در صورت امکان از ErrorProvider که در Toolbox هست استفاده کن ،

بیشتر توضیح بدی بهتر میشه راهنمایی کرد ،

hakim22
شنبه 12 فروردین 1391, 22:35 عصر
احتمالا شما از روش عجیبی برای دریافت اطلاعات و انجام محاسبات استفاده کردید ،
اصولا inputbox استاندارد نیست و بهتره هیچوقت ازش استفاده نکنید ، برنامه می تونه یه جایی متوقف بشه و بعد مقدار داده جدید از طریق textbox پرسیده بشه.

shervin110us
یک شنبه 13 فروردین 1391, 00:10 صبح
خلاصه این هست که ،
من برای تز دکترام نیاز دارم که یک سری داده رو که از یک دستگاه تست مقاومت خاک بیرون میاد آنالیز کنم، نزدیک 5000 تا فایل هستش.که البته دستگاه فایل wks تولید میکنه که یک مبدل پیدا کردم که فایل رو اتوماتیک به اکسل تبدیل میکنه ، در قسمت محاسبات ، این 5000 تا رکورد اول باید در نرم افزار ایمپورت بشه ، بعد دونه دونه خونده بشه ، مرتب بشه و بعد خروجی پیدا کنه . هر فایل شاید نزدیک به 7000 تا رکورد داره،حالا مشکل این هست که ، یک جایی میرسه که برای هر فایل ، قبل از اینکه به سراغ فایل بعدی بریم ، باید یک سری داده وارد بشه تا قبل از بسته شدن فایل اکسل مربوطه ، یک سری محاسبات انجام بشه و بعد فایل بسته بشه، امکان گرفتن اطلاعات قبل از مرحله ی آنالیز نیست، چون به دلیل حجم بالای اطلاعات ، ممکنه اشتباه بشه.بخاطر همین در runtime باید این اتقاق بیوفته ، من فکر به سراغ inputbox رفت ، حالا اگر کسی میتونه کمکی کنه ، بسیار متشکرم .

shervin110us
یک شنبه 13 فروردین 1391, 00:12 صبح
احتمالا شما از روش عجیبی برای دریافت اطلاعات و انجام محاسبات استفاده کردید ،
اصولا inputbox استاندارد نیست و بهتره هیچوقت ازش استفاده نکنید ، برنامه می تونه یه جایی متوقف بشه و بعد مقدار داده جدید از طریق textbox پرسیده بشه.

مرسی از وقتی که گذاشتید . فکر میکنم در توضیحی که ذیلا مدرج کردم ، متوجه شده باشید که امکان استفاده از تکست باکس نیستش.

hakim22
دوشنبه 14 فروردین 1391, 20:31 عصر
من خودم مهندس مکانیک هستم و نرم افزارهای محاسباتی زیادی طراحی کردم ، بزرگترین مشکل در طراحی هر نرم افزار انتخاب روش درست در نحوه ی کار آن است.
بعد که شما انتخاب میکنید که داده ها به چه روشی وارد و به چه روشی تحلیل و به چه صورت نمایش داده شود کار کد نویسی شروع میشود. اما همیشه قسمت اول کار بین 20 تا 30 درصد از کل زمان پروژه است.
1- بیشتر نرم افزارهای مهندسی فایلهایی به صورت txt خروجی میدهند یا حتی اگر پسوندهای متفاوتی داشته باشند محتویات آنها به صورت تکست می باشد و میشود به راحتی در زبان ها برنامه نویسی خوانده شود. اول این موضوع را بررسی کنید شاید نیاز به مبدل نباشد.
---
2- من فرض می کنم که شما 5000 تا فایل دارید که باید تحلیل شوند. بعد از تحلیل هر فایل برای اینکه وارد اطلاعات فایل بعدی شوید باید داده ای از کاربر سوال کنید. تا به عنوان مثلا یک مقدار پیشفرض یا کمکی برای فایل دوم استفاده شود.
در این صورت :
اول اینکه شما باید راه حلی پیدا کنید که کاربر مجبور نباشد اطلاعاتی وارد کند. به هر صورت کاربر بر اساس یک قاعده ای داده ای را وارد می کند. شما باید آن قاعده را به صورت نرم افزاری ایجاد کنید.
وقتی با 5000 فایل درگیر هستید همیشه صرف می کند که شبیه سازی رایانه ای انجام دهید. اگر قرار باشد هر کاربری که با برنامه ی شما کار می کند 5000 بار آن هم با تحلیل مراحل قبل داده ای به برنامه وارد کند شک نکنید که بالاخره اشتباه خواهد کرد و مجبور خواهد شد دوباره و دوباره کار را انجام دهد. دردسر اینکار برای خودتان هم اگر فقط و فقط قرار باشد یکبار محاسبات را انجام دهید هم خیلی خیلی بالا میرود.

hakim22
دوشنبه 14 فروردین 1391, 20:43 عصر
دوم اینکه :
من هرچقدر به ذهنم فشار می آورم نمیفهمم چرا امکان متوقت کردن کار برنامه و دریافت ورودی به صورت تکست باکس وجود نداشته باشد.
حتما برنامه ی شما از حلقه استفاده می کند و یکجایی حلقه تحلیل 7000 رکورد تمام میشود !
مثلا میتوانید یک دکمه با عنوان بعدی داشته باشید. حلقه که شروع میشود داده را از کاربر سوال کنید. و برای شروع حلقه ی بعدی کاربر روی دکمه کلیک کند ! (البته برای 5000 بار کار خیلی بی معنی و بی ارزشی میشود)
در ضمن برنامه ی شما حتما باید به یک روشی محاسباتی را که تا هر مرحله انجام میدهد در جایی ذخیره کند. میتوانید داده های اکسل را به صورت متنی دربیاورید و به صورت فایلهای جدا ذخیره کنید یا به صورت پایگاه داده ای در اکسس اینکار را انجام دهید. اصلا منطقی نیست که برنامه قرار باشد 5000 بار اجرا شود و امکان ذخیره و ادامه ی کار در آن در نظر گرفته نشده باشد

hakim22
دوشنبه 14 فروردین 1391, 20:56 عصر
باید خیلی جامع تر توضیح دهید که روش کار برنامه ی شما چیست. و دلایل خود برای هر تصمیم که در طراحی گرفتید مورد به مورد شرح دهید.
مثلا میتوانید برنامه را به چند مرحله تقسیم کنید.
مرحله اول همه ی داده های 5000 فایل را به صورت اولیه تحلیل کنید.(بدون پرسیدن چیزی !)
در مرحله ی دوم تحلیل نهایی را انجام دهید. که البته بستگی به فرمول های کار شما دارد.

----
برای توضیحات بیشتر تماس بگیرید.
www.p30ton.net

shervin110us
سه شنبه 15 فروردین 1391, 01:35 صبح
من خودم مهندس مکانیک هستم و نرم افزارهای محاسباتی زیادی طراحی کردم ، بزرگترین مشکل در طراحی هر نرم افزار انتخاب روش درست در نحوه ی کار آن است.
بعد که شما انتخاب میکنید که داده ها به چه روشی وارد و به چه روشی تحلیل و به چه صورت نمایش داده شود کار کد نویسی شروع میشود. اما همیشه قسمت اول کار بین 20 تا 30 درصد از کل زمان پروژه است.
1- بیشتر نرم افزارهای مهندسی فایلهایی به صورت txt خروجی میدهند یا حتی اگر پسوندهای متفاوتی داشته باشند محتویات آنها به صورت تکست می باشد و میشود به راحتی در زبان ها برنامه نویسی خوانده شود. اول این موضوع را بررسی کنید شاید نیاز به مبدل نباشد.
---
2- من فرض می کنم که شما 5000 تا فایل دارید که باید تحلیل شوند. بعد از تحلیل هر فایل برای اینکه وارد اطلاعات فایل بعدی شوید باید داده ای از کاربر سوال کنید. تا به عنوان مثلا یک مقدار پیشفرض یا کمکی برای فایل دوم استفاده شود.
در این صورت :
اول اینکه شما باید راه حلی پیدا کنید که کاربر مجبور نباشد اطلاعاتی وارد کند. به هر صورت کاربر بر اساس یک قاعده ای داده ای را وارد می کند. شما باید آن قاعده را به صورت نرم افزاری ایجاد کنید.
وقتی با 5000 فایل درگیر هستید همیشه صرف می کند که شبیه سازی رایانه ای انجام دهید. اگر قرار باشد هر کاربری که با برنامه ی شما کار می کند 5000 بار آن هم با تحلیل مراحل قبل داده ای به برنامه وارد کند شک نکنید که بالاخره اشتباه خواهد کرد و مجبور خواهد شد دوباره و دوباره کار را انجام دهد. دردسر اینکار برای خودتان هم اگر فقط و فقط قرار باشد یکبار محاسبات را انجام دهید هم خیلی خیلی بالا میرود.
سلام دوست من ، از وقتی که گذاشتی خیلی ممنونم .
1- علت استفاده از فایل اکسل این هستش که ، فایل یک سری از حجم محاسبات در فایل اکسل انجام میشه و بعد از اونجا ، یک سری نمودار کشیده میشه، این فایل ها به عنوان آرشیو باید نگهداری بشه و دانشگاه فایلهای اکسل رو آرشیو میکنه .
2- عددها کاملا رندوم هستند و هیچ قائده ای ندارند.کاملا کیاتیک هستند.راهی بجز ورود داده نیست. چون اینها ، مشخصات یک سمپل هستش که با اندازه ی تلرانس دهم میلیمتر و صدم گرم رکورد شده و خیلی حساس هست که دقیق حساب بشه ، چون مدلی که قراره رگرس بشه بعد از این ، به اندازه ی کافی آماری هست.
باز هم تشکر میکنم بابته هینتهایی که دادی .

shervin110us
سه شنبه 15 فروردین 1391, 01:37 صبح
سلام دوست من ،
1- قبلا به این فکر کردم ، به نظرم اومد اگر حین کار وارد بشه ، امکان خطا کمتر هست تا اینکه بخوان این رو در یک فایل جداگانه وارد کنند و بعد سیستم از اون با کوئری چک کنه و برداره .

shervin110us
سه شنبه 15 فروردین 1391, 01:39 صبح
دوستان خوبم ، من مشکل رو حل کردم در حالتی که کاربر در Runtime بخواد وارد کنه
کافیه به جای اینکه فرم دوم رو با show لود کنیم با showdialog لود کنیم ، خود IDE سیستم رو متوقف میکنه تا فرم دو بسته بشه.
بعد از کاربر در فرم دو اطلاعات گرفته میشه و بعد ادامه کار.
میشه از ماژول ها برای تعریف متغییر GENERAL استفاده کرد و بعد پارامترهای ورودی رو بهش پاس داد.

shervin110us
سه شنبه 15 فروردین 1391, 01:46 صبح
سیستم با حلقه کار میکنه ، یک حلقه ی راندوم که مقدار ورودی هاش بستگی به تعداد هر ردیفی داره که توی فایل هست و بعد فایلها به صورت اتوماتیک هم باز لود میشه و تعدادشون باز متغیره ! معمولا یک بار که RUN میکنم ، برای یک سری داده که فقط چک کنم ، چند ساعتی طول میکشه تا پروسه تمام شه.
پروسه ها قبلا طبقه بندی شده ، چند تا BUTTON روی فرم هست که هر قسمت رو به صورت جداگانه انجام میده . یک بار فایلهای WKS رو به XLS و XLSX تبدیل میکنه ، بعد از این فایلها به صورت TEMP استفاده میشه ، دوباره کاربر با کلیک روی قسمت بعدی ، فایلهای TEMP رو که در هرکدام سه تا SHEET هست رو از SHEET اول که از فایل اصلی داده گرفته شده ، میخونه ، SORT میکنه ، اینجا از ماتریکس به صورت اینورس استفاده باید بشه ، بعد دوباره اطلاعات ورودی گرفته میشه و بعد گراف از طریق خود اکسل طراحی میشه.
این نرم افزار قرار هست به شرکت ELE که تجهیزات مکانیک خاک و تستینگ میسازه ، به صورت رایگان هدیه بشه تا در روی پگیجهای خودش قرار بده و به تمام دنیا بفرسته.

hakim22
سه شنبه 15 فروردین 1391, 12:40 عصر
اگر اعداد کاملا رندومه پس منظور شما اینه که شما یک عددی شانسی میدهید به برنامه !؟
همیشه راهی بجز وارد کردن داده هست مگر اینکه ندونیم داده چیه !
بالاخره یک اساسی در وارد کردن داده ها دارید و اگر هم کاملا شانسیه خوب از خود وی بی برای تولید اعداد شانسی استفاده کنید.
اگر این داده ها به صورت لیست موجو هستند بهتره سیستم خودش اونها رو چک کنه و برداره
و شما باید تمام موارد رو در نظر بگیرید که خطا پیش نیاد.

در هر صورت شما نیاز به نرم افزاری دارید که به خوبی داده ها رو مدیریت کنه .

hakim22
سه شنبه 15 فروردین 1391, 12:48 عصر
حلقه ی شما راندوم نیست ، بلکه متغیره و این اصلا مشکلی نیست.
این فقط باعث میشه تعداد اجرای حلقه ها در مورد هر فایل تغییر کنه.

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

این داده هایی که باید وارد شوند چی هستند !؟

برنامه باید به گونه ای طراحی بشه که فقط با یک کلیک کل محاسبات رو انجام بده و اینکه محاسبات چند روز طول میکشه اصلا مهم نیست.
اگر محاسبات سنگینه و زیاد طول میکشه حتما باید از Thread ها استفاده کنید و با یک progressbar پیشرفت کار رو نشون بدید.

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

shervin110us
سه شنبه 15 فروردین 1391, 19:50 عصر
اعداد راندوم هست ، یعنی بستگی داره به نوع نمونه ای که مورد ازآمایش قرار گرفته . از الگوریتم منطقی پیروی نمکینی . راندوم هستش. باید کاربر بر اساس اندازه گیری که کرده ، وارد کنه

hakim22
چهارشنبه 16 فروردین 1391, 15:02 عصر
کاربر از کجا تشخیص میده که کی باید نتایج کدام اندازه گیری رو وارد کنه !؟

shervin110us
چهارشنبه 16 فروردین 1391, 18:58 عصر
بالای فرم دوم اسم نمونه ظاهر میشه

hakim22
پنج شنبه 17 فروردین 1391, 09:25 صبح
خب پس یک لیستی داشته باشید که برای هر شماره نمونه نتایج اندازه گیری وارد بشه ، بعد از اجرا محاسبه بشه ؟

shervin110us
پنج شنبه 17 فروردین 1391, 10:01 صبح
حلش کردم . مرسی