![]() |
|
كيف استعمل 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 امامك جبال من العقبات في رحلة الدلفي انتبة تقع في اول مطب استخدم الاطلاع والبحث الدلفي تحتاج ممارسة يومية انصحك ان تتعلم بهدوء خطوة خطوة القفز لمستويات متقدمة يجعلك سريع الانهيار اجعل اساسك قوي تصعد سريعا وبثقة تحياتي |