View Full Version : StrToFloat
alaveh
چهارشنبه 01 خرداد 1392, 01:49 صبح
سلام دوستان
چرا این کار نمیکنه ؟
StrToFloat('22.22');
میگه :
is not a valid floating point value
alaveh
چهارشنبه 01 خرداد 1392, 02:12 صبح
دوستان یافتم
تبدیلش کردم به :
StrToFloat('22/22');
درست شد . ولی اینجوری اگر بخوام یک edit رو تبدیل به عدد کنم که نمیشه . اینجوری باید کد نویسی کنم که یا با . یا با / هر کدوم بود درست کار کنه .
راهی نیست درست کار کنه خودش ؟
alaveh
چهارشنبه 01 خرداد 1392, 03:25 صبح
خیلی جالبه . این فانکشن رو نوشتم براش . کار میکنه . و نقطه رو به / تبدیل میکنه . ولی وقتی توی دیتابیس سیو میکنم / رو به عنوان تقسیم میبینه و 6/2 رو 3 مینویسه :D
function StrToReal(Str : String) : Real;
var i : smallint;
str2:string;
begin
try
Result:=StrToFloat(str);
except
i:=pos('/',str);
if i<>0 then
Begin
str2:=copy(str,0,i-1)+'.'+copy(str,i+1,10);
Result:=StrToFloat(str2);
End Else Begin
i:=pos('.',str);
str2:=copy(str,0,i-1)+'/'+copy(str,i+1,10);
Result:=StrToFloat(str2);
End;
end;
end;
Felony
چهارشنبه 01 خرداد 1392, 05:37 صبح
درستش همون . هست و دلفی هم باهاش مشکلی نداره ، اتفاقا وقتی از / استفاده میکنید باید پیغام خطای invalid floating point value بده ، شما احتمالا تنظیمات مربوط به Regional & Language ویندوز رو عوض کردید .
خیلی جالبه . این فانکشن رو نوشتم براش . کار میکنه . و نقطه رو به / تبدیل میکنه . ولی وقتی توی دیتابیس سیو میکنم / رو به عنوان تقسیم میبینه و 6/2 رو 3 مینویسه :D
کجاش جالبه ؟ وقتی نوع فیلد رو عددی در نظر میگیرید و / میزنید توقع دارید پارسر بانک اطلاعاتی معجزه کنه و از قصد شما آگاه بشه و به جای تقسیم ممیز حساب کنه ؟!
alaveh
چهارشنبه 01 خرداد 1392, 15:12 عصر
درستش همون . هست و دلفی هم باهاش مشکلی نداره ، اتفاقا وقتی از / استفاده میکنید باید پیغام خطای invalid floating point value بده ، شما احتمالا تنظیمات مربوط به Regional & Language ویندوز رو عوض کردید .
کجاش جالبه ؟ وقتی نوع فیلد رو عددی در نظر میگیرید و / میزنید توقع دارید پارسر بانک اطلاعاتی معجزه کنه و از قصد شما آگاه بشه و به جای تقسیم ممیز حساب کنه ؟!
خوب برادر من نمیشه که . وقتی دلفی داره StrToFloat رو انجام میده بعد به جای . داره / میذاره و میفرسته من چکار کنم ؟ این که با / میفرسته خود StrToFloat میفرسته یعنی خروجیشه من که این کار رو نمیکنم . نه والا تنظیمات رو هم عوض نکردم . اصلا تا حالا این مشکل رو نداشتم . حالا اصلا کار ندارم . گیریم سیستم من مشکل داره . اینجوری که ممکنه تو سیستم یوزر هم همین ایراد رو بگیره پس . دستور دیگه ای نیست که به جای این ازش استفاده کنم و قابل اعتماد باشه ؟ اگر نیست چه راهی رو برای همین مشکل پیشنهاد میکنید ؟
developing
چهارشنبه 01 خرداد 1392, 21:21 عصر
با سلام
شما احتمالا تنظیمات مربوط به Regional & Language ویندوز رو عوض کردید .
شما باید تنظیمات Regional and Language رو تغییر بدی.
در ویندوز ۷ از مسیر زیر:
Control Panel>Region and Language سپس برگه ی Formats از اینجا دکمه ی ...Additional Settings و در برگه ی Numbers قسمت Decimal Symbole رو از / به نقطه(.) تغییر می دی.
در ضمن تبدیل اعداد در دلفی از تنظیمات ویندوز تبعیت می کنه.
مثلا در جایی که تنظیمات ممیز / حساب میشه نباید توقع داشت با زدن نقطه (.) بفهمه منظور شما ممیز بوده.
alaveh
چهارشنبه 01 خرداد 1392, 22:25 عصر
با سلام
همونطور که حاج مجتبی گفتن:
شما باید تنظیمات Regional and Language رو تغییر بدی.
در ویندوز ۷ از مسیر زیر:
Control Panel>Region and Language سپس برگه ی Formats از اینجا دکمه ی ...Additional Settings و در برگه ی Numbers قسمت Decimal Symbole رو از / به نقطه(.) تغییر می دی.
در ضمن تبدیل اعداد در دلفی از تنظیمات ویندوز تبعیت می کنه.
مثلا در جایی که تنظیمات ممیز / حساب میشه نباید توقع داشت با زدن نقطه (.) بفهمه منظور شما ممیز بوده.
دم شما گرم
درست شد . احتمالا نرم افزای نصب کرده بودم که باعث شده نقطه به / تبدیل بشه توی Decimal Symbole .
ممنون
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.