إذا كانت عبارة (if) تستخدم لفحص شرط معين فإن عبارة (Case) هي توسيع لها ولكن للأسف لا تتعامل Case مع النصوص والتحقق منها مثل if فهل هناك طريقة بديلة وعبارة أخرى مع المثال ؟؟
ولكم جزيل الشكر(gift)
إذا كانت عبارة (if) تستخدم لفحص شرط معين فإن عبارة (Case) هي توسيع لها ولكن للأسف لا تتعامل Case مع النصوص والتحقق منها مثل if فهل هناك طريقة بديلة وعبارة أخرى مع المثال ؟؟
ولكم جزيل الشكر(gift)
السلام عليكم
جرب الطريقة الموجوده في الرابط الاتي :
Case statement that accepts string types
http://delphi.about.com/bltip0202.htm
ان لم تكن هي الطريقة المطلوبة اتمنى توضيح السؤال اكثر .
(f)
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
وعليكم السلام ورحمة الله وبركاته
أولاً : الله يعينك على أسئلتي لأني مبتدئ :'( .
الكود StringToCaseSelect فكرته جميلة، ولكنه لم يعلم معي ويوجد به خطأ : [ i ] ولعل الصواب [ cnt ] - على ما أظن.
وأريدك - مشكوراً - أن توضح لي ما عمل ال function CompareText ؟
وهل أستطيع أن أضع شرطي الخاص بدلاً عنها ؟
وجزاك الله خيراً(f)
السلام عليكم
هلا اخوي
كلنا مبتدؤن :) ;) .
بالنسبة للكود المذكور فكما ذكرت عليك استبدال i بــ cnt .
طبعا الكود لن يعطيك اي نتيجة لان الكلمة 'delphi' غير موجودة ضمن الكلمات المرفقة . غير delphi بدلا عن delhpi ( خطأ مطبعي في الصفحة ) وسيعمل الكود .
بالنسبة للدالة CompareText وضيفتها المقارنه بين 2 strings ولتكن(s1,s2), ان كانت s1=s1 تقوم الدالة بارجاع 0 ان كانت s1>s2 ترجع الدالة قيمة اكبر من 0 ان كانت s1
مقارنة الـ strings تتم عن طريق مقارنة الاحرف (قيمة الـ ASCII للحرف ) . راجع Delphi help لمزيد من المعلومات عن الدالة السابقة .
هناك دوال اخرى مثل
StrComp , AnsiStrComp , AnsiCompareStr ,AnsiCompareText ,AnsiStrIComp , CompareStr, StrIComp , StrLComp , StrLIComp , SameText ...
راجع الـ help لمعلومات عن الدوال السابقة وعن اختلافها . اي استفسار الاخوة كلهم في الخدمة ان شاء الله .
ما هو الشرط الذي تود وضعه بدلا عن CompareText ؟
(f)
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
وعليكم السلام ورحمة الله و بركاته
لك ألف شكر يا أخي tmaaa
بالنسبة لطريقة الكود ظهر لي أنها لا تنفعني لأني أريد التحقق من إدخالات المستخدم ومقارنتها بقيم معروفة مُسبقاً في البرنامج.
وبعد التفكير ظهر لي استخدام Array مع حلقة For بدلاً من Case
وهذا مثال يوضح هذه الطريقة وقد نجحت معي والحمد لله
var
Words : Array [1..5] of String;
Index : Integer;
begin
Words [1] := 'محمد';
Words [2] := 'عادل';
Words [3] := 'عبد الله';
Words [4] := 'خالد';
Words [5] := 'راشد';
For index := Low(Words) To High(Words) Do
begin
if Edit1.Text = Words[index]then begin
Label1.Caption := Edit1.Text;
Break;
end else if Index < High(Words) then Continue
else begin
ShowMessage('هذا الاسم غير صحيح');
Edit1.Text := '';
end;
end;
end;
وإذا كانت الطريقة طويلة فالشكر لمن يدلنا على الطريق المختصرة.
وجزاكم الله خيراً(f)
السلام عليكم
جرب هذا الكود
function StringToCaseSelect
(Selector : string;
CaseList: array of string): Integer;
var cnt: integer;
begin
Result:=-1;
for cnt:=0 to Length(CaseList)-1 do
begin
if CompareText(Selector, CaseList[cnt]) = 0 then
begin
Result:=cnt;
Break;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Words:array of string;
begin
setlength(Words,5);
Words [0] := 'محمد';
Words [1] := 'عادل';
Words [2] := 'عبدالله';
Words [3] := 'خالد';
Words [4] := 'راشد';
case StringToCaseSelect(Edit1.Text,Words) of
0..4: Label1.Caption:=Edit1.Text;
else
begin
ShowMessage('هذا الاسم غير صحيح');
Edit1.Text := '';
end;
end;
end;(f)
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
وعليكم السلام ورحمة الله وبركاته
(f) وجزاك الله خيراً (f)
هذا الموضوع مغلق.