View Full Version : سوال: استفاده از gauge
mtfa65
پنج شنبه 23 آبان 1392, 20:07 عصر
سلام
من می خوام با استفاده از gauge درصی یه چیزی رو نشون بدم.
این کار رو می کنم و از پارامترهای strtoint استفاده می کنم مشکلی ندارم اما اعداد من بزرگتر از integer هستند و پیغام ارور می ده که عددت بزرگتر است و از strtofloat هم نمیشه استفاده کرد حال باید چیکار کنم؟
با تشکر
hadisalahi2
شنبه 25 آبان 1392, 11:16 صبح
خوب ببین نوع داده اون پارامتر از چه نوعی تعریف شده
تغییرش بده
mtfa65
شنبه 25 آبان 1392, 12:42 عصر
چطوری باید این کار رو کنم؟
یوسف زالی
شنبه 25 آبان 1392, 14:22 عصر
باید رنجتون رو تطبیق بدید.
کدتون رو بگذارید بگم
mtfa65
شنبه 25 آبان 1392, 15:20 عصر
سلام. من از این کد استفاده می کنم.
procedure TForm1.Button1Click(Sender: TObject);
begin
Gauge1.MaxValue:=strtoint(edit1.Text);
Gauge1.Progress:=strtoint(edit2.Text);
end;
فرض کنیید edit1 دارای این مقدار است 6350646546131265
اگر مقدار کم باشد مشکلی نیست.
با تشکر
یوسف زالی
شنبه 25 آبان 1392, 22:18 عصر
شما باید رنجتون رو از صفر تا صد تنظیم کنید (یا هر رنجی که راحت ترید) بعد با تبدیلات در لحظه مکان جاری رو محاسبه کنید.
برای مثال فرض کنید حد بالایی شما 1,000,000,000,000 باشه، و عدد جاری شما 321,234,567,890 باشه، این معادل اینه که عدد بالایی تون رو 100 و عدد مکان جاری رو 32 در نظر گرفته باشید:
ProgressBar1.Min := 0;
ProgressBar1.Max := 100;
ProgressBar1.Position := round( StrToFloat(Position {here is '321234567890'} ) / StrToFloat(UpSide {here is '1000000000000'}) * 100 );
mtfa65
یک شنبه 26 آبان 1392, 11:50 صبح
شما باید رنجتون رو از صفر تا صد تنظیم کنید (یا هر رنجی که راحت ترید) بعد با تبدیلات در لحظه مکان جاری رو محاسبه کنید.
برای مثال فرض کنید حد بالایی شما 1,000,000,000,000 باشه، و عدد جاری شما 321,234,567,890 باشه، این معادل اینه که عدد بالایی تون رو 100 و عدد مکان جاری رو 32 در نظر گرفته باشید:
ProgressBar1.Min := 0;
ProgressBar1.Max := 100;
ProgressBar1.Position := round( StrToFloat(Position {here is '321234567890'} ) / StrToFloat(UpSide {here is '1000000000000'}) * 100 );
سلام
بسیار بسیار عالی مشکل برطرف شد.بسیار بسیار عالی بود.
دوست عزیز آیا در همه موارد اینگونه است؟
من در برنامه ام اعداد محاسباتی زیادی دارم واز strtofloat استفاده کردم از متغیی real و قتی اعداد من بیش از حد بزرگتر می شن عددی در عددی دیگه ضرب میشه وقتی اعداد زیار می شن با حرف E نمایش می ده آیا برای این هم راهی است که اعداد کامل رو در محاسبات نشون بده یا نه کاری نمیشه کرد؟
و یه مورد دیگه اینکه از تابع مبدل اعداد به حروف استفاده میکنم البته تابع رو از توی همین سایت برداشتم . وقتی در بین اعداد ممیز می ذاریم تبدیل انجام نمیشه آیا برای این هم راهی است؟
بسیار بسیار ممنون
یوسف زالی
یک شنبه 26 آبان 1392, 12:27 عصر
برای نمایش باید از Format استفاده کنید. همین دستور رو سرچ کنید.
معمولا برای اعداد بسیار بزرگ باید یک یونیت جدا یا براش بنویسید یا دانلود کنید. یادمه تو همین سایت برای یکی گذاشتم ولی یادم نیست کدوم پسته.
سرچ کنید.
بالاخره هر زبانی محدودیت هایی برای محاسبات قائله، برای کار با فراتر از محدوده ها، یا باید تبدیلات رشته ای انجام بدید یا مثل راه پست قبلم، محدوده ها رو اصلاح کنید.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.