حل مشكلة is not a valid floating point value
#1
بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته


[صورة: attachment.php?attachmentid=4203&stc=1&d=1386951635]


في الحقيقة عانيت من هذه المشكلة كثيرا في قواعد البيانات ، حيث المشكلة تكمن في أن تغيير الإعدادات الإقليمية لتتناسب مع برنامجك خاصة الفاصلة و طبعا ان كنت تبرمج برنامج تجاري فهذا الأمر مرهق و متعب ، لذا و يعد تقليب النت Big Grin وجدت هذا الكود الذي يقوم بتغيير الفاصلة حيث أنك تجدها في بعض الأحيان " , " و في بعض الأحيان "." و من خلال الكود تقوم أنت بجعلها كما تحب فإما " , " و إما "." كما يفضلها الكثيرون Big GrinBig Grin

كود :
procedure TForm1.FormCreate(Sender: TObject);
var
Locale : LongInt;
begin
Locale := GetUserDefaultLCID();
SetLocaleInfo(Locale, LOCALE_SThousand, '''');
SetLocaleInfo(Locale, LOCALE_SDecimal, '.');
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0);
end;

end.
حيث أننا في الـ OnCreate الخاصة بالنافذة الرئيسية للبرنامج نقوم بجعل الفاصلة الإفتراضية في الويندوز "." .


و لا تنسونا من صالح دعائكم.
لا إله إلا الله محمد رسول الله
[-] كل من 1 user says قال شكرا ل مبرمج مبتدأ على المشاركة المفيدة
  • AgroSoft
الرد
#2
السلام عليكم وبعد
فعلا هذا الكود مهم وسف يكون حلا مثاليا لمختلف البرامج لاسيما منها التجارية بارك الله فيك وأنت مشكور شكرا جزيلا
الرد
#3
و عليكم السلام و رحمة الله و بركاته حياك الله حبيبنا، و بورك فيك أنت أيضا
لا إله إلا الله محمد رسول الله
الرد
#4
السلام عليكم
إقتباس :نقوم بجعل الفاصلة الإفتراضية في الويندوز "." .
لم أجرب الكود , لكن إن كان هذا يؤثر على عمل الفاصلة على النظام ككل فأنا أعتقد بأنه ليس حلا مثلاليا
يمكن التحقق من المفتاح المدخل في حدث OnKeyPress إن وجد النفتاح المدخل هو النقطة فيجعل المفتاح مساويا لـ #0 ويستبدله بـ ascii الفاصلة ,
كود :
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#46 then  key:=#0;key:=#44;

end;
ومن يتهيب صعود الجبال يعش أبد الدهر بين التلال و الحفر
الرد
#5
و عليكم السلام و رحمة الله تعالى و بركاته
شكرا جزيلا أخي وبارك الله فيك و جعله في ميزان حسناتك
يمكن أن نختصر الكود الذي وضعته في الكود التالي:
If DecimalSeparator = ',' Then DecimalSeparator := '.' ;
بالتوفيق
الرد
#6
مبرمج مبتدأ كتب :حيث أننا في الـ OnCreate الخاصة بالنافذة الرئيسية للبرنامج نقوم بجعل الفاصلة الإفتراضية في الويندوز "." .

و عليكم السلام و رحمة الله و بركاته
و لماذا التغيير في خصائص النظام إذا كنت تريد من برنامجك أن يتأقلم على كل نظام يشتغل عليه ؟
أنظر إلى هذه الفكرة علها تفيدك :
كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key=#46) or (key=#44) then
  key:= DecimalSeparator;
end;

و الله الموفق لما فيه الخير
من قال حاد عن أصله أو قال مات فقد كذب
[-] كل من 1 user says قال شكرا ل h-farid على المشاركة المفيدة
  • AgroSoft
الرد
#7
يمكنك أيضا أن تعالج الكود السابق على حسب ذوقك. مثلا أن تتأكد أنه لن يتم إدخال الفاصلة إلا مرة واحدة في الـ Edit و كذلك تجبر الـ Edit على تقبل الأرقام فقط دون الحروف. كل ذلك باستخدام الفكرة التي أريتكها في قطعة الكود السابقة.
من قال حاد عن أصله أو قال مات فقد كذب
الرد
#8
بوركتم أحبابي على إثراء هذا الموضوع، و جعل الله جهدكم في ميزان حسناتكم
لا إله إلا الله محمد رسول الله
الرد
#9
وفيك بارك الله. Rolleyes
من قال حاد عن أصله أو قال مات فقد كذب
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم