delphi4arab منتديات دلفي للعرب
كيف استعمل Case..Of - نسخة قابلة للطباعة

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

الصفحات: 1 2


كيف استعمل Case..Of - ELARAPY - 25-07-2011

[COLOR="DarkGreen"]السلام عليكم ورحمة الله وبركاته

أجد صعوبه في استخدام تعليمهCase
ولم اجدها في دورة دلفي للعرب (فيديو)
كيف استخدمها ؟[/COLOR]


كيف استعمل Case..Of - paix144 - 25-07-2011

و عليكم السلام ورحمة الله
شاهد دروس الدورة
إن لم تخني الذاكرة الدرس الرابع


كيف استعمل Case..Of - ELARAPY - 27-07-2011

فعلا اخي الفاضل هو الدرس الرابع وكان لايعمل عندي والان يعمل ولكني لم استطيع فهمها

فانا اجد سهوله لتعليمه if لان المعنى واضح (لو _ افعل ) فما معنى التعليمة case ؟
بمعنى اين الشرط ؟
ولو امكن كتابة مثال وتحويله الى جملة عربيه اي شرحه

السلام عليكم


كيف استعمل Case..Of - أبو معاذ - 27-07-2011

لاحظ أخي الحبيب المثال التالي :
باستعمال IF :
كود :
if MyAction = ACTION1 then // code else if MyAction = ACTION2 then // code ... else if MyAction = ACTIONn then // code;

نفس المثال باستعمال case :
كود :
case MyAction of ACTION1: {code}; ACTION2: {code}; ... ACTIONn: {code}; end;

مثال آخر :

كود :
var i : Integer if i = 0 then showmessage ('i = 0') else if i = 1 showmessage ('i = 1') else if i = 2 showmessage ('i = 2')


تفس المثال باستعمال case :

كود :
Case i of 0 : showmessage ('i = 0') ; 1 : showmessage ('i = 0') ; 2 : showmessage ('i = 0') ; end

ربما تسال و ما الفرق الجوهري بينهما ؟
نظريا Case أسرع في التطبيق من If.
وفقك الله لكل خير.


كيف استعمل Case..Of - ELARAPY - 28-07-2011

بارك الله فيك اخي الحبيب ولكن المثال يشبه ما بالدوره

هل يمكنك تغير نوع المتغير الى String حتى تصل الفكره اكثر
لاني كلما حاولت التغير في المثال أعطاني Ordinal type required

بارك الله فيك


كيف استعمل Case..Of - cargem - 29-07-2011

Case يستخدم عندما يكون المتغير عدد او حرف او (set of [ asdf..fghjk])
وليس String


كيف استعمل Case..Of - cargem - 29-07-2011

تستطيع تحويل String الى set of
وبعدها تستعمل في Case

كود :
case Integer of 0: (Lo, Hi: Cardinal); 1: (Cardinals: array [0..1] of Cardinal); 2: (Words: array [0..3] of Word); 3: (Bytes: array [0..7] of Byte);

كود :
function HexChar(c: Char): Byte; begin case c of '0'..'9': Result := Byte(c) - Byte('0'); 'a'..'f': Result := (Byte(c) - Byte('a')) + 10; 'A'..'F': Result := (Byte(c) - Byte('A')) + 10; else InvalidGUID; Result := 0; end; end;

كود :
function ConvertEraString(const Count: Integer) : string; var FormatStr: string; SystemTime: TSystemTime; Buffer: array[Byte] of Char; P: PChar; begin Result := ''; with SystemTime do begin wYear := Year; wMonth := Month; wDay := Day; end; FormatStr := 'gg'; if GetDateFormat(GetThreadLocale, DATE_USE_ALT_CALENDAR, @SystemTime, PChar(FormatStr), Buffer, SizeOf(Buffer)) <> 0 then begin Result := Buffer; if Count = 1 then begin case SysLocale.PriLangID of LANG_JAPANESE: Result := Copy(Result, 1, CharToBytelen(Result, 1)); LANG_CHINESE: if (SysLocale.SubLangID = SUBLANG_CHINESE_TRADITIONAL) and (ByteToCharLen(Result, Length(Result)) = 4) then begin P := Buffer + CharToByteIndex(Result, 3) - 1; SetString(Result, P, CharToByteLen(P, 2)); end; end; end; end; end;

كود :
if not ScanNumber(S, Pos, N3, L3) then Exit; case DateOrder of doMDY: begin Y := N3; YearLen := L3; M := N1; D := N2; end; doDMY: begin Y := N3; YearLen := L3; M := N2; D := N1; end; doYMD: begin Y := N1; YearLen := L1; M := N2; D := N3; end; end;

كود :
case LocaleType of LOCALE_SHORTDATE: LFormat := GetDateTimeFormat(Locale, kCFDateFormatterShortStyle, kCFDateFormatterNoStyle); LOCALE_LONGDATE: LFormat := GetDateTimeFormat(Locale, kCFDateFormatterFullStyle, kCFDateFormatterNoStyle); LOCALE_SHORTTIME: LFormat := GetDateTimeFormat(Locale, kCFDateFormatterNoStyle, kCFDateFormatterShortStyle); LOCALE_LONGTIME: LFormat := GetDateTimeFormat(Locale, kCFDateFormatterNoStyle, kCFDateFormatterMediumStyle); else LFormat := ''; end;

كود :
function MapFault(Context: Psigcontext_t): TRuntimeError; begin case Context^.trapno of TRAP_OVERFLOW: Result := System.reIntOverflow; TRAP_BOUND: Result := System.reRangeError; TRAP_INVINSTR: Result := System.rePrivInstruction; // This doesn't seem right, but we don't // have an external exception to match! TRAP_STACKFAULT: Result := System.reStackOverflow; TRAP_SEGMENTNP, TRAP_GPFAULT: Result := System.reAccessViolation; TRAP_PAGEFAULT: Result := System.reAccessViolation; else Result := System.reAccessViolation; end; end;

وهناك الكثير في SysUtils.pas


كيف استعمل Case..Of - ELARAPY - 29-07-2011

[COLOR="Purple"]انا قرأت ان Case تستخدم مع كل انواع المتغيرات ما عدا المتغير من النوع الحقيقي Real

فما المشكله مع النوع String

السلام عليكم[/COLOR]


كيف استعمل Case..Of - cargem - 29-07-2011

Case تتعامل فقط مع الاعداد والاحرف لانها ثمتل مجموعة عددية لها بداية ونهاية
[A..Z]
[0..255]
اما String ليس لها بداية ولا نهاية معروفة
لكن تستطيع ان تفعل كالتالي

كود :
type Txword=(word1,word2,word3,word4,word5,word6); .. .. .. var xword:=Txword; begin case xword of word1: word2: word3: word4: word5:
بالتوفيق


كيف استعمل Case..Of - cargem - 29-07-2011

امامك جبال من العقبات في رحلة الدلفي
انتبة تقع في اول مطب
استخدم الاطلاع والبحث
الدلفي تحتاج ممارسة يومية
انصحك ان تتعلم بهدوء خطوة خطوة
القفز لمستويات متقدمة يجعلك سريع الانهيار
اجعل اساسك قوي تصعد سريعا وبثقة
تحياتي