PDA

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 .

ممنون