الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ في حال إدخال حرفي أو null

بدأه Friend Online في 30 أبريل 2010 · 8 رد · 634 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي إستفسار بخصوص الإدخال في برنامج و هي

لدي هذا الكود في برنامجي

float UnitCost=0;

float Qty=0;

SingleBsUnit=0; // in header as float

UnitCost = Edit1->Text.ToDouble(0);

Qty = Edit2->Text. ToDouble (0);

SingleBsUnit = UnitCost * Qty;

Edit3->Text = AnsiString(SingleBsUnit);

في حين الإدخال العشري فإن البرنامج يقوم بعملية ضرب الكمية في السعر و إعطائي الناتج في المتغير SingleBsUnit

عند التنفيذ إذا قمت بمسح القيمة الموجودة في Edit1 أو Edit2 تظهر لي رسالة خطأ (EconvertError).

هل هناك طريقة مثل الأمر ToIntDef(0) – حيث عند عدم وجود قيمة مدخلة يتم إعتبار القيمة هي الصفر.

لأن الإدخال الحرفي أو الـ NULL تسبب لي خطأ في البرنامج.

#2

الرجاء يا أخوان

#3

طيب ما هي البيئة التي تعمل عليها؟ هل هي VC.NET؟

أبسط الحلول هو أن يكون تكون الدالة ToDouble تقوم برمي Exception في حالة عدم القدرة على التحويل, و من الـ catch يمكنك أن تقوم بعملية إسناد صفر للمتغيرات.

#4

لماذا بدل المسح. تقوم بتصفير القيمة . بالضرب في صفر او اسناد صفر؟

tvquran_6.gif

#5

الله يعطيكم العافية - انا استخدم borland 5

و أحاول أن أعدل الكود حيث أن المستخدم يجب أن يقوم بإدخال أرقام فقط و لا يقبل منه البرنامج إدخال حروف.

آمل مساعدتكم و شكراً لكم

أخي فهد لم أفهم قصدك -

عملية المسح من المستخدم تكون و انا لا أتحكم بها - حيث أن المستخدم لو مسح محتوى الحقل تظهر له رسالة خطأ و حليتها بالشرط التالي:

if ( Edit16->Text == " " || Edit16->Text =="")

{

Edit16->Text = 0;

}

و لكن تبقى مشكلة لو أن المستخدم أدخل حرق بدل رقم - سيظهر الخطأ مره أخرى - و أرغب في مساعدتكم كيف أجعل البرنامج لا يقبل حروف و في حال أدخل المستخدم حرف يقوم البرنامج بإستبدالة بصفر .

شكراً لك أخي فهد

#6

تسطيع منع المستخدم من أدخال غير الرقم .

void __fastcall TForm2::Edit1KeyPress(TObject *Sender, wchar_t &Key)
{
	 if(!isdigit(Key)&& Key != VK_BACK ){
	 Key = 0;


	 }
}

هذا السطر يسمح بالارقام وبالمسح

لاحظ في الحدث KeyPress

tvquran_6.gif

#7

أخي فهد الله يعطيك العافية

الإدخال ممكن يكون عشري و جربت هذي الطريقة و لكن فقط يسمح لـ int و لا يسمح للإدخال العشري float

هل أستطيع تغيير الكود لكي يقبل الإدخال العشري

#8

أكتب في الشرط :

!isdigit(Key)&& Key != VK_BACK && Key !='.'
tvquran_6.gif

#9

فهد الله يعطيك العافية و يسعدك دنيا و آخرة - الحمد لله ضبط الكود و البرنامج كمان.

الحمد لله

مواضيع مشابهة