most hacker

قصة حياة زر الإنتر

15 ردود في هذا الموضوع

و الله معلومة قيمة

شكرا جزيلًا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مقاله لطيفه ولكن عندي سؤال..هل فعلا تنفيذ الامر

\r\n

او

\n

مرتبط بنظام التشغيل ام بمحرر النصوص، انا أظن أنه يرتبط بمحرر النصوص وليس بنظام التشغيل، أعتقد ان notepad في windows يقوم بعمل

\r\n

اما wordpad فيقوم بعمل

\n

فقط عند الضغط على enter، لست متأكد من ذلك لكني عند رأيي أنها تتعلق بالمحرر وليس بنظام التشغيل.

تم تعديل بواسطه مهدي حجازي
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مقالة جميلة مكتوبة بأسلوب جميل .

فقط عند الضغط على enter، لست متأكد من ذلك لكني عند رأيي أنها تتعلق بالمحرر وليس بنظام التشغيل.

أعتقد أنه يمكن أن تحل مشكلة الاختلافات على مستوى التطبيق ، لكن أظن أن التعامل سيكون مختلف من نظام تشغيل لآخر على مستوى استقبال MSG نفسها ، لو فرضنا أنك تستقبل الحدث WM_KEYDOWN أو WM_CHAR في Windows ، وجاءك حدث " زر Enter " ، فستختلف قيمته ( ممكن رح يجيك /r/n مثلاً ؟ ) .. بعكس لو كنت على نظام linux .

لذلك التطبيقات مثل notepad++ تقوم بحل مشكلة نظام التشغيل . إذاً هي مشكلة نظام تشغيل وليست مشكلة تطبيقات . لأن التطبيقات تقوم بكتابة ما يردها من حروف بشكل مباشر .. لكن enter تتعامل معه بطريقة خاصة ( لا تكتب قيمته مباشرة ، ولكن قد تغيّر قيمته بناءً على هدف صاحب البرنامج ) .

طبعاً هذا مجرد تخمين وفلسفة فقط :-) .

شكراً مرة ثانية على المقال الرائع .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا لك أخي الشمري..تحليل منطقي أميل اليه..هل هناك طريقه تمكننا من التأكد من ذلك بغير استقبال الرسائل من النظام..أنا غشيم C++ للأسف :unsure:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مقال جميل :)

-----

تخمينك و فلسفتك صحيحه أخي الشمري ففي الوندوز مثلاً كتبت مكتباتها بحيث تتعامل على أساس أن السطر الجديد يجب أن يحتوي على \r\n و هنا إذا قمت بإستدعاء مكتباتها في حفظ الملفات النصيه فسوف يسجل السطر الجديد بالحرفين \r\n و هنا نجد أن جميع برامج الوندوز تستعمل مكتباتها و لذلك لا تتعامل إلا مع الحرفين \r\n و هذا ينطبق من أول الطرفيه إلى الأوفيس و لكن لو قمنا بتصميم برنامج بحيث لا نعتمد فيه على مكتبات الوندوز في حفظ الملف فيمكننا في هذه اللحظه أن نحفظ التهيئه التي نريدها بل يمكننا أن ندمج الثلاث طرق معاً ففي Notepad++ عند فتح ملف يقوم بقراءه و فلتره الأسطر فإذا ظهر في سطر من الأسطر الحرفين \r\n\ بصفه متتاليه فسوف يقول لك أن هذا الملف على تهيئه الوندوز و لكن لو وجد حرف واحد فقط و ليكن \n يمثل جميع الأسطر فسيقول لك أنه Unex و هكذا

و لكن لا أعتقد أن رسائل النظام لها دخل بهذا :) فكل ما نحتاجه منها هو معرفه الزر الذي تم الضغط عليه فقط.

بالمناسبه مكتبه .net تقوم بقراءه الملفات و تتعرف علي الأسطر مهما إختلف نوع تسجيل السطر الجديد بها و هذا يدل على أن مايكروسوفت بدأت تنتبه إلى أن إستخدام \r\n في كل شئ ليس منطقي و أن المبرمج أو المستخدم ممكن أن يتعرض لأنواع ملفات مصممه على أنظمه أخرى في أي وقت مع أن الطبيعي بالنسبه لمكتبه .net هو \r\n :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

موضوع رائع و الى الأمام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

معلومة جميلة وتقديمها اجمل

لك جزيل الشكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جزاك الله كل خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ففي نظام الوندوز حتى ننتقل لسطر جديد يجب أن نقوم بتنفيذ كل من carriage

return و Line feed معا ً و هذا ما يقوم به الوندوز بشكل آلي من خلف

الكواليس عندما نضغط إنتر و لكن في الأنظمة الأخرى يقوم النظام بتنفيذ أمر

واحد فقط ففي الماك يكفي تنفيذ carriage return و في الـ linux يكفي تنفيذ

line feed.

<br><br>فعلا ... أنظمه ماك ما قبل Mac OS X كانت تستخدم CR ... لكن النظام الجديد المبنى على FreeBSD يستخدم ال LF ...<br><br>http://en.wikipedia.org/wiki/Newline#Representations<br><br>
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك على المقال لم اكن اعرف قصة الالة الكاتبة, بالنسبة للأختلاف حول تفسير الأوامر \r\n فهي عائدة لأنظمة التشغيل حصراً كما قال صاحب الموضوع, لذلك في دوت نت مثلاً ينصح باستخدام

Environment.NewLine

عندما نريد الأنتقال إلى سطر جديد وذلك لتوافقها على جميع انظمة التشغيل ويتم إعادة \r\n حسب نظام التشغيل الذي يعمل عليه التطبيق, وبالتالي سوف يكون لها فائدة كبيرة عند استخدام Mono مثلاً.

إذا نظرنا إلى ترميز ال Unicode سنجده كالتالي:


"\r\n" (\u000D\u000A) Windows
"\n" (\u000A) Unix
"\r" (\u000D) Mac

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك على المقال لم اكن اعرف قصة الالة الكاتبة, بالنسبة للأختلاف حول تفسير الأوامر \r\n فهي عائدة لأنظمة التشغيل حصراً كما قال صاحب الموضوع, لذلك في دوت نت مثلاً ينصح باستخدام

Environment.NewLine

ياعجبا على ميكروسوفت ... (بيشتغلو نفسهم! .. )

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هذا الموضوع جعلني أفكر في قصة الازرار

laugh.gif
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أول مره أسمع بهذي المعلومه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مقال ممتع

يسلمو

تم تعديل بواسطه همس444
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .