![]() |
|
[تمرين] استخراج حجم String بدون استعمال الدالة Length - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : تمارين دلفي وحلول (https://delphi4arab.net/forum/forumdisplay.php?fid=16) +--- الموضوع : [تمرين] استخراج حجم String بدون استعمال الدالة Length (/showthread.php?tid=3896) |
[تمرين] استخراج حجم String بدون استعمال الدالة Length - TF6M - 21-02-2012 1- "لم افهمك انا استعمل دالفى 2007 دائما شرط UNICODE...." أ تكلم على إصدار 2009 و ما يليه 2- كل الفكرة هي معرفة بنية الـ Data Type , كما أشرت سابقا طول السلسة المحرفية يخزن في الخانة 0 قبل بداية السلسلة , لاحظ مثال الأخ : هنا 3- "لماذا طرحت 2 من المؤشر pl " , نفس الفكرة 2 المؤشر عوض التأشير على بداية المحارف نرجع مرتين أو 4 (Ascii or unicode) لقراءة محتوى الخانة 0 4- "كيف ذالك حسب الحاجة الدالة مخصصة للاتيان ب طول السلسة النصية ...." لن أستخدم هده الدالة لحساب طول من فئة 10 و 20 فكر أهم شئ في كتابة الكود هي كيفيةإستعماله بطريقة مثلا . 5- " مثلا طول سلسلة نصية 130000 محرف هل الدالة تعيد النتيجة صحيحة . " هنا نحتاج قالب للقيمة و ليس إعادة كتابة فكرة أخرى , Dword / Big Int .... ect الفكرة بسيطة .[url=http://www.delphi4arab.net/forum/showpost.php?p=33021&postcount=10][/url] [تمرين] استخراج حجم String بدون استعمال الدالة Length - hanipino - 21-02-2012 الاخ louay محاولتك صحيحة لاكن مع ShortString Maximum length = 255 characters و بالتالى يمكن تخزين طول هذه السلسلة فى 1 بايت فقط و موقع هذا الاخير قبل بداية السلسة الحرفية تماما . عكس String المطلوب فى التمرين . ------------------------ كود : - كل الفكرة هي معرفة بنية الـ Data Type , كما أشرت سابقا طول السلسة المحرفية يخزن في
الخانة 0 قبل بداية السلسلة , لاحظ مثال الأخ : هناPHP كود : SizeOf(ShortString) = 256 Byteكود : - "كيف ذالك حسب الحاجة الدالة مخصصة للاتيان ب طول السلسة النصية ...."
لن أستخدم هده الدالة لحساب طول من فئة 10 و 20 فكر [COLOR="Red"]أهم شئ في كتابة الكود هي كيفية
إستعماله بطريقة مثلا .[/COLOR]انا فى الحقيقة اخطاءت فى صياغة التمرين كان قصدى بعدم استعمال اى دالة بل بالاعتماد على المؤشرات الطريقة موجودة فى هذا الموضوع ... وهى التى اردت استعمالها فى الحل ... .
[تمرين] استخراج حجم String بدون استعمال الدالة Length - me_delphi - 23-02-2012 وعليكم السلام ورحمة الله وبركاته هده محاولتي ...بعيدا عن المؤشرات و الأسمبلي ![]() PHP كود : function LengthOfSTR(S: string): Byte;[تمرين] استخراج حجم String بدون استعمال الدالة Length - me_delphi - 23-02-2012 تعديل PHP كود : function LengthOfSTR(S: string): Byte;[تمرين] استخراج حجم String بدون استعمال الدالة Length - phpbb3 - 23-02-2012 محاولتي PHP كود : function strlen(str:string):LongInt ;[تمرين] استخراج حجم String بدون استعمال الدالة Length - hanipino - 24-02-2012 me&delphi و phpbb3 كلا المحاولتين صحيحة و تعتمد على (حتمية انتهاء السلسلة النصية ب بايت صفرى #0) + و كلاهما ايضا يعتمد على حلقة و بالتالى كلما طالت السلسلة النصية ازداد عدد الحلقات (يوجد طريقة احسن) شكرا لكم . [تمرين] استخراج حجم String بدون استعمال الدالة Length - me_delphi - 24-02-2012 إقتباس :كلما طالت السلسلة النصية ازداد عدد الحلقات كما تعلم أخي hanipino طول محارف string لا يتعدى 255 لهدا فالحلقة لن تكون طويلة ...أحسن من دلك ...السرعة انها asm ...هدا مثال PHP كود : function LenOfStr(s: string): Byte;[تمرين] استخراج حجم String بدون استعمال الدالة Length - hanipino - 25-02-2012 كود : كما تعلم أخي hanipino طول محارف string لا يتعدى 255 لهدا فالحلقة لن تكون طويلة1 - لست معك طول سلسلة نصية string يتعدى بكثير 255 محرف بل يصل الى(High(Integer اى ما يعادل 2GB حوالى 2 مليار بايت (حرف .. دون UNICODE) اما 255 محرف فهى تخص ShortString وليس string 2 - فيما يخص الدالة بالاسمبلى ... جيدة ... وهذه احسن منها لانها اصغير منها ب 4 بايت . PHP كود : function GetStrLen(S: string): Integer;شكرا لك اخى me&delphi [تمرين] استخراج حجم String بدون استعمال الدالة Length - me_delphi - 25-02-2012 إقتباس :يتعدى بكثير 255 هل نستطيع أن نعلن عن متغير PHP كود : var S:String[255]; هكدا PHP كود : var S:String[256]; [تمرين] استخراج حجم String بدون استعمال الدالة Length - hanipino - 25-02-2012 إقتباس :هل نستطيع أن نعلن عن متغير لا نستطيع (لها اسبابها لا ادرى) ... لاكن هذا لا يعنى انه String لا يستطيع حمل اكثر من 255 محرف ... قم بتجربة صغيرة على String ... . عندما نقول var S: String هذا لا يساوى إقتباس :var S:String[256]; ---------------------- لو كان String لا يتعدى 255 محرف اى طول السلسلة لا يخزن فى اكثر من واحد بايت ... لاكن عندما ننقح الدالة length نرى انه تمت قراءت 4 بايت للاتيان بطول السلسلة و ليس قراءت 1 بايت ... . إقتباس : SUB EAX, 4 |