الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما البديل عن عبارة Case للتعامل مع المتغيرات النصية (String)

مغلق
بدأه أبو محمد الهذلي في 9 مايو 2002 · 6 رد · 657 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إذا كانت عبارة (if) تستخدم لفحص شرط معين فإن عبارة (Case) هي توسيع لها ولكن للأسف لا تتعامل Case مع النصوص والتحقق منها مثل if فهل هناك طريقة بديلة وعبارة أخرى مع المثال ؟؟

ولكم جزيل الشكر(gift)

#2

السلام عليكم

جرب الطريقة الموجوده في الرابط الاتي :

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

أعيدوا لإسمي لونه المفضل

#3

وعليكم السلام ورحمة الله وبركاته

أولاً : الله يعينك على أسئلتي لأني مبتدئ :'( .

الكود StringToCaseSelect فكرته جميلة، ولكنه لم يعلم معي ويوجد به خطأ : [ i ] ولعل الصواب [ cnt ] - على ما أظن.

وأريدك - مشكوراً - أن توضح لي ما عمل ال function CompareText ؟

وهل أستطيع أن أضع شرطي الخاص بدلاً عنها ؟

وجزاك الله خيراً(f)

#4

السلام عليكم

هلا اخوي

كلنا مبتدؤن :) ;) .

بالنسبة للكود المذكور فكما ذكرت عليك استبدال 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 ...

أعيدوا لإسمي لونه المفضل

#5

وعليكم السلام ورحمة الله و بركاته

لك ألف شكر يا أخي 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)

#6

السلام عليكم

جرب هذا الكود

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

أعيدوا لإسمي لونه المفضل

#7

وعليكم السلام ورحمة الله وبركاته

(f) وجزاك الله خيراً (f)

هذا الموضوع مغلق.

مواضيع مشابهة