كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط
#1
السلام عليكم
ممكن كود للتحقق من string على ان يكون فقط ارقام ومن 1 اللا 10
[-] كل من 1 user says قال شكرا ل محمودد على المشاركة المفيدة
  • fars74
الرد
#2
كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin   // #8 is Backspace   if not (Key in [#8, '0'..'9']) then begin     ShowMessage('Invalid key');     // Discard the key     Key := #0;   end; end;
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 2 users say قال شكرا ل Delphi4Us على المشاركة المفيدة
  • ELARAPY, محمودد
الرد
#3
وعليك السلام

في خصائص الاحداث لـ edit في KeyPress

كود :
Case Key of '0'..'9',#8,#13 : else     key:=#0; end;
[-] كل من 1 user says قال شكرا ل larbiparadox على المشاركة المفيدة
  • محمودد
الرد
#4
اشكركم لكن النص موجود ضمن string وليس ضمن Edit
الرد
#5
(20-11-2020, 06:24 PM)محمودد كتب : اشكركم لكن  النص موجود ضمن string وليس ضمن Edit

سنكتب function نسميها IsValidNumber ترجع لنا قيمة منطقية صح أو خطأ ، بها يمكن التحقق إذا كانت القيمة تحتوي على نص أو أرقام و بعده تحقق أخر إذا كان محصور بين 0 و 15

كود :
function IsValidNumber(s:String):Boolean; var   iValue, iCode: Integer; begin     val(s, iValue, iCode);     if iCode = 0 then begin        if  (strTOint(s) <= 15) and (strTOint(s) >= 0) then        result := true        else        result := false     end else      result := false; end;

مثال إستدعاء الدالة بوضع قيمة في edit ، يمكن تغيير edit بمتغير أخر

كود :
  if IsValidNumber(edit1.Text) = false then     ShowMessage('contains String!  or values not between 0 and 15  ')   else     ShowMessage('ok');


.rar   IsValidNumber.rar (الحجم : 170.07 ك ب / التحميلات : 3)
[-] كل من 2 users say قال شكرا ل larbiparadox على المشاركة المفيدة
  • محمودد, Delphi4Us
الرد
#6
إذا كنت تستخدم نسخة XE أو أحدث, يمكنك إستعمال الانماط التعبيرية أو Regular Expressions للتحقق من نمط معين تريده أن يكون في string.

في uses أضف:
PHP كود :
System.RegularExpressions 

بعدها:

PHP كود :
// str هو السترينغ الذي تريد التحقق منه

  if TRegEx.IsMatch(str, '^([1-9]|10)$') then
// string is a number between 1 and 10
  else
// do something else 

في النمط, ^ تعني بداية النص, ما داخل القوسين للاختيار بين شرطين وهما [1-9] وهو يتحقق من أي رقم بين 1 و 9, ثم 10 إذا لم يتحقق الشرط الأول, ثم $ وتعني نهاية السترينغ أي يجب أن تكون بدايته ونهايته أرقاما بين 1 و 10.

الانماط التعبيرية جيدة جدا أنصحك بتعلمها.
[-] كل من 3 users say قال شكرا ل sofiane201 على المشاركة المفيدة
  • larbiparadox, محمودد, Delphi4Us
الرد
#7
(21-11-2020, 03:35 PM)sofiane201 كتب : إذا كنت تستخدم نسخة XE أو أحدث, يمكنك إستعمال الانماط التعبيرية أو Regular Expressions للتحقق من نمط معين تريده أن يكون في string.

في uses أضف:
PHP كود :
System.RegularExpressions 

بعدها:

PHP كود :
// str هو السترينغ الذي تريد التحقق منه

  if TRegEx.IsMatch(str, '^([1-9]|10)$') then
// string is a number between 1 and 10
  else
// do something else 

في النمط, ^ تعني بداية النص, ما داخل القوسين للاختيار بين شرطين وهما [1-9] وهو يتحقق من أي رقم بين 1 و 9, ثم 10 إذا لم يتحقق الشرط الأول, ثم $ وتعني نهاية السترينغ أي يجب أن تكون بدايته ونهايته أرقاما بين 1 و 10.

الانماط التعبيرية جيدة جدا أنصحك بتعلمها.

بالنسبة لي الحل الانسب ، يبقى شيء واحد تصيغها حسب برنامجك
[-] كل من 3 users say قال شكرا ل larbiparadox على المشاركة المفيدة
  • sofiane201, محمودد, Delphi4Us
الرد
#8
بارك الله بكم
الرد


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


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