View Full Version : progress bar یا انجام عملیات مشابه برای سرگرم شدن کاربر
behzad_dr
پنج شنبه 30 تیر 1390, 18:56 عصر
سلام به همه دوستان
با توجه به اینکه دیتابیس من روی یه هاست قرار گرفته و مدت زمانی برای انجام عملیات لازم داره میخوام این مدت زمان لازم برای انجام عملیات روی دیتابیس و یا هر کاری که در برنامه زمان احتیاج داره رو به کاربر یه progres bar یا تصویر یه گیف متحرک نمایش بدم چطور باید این کارو انجام بدم ؟
Felony
پنج شنبه 30 تیر 1390, 19:18 عصر
با توجه به اینکه بانک روی هاست قرار داره مدت زمانی که روند اجرای یک عملیات روی بانک طول میکشه به عوامل مختلفی وابسته میشه ( حجم بانک ، سرعت انتقال اطلاعات ، بهینه بودن طراحی بانک ، ترافیک شبکه و ... ) بنابراین نمیشه تخمین زد که چه مدت این روند برای هر عملیات به طول میانجامه که این مدت رو تو Progress Bar به نمایش دراورد ، تنها راهی که دراید نمایش یک عکس Gif یا مثلا متن هست که برای این کار هم کافیه عکس رو قبل از شروع عملیات نمایش بدید و بعد از پایان عملیات ببندیدش .
tdkhakpur
پنج شنبه 30 تیر 1390, 23:25 عصر
بنابراین نمیشه تخمین زد که چه مدت این روند برای هر عملیات به طول میانجامه که این مدت رو تو Progress Bar به نمایش دراورد ، تنها راهی که دراید نمایش یک عکس Gif یا مثلا متن هست
چرا میشه تخمین زد.
در اینجا چون صرفا درخواست مدت یا طول عملیات برای بانک هست و مساله اصلی در این میان انتقال دادهاست میشه طول داده رو به عنوان نقطه مقصد(max) برای پردازش در نظر گرفت و با هر مقدار داده ای که دریافت میشه به position واحدی رو اضافه نمود.
برای پیدا شده طول داده ابتدای عملیات با دیتابس تان روی هاست نیاز به یک نشست برای دریافت طول داده دارید و در ضمن مساله ترافیک یا چیزهای دیگه که به داده ارتباط نداره نباید توی progress دخالت داده بشه.
در ضمن نوع دیتابس تان چی هست؟
Felony
جمعه 31 تیر 1390, 06:39 صبح
در اینجا چون صرفا درخواست مدت یا طول عملیات برای بانک هست و مساله اصلی در این میان انتقال دادهاست میشه طول داده رو به عنوان نقطه مقصد(max) برای پردازش در نظر گرفت و با هر مقدار داده ای که دریافت میشه به position واحدی رو اضافه نمود.
مثلا من میخوام یک رکورد در بانکی با فیلدهای زیر که رو هاست قرار داره ثبت کنم :
FName =nchar(15)
LName =nchar(15)
Age =nchar(3)
Tel =nchar(15)
Mob =nchar(15)
Addr =nchar(250)
خوب ، حالا طول داده چه مقدار هست که به عنوان Max در نظر گرفته بشه ؟
هر مقداری که دریافت میشه یعنی چی ؟ این هر مقدار چه طور دریافت میشه ؟
شما که تو هر تاپیک به این و اون میگی دست به کد شو و به ما هم یاد بده ، یک بار هم خودت دست به کد شو و به دیگر کاربران یاد بده ...
MohsenB
جمعه 31 تیر 1390, 09:33 صبح
سلام
من فکر کنم منظور آقا بهزاد اینی که شما جواب دادین نیست .
ایشون فقط میخواستن یه پروگرسبار متحرک داشته باشن که نیازی به نمایش اطلاعاتی نداره ، فقط درحال فعالیت بودن رو نشون میده .
مثلا خوب برا این کار شما باید تو دلفی 2010 به بالا خصوصیت Style از پروگرسبار رو روی pbstMarquee بزارین .
tdkhakpur
جمعه 31 تیر 1390, 11:24 صبح
من میخوام یک رکورد در بانکی با فیلدهای زیر که رو هاست قرار داره ثبت کنم :
FName =nchar(15)
LName =nchar(15)
Age =nchar(3)
Tel =nchar(15)
Mob =nchar(15)
Addr =nchar(250)خوب ، حالا طول داده چه مقدار هست که به عنوان Max در نظر گرفته بشه ؟
این که پرسیدن نداره با sizeof طولش رو بدست بیار.
هر مقداری که دریافت میشه یعنی چی ؟ این هر مقدار چه طور دریافت میشه ؟
اینکه چطور دریافت میشه به اون بانک به ابزاری که ازش استفاده میکنه بستکی داره اگر ازAdoConnection استفاده میکنه رویدادی به اسم ADOQuery1FetchProgress وجود داره که اگه کارت بهش بیفته این کمک رو بهتون میکنه.
اما اگه از socket استفاده میکنید همانی هست که بالا عرض شد.
شما که تو هر تاپیک به این و اون میگی دست به کد شو و به ما هم یاد بده ، یک بار هم خودت دست به کد شو و به دیگر کاربران یاد بده ...
:لبخندساده:حالا نمیشه دست به کد نشیم.
http://www.genmaint.com/how-to-see-progress-of-query-execution-during-handle.html
tdkhakpur
جمعه 31 تیر 1390, 11:41 صبح
ایشون فقط میخواستن یه پروگرسبار متحرک داشته باشن که نیازی به نمایش اطلاعاتی نداره ، فقط درحال فعالیت بودن رو نشون میده .
مثلا خوب برا این کار شما باید تو دلفی 2010 به بالا خصوصیت Style از پروگرسبار رو روی pbstMarquee بزارین .
اینطوری اصولی نیست یه چیزی چشمک بزن یا ادا دربیاره اما حقیقت مطلب یه چیز دیگه هست مثل این میمونه که هند و پاکستان باهم دعواشون بگیره بگید اوضاع افغانستان چه جوریه.
Felony
جمعه 31 تیر 1390, 12:13 عصر
این که پرسیدن نداره با sizeof طولش رو بدست بیار.
اگر میگفتی با استفاده از Length یه چیزی ؛ پیاده سازی رشته های در کامپایلر دلفی به صورت اشاره گر هست ، با SizeOf سایز اشاره گری که به رشته شما اشاره میکنه به دست میاد که در نسخه 32 بیتی سایز اشاره گر 4 بیت هست ؛ پس SizeOf کمکی نمیکنه .
اینکه چطور دریافت میشه به اون بانک به ابزاری که ازش استفاده میکنه بستکی داره اگر ازAdoConnection استفاده میکنه رویدادی به اسم ADOQuery1FetchProgress وجود داره که اگه کارت بهش بیفته این کمک رو بهتون میکنه.
منظورتون از جمله بالا این هست که " اگر از ADO استفاده میکنی ، کامپوننت ADOQuery رویدادی با نام FetchProgress داره که ... " درسته ؟!
خوب ، اینو که نن جون آقای ... هم میدونه !
اما اگه از socket استفاده میکنید همانی هست که بالا عرض شد.
خوب من هم گفتم یه نمونه کد از کاری که بالا گفتید قرار بدید .
MohsenB
جمعه 31 تیر 1390, 13:44 عصر
سلام به همه دوستان
با توجه به اینکه دیتابیس من روی یه هاست قرار گرفته و مدت زمانی برای انجام عملیات لازم داره میخوام این مدت زمان لازم برای انجام عملیات روی دیتابیس و یا هر کاری که در برنامه زمان احتیاج داره رو به کاربر یه progres bar یا تصویر یه گیف متحرک نمایش بدم چطور باید این کارو انجام بدم ؟
اینطوری اصولی نیست یه چیزی چشمک بزن یا ادا دربیاره اما حقیقت مطلب یه چیز دیگه هست مثل این میمونه که هند و پاکستان باهم دعواشون بگیره بگید اوضاع افغانستان چه جوریه.
چه ربطی داره ؟
شما سوالو درست بخون . ایشون اینجوری خواستن .
خیلی جاها اینطوریه . مثلا :
سرچ ویندوز ایکس پی
چک آپدیت ویندوز 7
ریپیر شبکه
و ...
tdkhakpur
جمعه 31 تیر 1390, 13:49 عصر
اگر میگفتی با استفاده از Length یه چیزی ؛ پیاده سازی رشته های در کامپایلر دلفی به صورت اشاره گر هست ، با SizeOf سایز اشاره گری که به رشته شما اشاره میکنه به دست میاد که در نسخه 32 بیتی سایز اشاره گر 4 بیت هست ؛ پس SizeOf کمکی نمیکنه .
چرا از خودت مطلب می بافی . یعنی sizeof طول رشته رو میده.
باlength میتونی طول یک متغییر رو از نوع integer رو بدست بیاری؟!!
var
i:integer;
begin
ShowMessage(IntToStr(length(i)));
end;
منظورتون از جمله بالا این هست که " اگر از ADO استفاده میکنی ، کامپوننت ADOQuery رویدادی با نام FetchProgress داره که ... " درسته ؟!
خوب ، اینو که نن جون آقای ... هم میدونه !
خب مشکلت چیه؟!!
خوب من هم گفتم یه نمونه کد از کاری که بالا گفتید قرار بدید .
ارسال شده برو تحقیق کن.
tdkhakpur
جمعه 31 تیر 1390, 13:55 عصر
چه ربطی داره ؟
شما سوالو درست بخون . ایشون اینجوری خواستن .
خیلی جاها اینطوریه . مثلا :
سرچ ویندوز ایکس پی
چک آپدیت ویندوز 7
ریپیر شبکه
و ...
درسته.
ولی اینکه شما فرمودید چه ربطی به انتقال داده داره به نظرم ایشون میخان به کاربر بفهمونن که چقدر مونده تا داده به انتها برسه تا اگر فرصتی شد در این فاصله بتونه کارهای دیگه رو که وقت بهش اجازه میده نجام بده یا چیزی شبیه این.
خیلی جاها اینطوریه . مثلا :
سرچ ویندوز ایکس پی
چک آپدیت ویندوز 7
ریپیر شبکه
و ...
عرض شد اصولی نیست نگفتیم که حتما باید این شکلی باشه.
اما اینکه xp یا اون موارد دیگه این شکلی عمل میکنن اینه که جستجو برای تعیین max یا همون اندازه داده ها خودش دنیایی داره و وقت میگیره به همین دلیل یک تیکه نمایش بصورت ani انجام میگریده تا کاربر لااقل بدونه کامپیوتر هنگ نیست.
Felony
جمعه 31 تیر 1390, 14:00 عصر
باlength میتونی طول یک متغییر رو از نوع integer رو بدست بیاری؟!!
مثال منو دیدی ؟
تو جایی که ما زندگی میکنیم nvarchar نوعی رشته هست نه عدد ، شما رو نمیدونم ...
خب مشکلت چیه؟!!
جناب عالی و خزعبلاتتون که به هم میبافین و یک بار هم نتونستید ازشون درست دفاع کنید .
ارسال شده برو تحقیق کن.
:قهقهه: این اعتماد به نفست ...
tdkhakpur
جمعه 31 تیر 1390, 14:17 عصر
مثال منو دیدی ؟
تو جایی که ما زندگی میکنیم nvarchar نوعی رشته هست نه عدد ، شما رو نمیدونم ...
جناب عالی و خزعبلاتتون که به هم میبافین و یک بار هم نتونستید ازشون درست دفاع کنید .
:قهقهه: این اعتماد به نفست ...
اولا گنده تر از سوادت حرف نزن.
دوم اینکه ای کی یو مگه همیشه داده ها char هستن که بتونی با length اندازه رو حساب کنی طول رشته با اندازه متغییر فرق داره اون چیزی که sizeof میده با چیزی که length میده فرق داره.
مجتبی جون تو راه برنامه نویسی وقتی تازه داشتی میرفتی ما برمی گشتیم زیاد خودت رو دیگران رو خسته نکن.
مرسی
Felony
جمعه 31 تیر 1390, 14:37 عصر
اولا گنده تر از سوادت حرف نزن.
تو این بخش یه جور رفتار میکنی کسی از قبل نشناستتون فکر میکنه خدایی نکرده ، نعوذ بالله Inprise ی ، برو جایی اینطور صحبت کن که کل اعضاش به پیشینت واقف نباشن !
در ضمن جناب عالی در حدی نیستی که میزان سواد کسی رو تعیین کنی و بهش بگی چقدر حرف بزنه ...
char هستن که بتونی با length اندازه رو حساب کنی طول رشته با اندازه متغییر فرق داره اون چیزی که sizeof میده با چیزی که length میده فرق داره.
Objects, interfaces, strings, and dynamic arrays are behind the scene just pointers. They do not contain the real data. They are pointers that refer to the real data. That’s why if you call SizeOf() function on a string or object type, even if your string or object contains huge data; the result is always 4 (as long as Delphi compiler is 32-bits)! SizeOf() function only returns the size of that pointer, not size of the data that pointer refers to. Also that is why we have Length() function for getting size of strings and dynamic arrays, and TObject.InstanceSize class method for getting size of an object.
منبع : http://vcldeveloper.com/articles/different-function-parameter-modifiers-in-delphi/
MohsenB
جمعه 31 تیر 1390, 16:42 عصر
بچه ها کار داره به جاهای باریک میکشه . لطفا به همدیگه احترام بزارین .
اصلا این شروع کننده مطلب چرا نمیاد بگه به جوابش رسیده با نه ؟
------------------------------------------------------------
درسته.
ولی اینکه شما فرمودید چه ربطی به انتقال داده داره ...
منظورم این بود که به مثالی که زدین چه ربطی داره .
عرض شد اصولی نیست نگفتیم که حتما باید این شکلی باشه.
اما اینکه xp یا اون موارد دیگه این شکلی عمل میکنن اینه که جستجو برای تعیین max یا همون اندازه داده ها خودش دنیایی داره و وقت میگیره به همین دلیل یک تیکه نمایش بصورت ani انجام میگریده تا کاربر لااقل بدونه کامپیوتر هنگ نیست.منم منظورم از اون جوابها همین بود . چون سوالشون اینجوری خواسته بود که کاربر سرگرم بشه چون نمیدونن اون کار کی تموم میشه . چون همون طور که دوستان هم گفتن اینجور دسترسی به اطلاعات زمانش به خیلی چیزا بستگی داره .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.