delphi4arab منتديات دلفي للعرب
كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط (/showthread.php?tid=11146)



كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - محمودد - 19-11-2020

السلام عليكم
ممكن كود للتحقق من string على ان يكون فقط ارقام ومن 1 اللا 10


RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - Delphi4Us - 20-11-2020

كود :
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;



RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - larbiparadox - 20-11-2020

وعليك السلام

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

كود :
Case Key of '0'..'9',#8,#13 : else     key:=#0; end;



RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - محمودد - 20-11-2020

اشكركم لكن النص موجود ضمن string وليس ضمن Edit


RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - larbiparadox - 20-11-2020

(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)


RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - sofiane201 - 21-11-2020

إذا كنت تستخدم نسخة 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.

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


RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - larbiparadox - 21-11-2020

(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.

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

بالنسبة لي الحل الانسب ، يبقى شيء واحد تصيغها حسب برنامجك


RE: كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط - محمودد - 21-11-2020

بارك الله بكم