delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف اجعل string لايقبل سوا ارقام ومن 1 الى 10 فقط
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
ممكن كود للتحقق من string على ان يكون فقط ارقام ومن 1 اللا 10
كود :
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;
وعليك السلام

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

كود :
Case Key of '0'..'9',#8,#13 : else     key:=#0; end;
اشكركم لكن النص موجود ضمن string وليس ضمن Edit
(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');

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

الانماط التعبيرية جيدة جدا أنصحك بتعلمها.
(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.

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

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