خطأ في الكود if key = a..z then ؟
#1
السلام عليكم ورحمة الله
اخواني الكرام...

اليوم وانا احاول ان اعمل برنامح يظهر مسج عند الضغط على اي حرف في الكيبورد...
ولكن لا ادري ما المشكلة حقيقاّ...

الكود الذي احاول استخدامه هو

PHP كود :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = a..z then
  begin
    showmessage
('it is a : letter!');8
  end
;

end; 

ولكن الخطأ يظهر في الكود التالي...

PHP كود :
if key = a..z then 

وأعتقد ان الخطأ من a..z والله اعلم..

ولكن لا ادري في الحقيقة بظبط ما الخطأ...
بارك الله فيكم والسلام عليكم ورحمة الله و بركاته..
الرد
#2
إليك الكود الصحيح:
كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key in ['a'..'z'] then begin showmessage('it is a : letter!'); end; end;
الرد
#3
نعم اخي بارك الله فيكم...
شكرا كثيرا...

الكود صحيح..
وجربته الآن...

شكرا مرة ثانية..
وبارك الله فيكم والسلام عليكم
الرد
#4
السلام عليكم
و لكن لا تنس أخي
كود :
if( key in ['a'..'z'] ) and ( key in ['A'..'Z'] )
الرد
#5
يمكن اختصارها
PHP كود :
if key in ['a'..'z','A'..'Z'] then ... 
أو
PHP كود :
if UpCase(key) in ['A'..'Z'] then... 
والسلام عليكم
[-] كل من 1 user says قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • mohamed49
الرد
#6
DeltaAziz الضاهر انت خبير بجد !!
شكرا ً لك اخي الكريم وكثر الله من امثالكم

في الحقيقة المنتدى جميل جدا ً و اول منتدى عربي اراه يعمل دروس دلفي بالفيديو لأفادة الناس
بارك الله فيكم
الرد
#7
نعم اخواني بارك الله فيكم...
بخصوص... اخي touhami فملاحظتك مهمة للغاية ... وبارك الله فيك على تذكيرك لي بها...

اما هنا سؤال...

اذا اردت انا انه مثلا عند الضغط على اي زر في الكيبورد يكون حرفا فسيتم اظهار
showmessage الى المستخدم...

هل يعتبر هذا الكود الذي وشعته صحيح اخي ؟

PHP كود :
if( key in ['a'..'z'] )  and ( key in ['A'..'Z'] ) 

ألا يجب استخدام الكلمة or بدل من استخدام كلمة and ؟

لأن عند استخدام ال and يجب ان يتحقق كلا الشرطين...
اليس كذلك؟:eek:
اعتقد انني شاهدت هذا في الدورة ان لك اكن مخطئا ؟

نعم... هذا اولا...

ثانيا...

اخي ديلتها عزيز

الأولى واضحة بنسبة لي...
اما الثانية فشوي معقدة :eek:

يعني ماذا يفعل
PHP كود :
UpCase(key) 

هو للأحرف الكبار ؟

طيب ما هو العكس ؟

ثانيا ما فائدة الكود
PHP كود :
UpCase(key) 

ان كان هناك يوجد
PHP كود :
in ['A'..'Z'] 

التي تشير الى احرف كبار؟

بارك الله لك
الرد
#8
moh__ كتب :يعني ماذا يفعل
PHP كود :
UpCase(key) 
هو للأحرف الكبار ؟
هذا ما فهمته من ما أشار إليه الأخ DeltaAziz
PHP كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if UpCase(key) in ['a'..'z','A'..'Z'] then
  begin
    showmessage
(''+UpCase(key));
  
end; 
الرد
#9
medreg كتب :هذا ما فهمته من ما أشار إليه الأخ deltaaziz
PHP كود :
procedure tform1.edit1keypress(sender: Tobject; var key: Char);
begin
if upcase(key) in ['a'..'z','a'..'z'] then
  begin
    showmessage
(''+upcase(key));
  
end; 

وحسب إجتهادي من ما فهمت منكم الميساج يظهر حسب حالة الحرف

كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if UpCase(key)in ['a'..'z','A'..'Z'] then begin showmessage(key); end else if UpCase(key) in['ي'..'أ','ا']then begin showmessage(key); end; end;
الرد
#10
moh__ كتب :هل يعتبر هذا الكود الذي وشعته صحيح اخي ؟

PHP كود :
if( key in ['a'..'z'] )  and ( key in ['A'..'Z'] ) 

ألا يجب استخدام الكلمة or بدل من استخدام كلمة and ؟

لأن عند استخدام ال and يجب ان يتحقق كلا الشرطين...


أولا: معك حق أخي هذا الكود هو لشرط يتحقق إذا تم الضغط على أحد الأحرف الصغيرة وفي نفس الوقت أحد الأحرف الكبيرة وهذا لا يمكن أن يتحقق؟؟؟

والصواب أن يكتب:
PHP كود :
if( key in ['a'..'z'] )  or ( key in ['A'..'Z'] ) then 

ثانيا: لقد قدم الأخ المشرف الكود المختصر وهو الذي أراه مناسبا:
PHP كود :
if UpCase(key) in ['A'..'Z'] then
    ShowMessage
('it is a : '+key); 

moh__ كتب :اما الثانية فشوي معقدة :eek:
يعني ماذا يفعل
PHP كود :
UpCase(key) 
هو للأحرف الكبار ؟
طيب ما هو العكس ؟

تستعمل UpCase لتحويل الحرف (Char) إلى حرف كبير، وهناك دوال كثيرة مشابهة لها.
والعكس هو LowerCase لكنها تستعمل مع العبارات النصية (String) وبالتالي يكون استعمالها كما يلي:
PHP كود :
if  pchar(LowerCase(key))^ in ['a'..'z'] then
    ShowMessage
('it is a : '+key); 
والنتيجة هي نفسها.

moh__ كتب :ثانيا ما فائدة الكود
PHP كود :
UpCase(key) 
ان كان هناك يوجد
PHP كود :
in ['A'..'Z'] 
التي تشير الى احرف كبار؟

طبعا لا فائدة منها، فإذا استعملت UpCase يمكنك الاستغناء عن الشرط الثاني.
.
moh__ كتب :نعم اخواني بارك الله فيكم...

اذا اردت انا انه مثلا عند الضغط على اي زر في الكيبورد يكون حرفا فسيتم اظهار
showmessage الى المستخدم...

وإذا أردت إدراج الرموز (مثل: ~#/*-+$^ù*...)، إليك هذا الكود:
PHP كود :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  
if not (key in ['0'..'9']) then
    ShowMessage
('it is a : '+key);
end; 
وإذا أردت كل الحالات السابقة، استعمل هذا الكود:
PHP كود :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  
case UpCase(key) of
  
'A'..'Z': ShowMessage(key + ' is a letter');
  
'0'..'9': ShowMessage(key+' is a Number');
  else 
ShowMessage(key+' is a Symbole');
end;
end; 
والسلام عليكم.
الرد


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


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