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

ورشة عمل تعليمية:محرر نصوص متقدم حبتين

مغلق
بدأه Abdullah.Alshammeri في 9 نوفمبر 2005 · 38 رد · 5,442 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#26

بسم الله الرحمن الرحيم

هذه فكرة جيدة لكن اذا كان هذا المشروع جماعي فأقترح على الاخ الشمري ان يجد طريقة لادارة المشروع

#27

الله المستعان .. الايام تروح والعمر يروح ويبقى العمل .

تتوقعون بعد كل هالمدة ماهو الجديد .

هل تطور البرنامج وصار مثل word ؟

على العموم .. هذه نسخة جديدة ..

الان بامكانك اختيار الخط الذي تريد عن طريق القائمة تنسيق بالاضافة للاضافات الاخرى . يعني البرنامج الان

notepad الا شوي .

التغييرات الرئيسية في الملف font.h و menu.h .

text_editor.zip

تم تعديل هذه المشاركة بواسطة الشمري في 30 يوليو 2006 في 06:45

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#28

بسم الله ما شاء الله برنامج رائع يا أخ شمرى ولله أنا معجب بيه جدا كمبتدئ فى برمجة الويندوز, و لكن لى إستفسار لماذا لم تستخدم البرمجة الشيئية حيث أنها سوف تتيح الفرصة للتوسع بحرية أكبر بكثييير و كمان سيكون التصميم سهل, ما رأيك؟

كمان ليا ملاحظة, لماذا تضع ال implementation فى الملفات الرأسية؟ من الأفضل وضعه فى ملفات مصدرية منفصلة, سيؤدى إلى تقليل وقت الترجمة كثيرا عندما يكبر المشروع إن شاء الله.

فى ملاحظة بقا على الكود نفسه, إنتا بتقرا محتويات الفايل كله مرة واحدة فى مصفوفة و لكن ماذ سيكون الحال عند قراءة ملفات عملاقة ! من رأيى أن تحدد مساحة ثابتة تقرأ فيها محتويات الفايل و لما المستخدم يطلب يشوف نص مش موجود فى الذاكرة تروح و تجيبه و تستبدل الذاكرة بتاعتك, رأيك إيه؟

أنا ولله متحمس للمشروع دا و نفسى أشارك فيه فعلا و إن شاء الله نطلع منتج بجد فى الأخر زى الوورد و emacs مثلا :).

أه فى حاجة تانية معلش :), لماذا إجبار المستخدم على حفظ الملف بإمتداد txt ؟ إفرض أنه يريد حفظه بإستخدام srt, sub, log, class, cpp, h ......؟ أرى أنه من الأكثر فاعلية عدم وضع إمتداد معين كفرض على اليوزر.

#29

المشكلة الحقيقية مع البرنامج انه يعتمد على text box بالتالي انا سأكون محدود بعشرين دالة ورسالة .. لا اقل ولا اكثر ... ولو استخدمت rich text ,, ايضا سأبقى محصورا بعدد من الدوال ..

لو استطعنا انشاء text box .. من الصفر .. عندها بالامكان تطويره حتى الوورد :) .

طبعا يسعدني اشتراكك لكن انا سأتوقف فقط اذا صار البرنامج مثل المفكرة تماما .. ولن اكمل .

اقتباس
أه فى حاجة تانية معلش , لماذا إجبار المستخدم على حفظ الملف بإمتداد txt ؟ إفرض أنه يريد حفظه بإستخدام srt, sub, log, class, cpp, h ......؟ أرى أنه من الأكثر فاعلية عدم وضع إمتداد معين كفرض على اليوزر

همممم .. طبعا يمكن استخدام all file وبالتالي انت تكتب الامتداد الذي تريد .. لكن تنفيذ الاقتراح سهل .. فقط باضافة امتدادات جديدة .

=========

كثير من الافكار يمكن تطبيقها .. لكن المشكلة بأن text box محدود ..

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

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#30

السلام عليكم

حياك الله أخو الشمري على هذا المجهود

فكرة جميلة جدا

في الوقت الحالي مربع النص العادي جيد لنا كمبتدئين

ولكن في المستقبل ان شاءالله يتم بناء اداة متطورة قليلا ويكون لها تنسيقها الخاص على لأقل مثل RichEdit

ويسعدني ان اشارك معك بالقليل

أخي الكريم هذه كلاس TextBox اظن انها ستسهل التعامل مع النص

طبعا لم أضع جميع الميثود فقط القليل منها

نستطيع اضافي ميثود جديده لتسهل العمل

#include "windows.h";
//#include "string.h";

//EM_EXGETSEL

class TextBox
{
public:
   TextBox(HWND hwndParent)
   {
	_hwnd = CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_RTLREADING|WS_EX_RIGHT|WS_EX_LEFTSCROLLBAR ,
					"EDIT",
					"",
					WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|ES_MULTILINE		,
					0, 0, 160, 80,
					hwndParent, NULL, NULL, NULL);	 
   }
	HWND getHwnd(){return _hwnd;}

	bool getVisible()
	{
		return IsWindowVisible(_hwnd)==1?true:false;
	}
	void setVisible(bool visibility)
	{
		ShowWindow(_hwnd, (visibility?1:0));
	}


	bool getEnabled()
	{
		return IsWindowEnabled(_hwnd)==1?true:false;
	}
	void setEnabled(bool Enable)
	{
		EnableWindow(_hwnd, (BOOL)Enable);
	}

	//set the parent window for the text
   void setParent(HWND hwndParent)
   {
	   SetParent(_hwnd,hwndParent);
   } 
   //get the parent window that contian the textbox
   HWND getParent()
   {
	   return GetParent(_hwnd);
   } 

   //get text lenght
   int lenght()
   {
	 return GetWindowTextLength(_hwnd);
   }


   LPSTR getText()
   { int len=lenght();
	 if(len==0)return "";
	  LPSTR lpText=new char[len];
	  GetWindowText(_hwnd,lpText,len+1);
	  //SendMessage(_hwnd,WM_GETTEXT ,len+1 , (LPARAM)lpText);
	  return lpText;
   }

   void setText(LPSTR lpText)
   {
	 SetWindowText(_hwnd,lpText);
   }
   //set the selection text to the new text
   void setSelText(LPSTR lpText)
   {
	 SendMessage(_hwnd,EM_REPLACESEL,0,(LPARAM)lpText);
   }
   void clear()
   {
	   SetWindowText(_hwnd,"");
   }

   /**
	* select range of text 
	* parameter :
	* start  : the selection text start from charecter
	* lenght : lenght of selected text
	*/
   void Select(int start , int lenght)
   {SendMessage(_hwnd,EM_SETSEL,(WPARAM)start,(LPARAM)(start+lenght));}

   void SelectAll(){Select(0,-1);}

   /**
	* return text location 
	*/
   RECT getPlacment()
   { 
	  WINDOWPLACEMENT plc;
	  GetWindowPlacement(_hwnd,&plc);
	  return plc.rcNormalPosition;
   }

   int getLeft()
   {
	   return getPlacment().left;
   }
   int getTop()
   {  
	  return getPlacment().top;
   }
   int getWidth()
   {  WINDOWPLACEMENT plc;
	  GetWindowPlacement(_hwnd,&plc);
	  return plc.rcNormalPosition.right-plc.rcNormalPosition.left;
   }
 int getHeight()
   {  WINDOWPLACEMENT plc;
	  GetWindowPlacement(_hwnd,&plc);
	  return plc.rcNormalPosition.bottom-plc.rcNormalPosition.top;
   }

   void move(int x ,int y)
   { MoveWindow(_hwnd,x,y, getWidth() , getHeight() ,true);}

   void move(int x ,int y,int nWidth,int nHirght)
   { MoveWindow(_hwnd,x,y, nWidth , nHirght ,true);}
private:
   HWND _hwnd;


};

طبعا طريقة عملها بسيطة جدا

in the menu.h
static TextBox *txt;

in the WinMain
txt=new TextBox(hwnd);

then you can use it 
txt->setText("hi");
txt->move(0,0)
txt->move(0,0,100,100)
txt->getText();
....

we can add method
void loadFromFile(LPSTR filename){}
and
bool saveToFile(LPSTR filename){}
and more

والرجاء الاضافة والتعديل اذا في نواقص

تم تعديل هذه المشاركة بواسطة Mo7eb_Alrasool في 31 يوليو 2006 في 08:14

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#31
Mo7eb_Alrasool كتب:
السلام عليكم

حياك الله أخو الشمري على هذا المجهود

فكرة جميلة جدا

في الوقت الحالي مربع النص العادي جيد لنا كمبتدئين

ولكن في المستقبل ان شاءالله يتم بناء اداة متطورة قليلا ويكون لها تنسيقها الخاص على لأقل مثل RichEdit

ويسعدني ان اشارك معك بالقليل

أخي الكريم هذه كلاس TextBox اظن انها ستسهل التعامل مع النص

طبعا لم أضع جميع الميثود فقط القليل منها

نستطيع اضافي ميثود جديده لتسهل العمل

#include "windows.h";
//#include "string.h";

//EM_EXGETSEL

class TextBox



{
public:
   TextBox(HWND hwndParent)
   {
	_hwnd = CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_RTLREADING|WS_EX_RIGHT|WS_EX_LEFTSCROLLBAR ,
					"EDIT",
					"",
					WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|ES_MULTILINE		,
					0, 0, 160, 80,
					hwndParent, NULL, NULL, NULL);	 
   }
	HWND getHwnd(){return _hwnd;}

	bool getVisible()
	{
		return IsWindowVisible(_hwnd)==1?true:false;
	}
	void setVisible(bool visibility)
	{
		ShowWindow(_hwnd, (visibility?1:0));
	}
	bool getEnabled()
	{
		return IsWindowEnabled(_hwnd)==1?true:false;
	}
	void setEnabled(bool Enable)
	{
		EnableWindow(_hwnd, (BOOL)Enable);
	}

	//set the parent window for the text
   void setParent(HWND hwndParent)
   {
	   SetParent(_hwnd,hwndParent);
   } 
   //get the parent window that contian the textbox
   HWND getParent()
   {
	   return GetParent(_hwnd);
   } 

   //get text lenght
   int lenght()
   {
	 return GetWindowTextLength(_hwnd);
   }


   LPSTR getText()
   { int len=lenght();
	 if(len==0)return "";
	  LPSTR lpText=new char[len];
	  GetWindowText(_hwnd,lpText,len+1);
	  //SendMessage(_hwnd,WM_GETTEXT ,len+1 , (LPARAM)lpText);
	  return lpText;
   }

   void setText(LPSTR lpText)
   {
	 SetWindowText(_hwnd,lpText);
   }
   //set the selection text to the new text
   void setSelText(LPSTR lpText)
   {
	 SendMessage(_hwnd,EM_REPLACESEL,0,(LPARAM)lpText);
   }
   void clear()
   {
	   SetWindowText(_hwnd,"");
   }

   /**
	* select range of text 
	* parameter :
	* start  : the selection text start from charecter
	* lenght : lenght of selected text
	*/
   void Select(int start , int lenght)
   {SendMessage(_hwnd,EM_SETSEL,(WPARAM)start,(LPARAM)(start+lenght));}

   void SelectAll(){Select(0,-1);}

   /**
	* return text location 
	*/
   RECT getPlacment()
   { 
	  WINDOWPLACEMENT plc;
	  GetWindowPlacement(_hwnd,&plc);
	  return plc.rcNormalPosition;
   }

   int getLeft()
   {
	   return getPlacment().left;
   }
   int getTop()
   {  
	  return getPlacment().top;
   }
   int getWidth()
   {  WINDOWPLACEMENT plc;
	  GetWindowPlacement(_hwnd,&plc);
	  return plc.rcNormalPosition.right-plc.rcNormalPosition.left;
   }
 int getHeight()
   {  WINDOWPLACEMENT plc;
	  GetWindowPlacement(_hwnd,&plc);
	  return plc.rcNormalPosition.bottom-plc.rcNormalPosition.top;
   }

   void move(int x ,int y)
   { MoveWindow(_hwnd,x,y, getWidth() , getHeight() ,true);}

   void move(int x ,int y,int nWidth,int nHirght)
   { MoveWindow(_hwnd,x,y, nWidth , nHirght ,true);}
private:
   HWND _hwnd;
};

طبعا طريقة عملها بسيطة جدا

in the menu.h
static TextBox *txt;

in the WinMain
txt=new TextBox(hwnd);

then you can use it 
txt->setText("hi");
txt->move(0,0)
txt->move(0,0,100,100)
txt->getText();
....

we can add method
void loadFromFile(LPSTR filename){}
and
bool saveToFile(LPSTR filename){}
and more

والرجاء الاضافة والتعديل اذا في نواقص

بارك الله فيك أخي محب الرسول

يا رجل كل هذا وتقول أنك مبتدئ :)

من تواضع لله رفعه وأنا رأيت مشاركاتك ومساعداتك للأعضاء بسم الله ما شاء الله ;)

تم تعديل هذه المشاركة بواسطة الشمري في 1 أغسطس 2006 في 09:45

#32

Alex Dabe : انا حررت مشاركتك لانك دمجت ردين مع بعض بالخطأ .. هذا فقط اللي حررته .

يا محب الرسول .. ساستخدم هذا الكلاس حالا :) .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#33

عمل رائع ...

والله سعيد جدًّا برؤيته...

وآسف لأني كنت غائب في البدايات...

قمت بإنزال الملفات، وتشغيلها كان شيء ممتاز جدّاً أحسدك عليه يا شمّري...

لنا عودة :)

#34

هلا اسماعيل .. ترا الكود بسيط مجرد برنامج شبيه بالمفكرة . !

عموما هذه نسخة جديدة وقمت فيها باعداة هيكلة للبرنامج من ناحية الواجهة .. حيث حذفت كثير من القوائم اللي مالها داعي .

ومن ناحية الكود قمت باصلاح بعض المشاكل في القائمة file ..

والتعديل الاساسي في الكود كان باضافة كلاس TextBox .. الذي أضافه الاخ " محب الرسول " .. جزاه الله خير ,

طبعا الكلاس باسمه وقد بينت ذلك في داخل الكود ... ستجد ذلك في ملف اسمه textbox.h .

لكن انا حاولت أني اطبق ميزة " التفاف النص " الموجودة في المفكرة وما قدرت .

الميزة هي بالغاء شريط التمرير .. الافقي عندما أريد التفاف النص .. او اضيف شريط تمرير أفقي عنما الغي ميزة التفاف النص ..

حاولت استخدم خاصية WS_HORIZONTAL ان كتبتها صح .. من خلال

SetWindowLong .. (على مااذكر ) ..

ولكن بدون نتيجة ..

من اراد المساعدة بامكانه اضافة الكود اللازم .. في الملف menu.h ... في اخر الملف .. ستجد المكان المناسب ..وعليه تعليقات ,

Text_Editor.zip

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#35

السلام عليكم

مشكور كثير اخوي الشمري على هذه الدروس القيمه والمجهود الكبير

الله يعطيك الف عافية ان شاه الله

بالنسبه لل word wrap هاذا الكود والله اعلم واذا فيه عند الشباب طريقة ثانيه يا ريت يحطوها

ملاحضة انا اضفت متغير

//in the void Create(HWND hwndParent,HINSTANCE hInstance)
_hInstance=hInstance;

// inthe private declaration
HINSTANCE _hInstance;

   bool GetWordWrap()
   {return (GetStyle() & ES_AUTOHSCROLL)==0;}

   void SetWordWrap(bool value)
   {   if(value==GetWordWrap())return;

	   LONG lStyle=WS_CHILD|WS_VSCROLL|ES_MULTILINE;
	   if(!value)lStyle|=ES_AUTOHSCROLL | WS_HSCROLL;
	RECT rect; 
	rect=getPlacment();
	HWND tmpHwnd;
	   tmpHwnd= CreateWindowEx(WS_EX_CLIENTEDGE|WS_EX_RTLREADING|WS_EX_RIGHT|WS_EX_LEFTSCROLLBAR ,
					"EDIT",
					GetText(),
					lStyle,
					rect.left, rect.top, rect.right, rect.bottom,
					getParent(), (HMENU)ID_, _hInstance, NULL);

  SendMessage (_hwnd, WM_GETFONT, (WPARAM) hFont, 0);
  SendMessage (tmpHwnd, WM_SETFONT, (WPARAM) hFont, 0);
	 DestroyWindow(_hwnd);
	 _hwnd=tmpHwnd;
  setVisible(true);
   }

وهي كمان خاصية القراءة من اليمين لليسار

  void Update()
   {InvalidateRect(_hwnd, &getPlacment() , true);}

  /*
   * set the reading from right to left
   * @param  rtl
   *   true set reading from the right
   *   false set reading from the left
   */
   void setRightToLeft(bool rtl)
 {
  LONG lng=GetWindowLong(_hwnd,GWL_EXSTYLE)&WS_EX_RTLREADING&WS_EX_LTRREADING;//?0:1; 
		LONG dir=rtl?WS_EX_RTLREADING:WS_EX_LTRREADING;
		SetWindowLong(_hwnd,GWL_EXSTYLE, lng|dir);
		Update();
 }
   /*
	*return truen if th current reading direction is right
 */
 bool getRightToLeft()
 {return GetWindowLong(_hwnd,GWL_EXSTYLE)&WS_EX_RTLREADING;}

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#36

كبداية شئ رائع لكن هناك الكثير من الاشياء تحتاج لتطوير مثلاً وهي أهم نقطة :

اقتباس
طلب :

لمن يملك ملفات بلغات مختلفة مثل الفرنسية الروسية اليابانية

ياحبذا لو يجرب يفتحها بالبرنامج ... لاتأكد من دعم البرنامج لـ Unicode

لا يدعم اليونيكود لأن المكون الذي إستخدم هو Edit عادي وكما تعلم فهي لا تدعم اليونيكود ...

لا نذهب بعيداً فأنا لا أستطيع الكتابة بالعربية فيه .. فقط استطيع الكتابة بالانجليزية والصينية لأن النظام صيني ...

لاحظ أن Notepad يستخدم نفس المكون لكن مطور أكثر ...ستحتاج لعمل subclassing للمكون وتجعله يدعم اليونيكود ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#37

السلام عليكم

تعديل غقط على الكود

وهي أضافه lExStyle لكي يتم الاحتفاظ بالستايل السابق مثلا القراءة من اليمين لي اليسار

   void SetWordWrap(bool value)
   {   if(value==GetWordWrap())return;

	   LONG lStyle=(GetStyle()&ES_AUTOHSCROLL&WS_HSCROLL)
			|WS_CHILD|WS_VSCROLL|ES_MULTILINE;
	   if(!value)lStyle|=ES_AUTOHSCROLL | WS_HSCROLL;
	   LONG lExStyle=(GetWindowLong(_hwnd,GWL_EXSTYLE));

	RECT rect; 
	rect=getPlacment();
	HWND tmpHwnd;
	   tmpHwnd= CreateWindowEx(lExStyle/*WS_EX_CLIENTEDGE|WS_EX_RTLREADING|WS_EX_RIGHT|WS_EX_LEFTSCROLLBAR */,
					"EDIT",
					GetText(),
					lStyle,
					rect.left, rect.top, rect.right, rect.bottom,
					getParent(), (HMENU)ID_, _hInstance, NULL);
  SendMessage (_hwnd, WM_GETFONT, (WPARAM) hFont, 0);
  SendMessage (tmpHwnd, WM_SETFONT, (WPARAM) hFont, 0);
	 DestroyWindow(_hwnd);
	 _hwnd=tmpHwnd;
  setVisible(true);
   }

تم تعديل هذه المشاركة بواسطة Mo7eb_Alrasool في 4 أغسطس 2006 في 13:06

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#38

تصحيح للنقطة التي أشرت إليها في مشكلة الـ Unicode ..

ليدعم المحرر الكتابة بجميع اللغات (دعم اليونيكود ) ينبغي عمل ما يلي :

من القائمة Project/ settings

نختر "C/C++" وهنا في Preprocessor definitons بدلاً من استخدام MSDB نقوم باضافة UNICODE,_UNICODE ..

في الكود نستبدل جميع المتغيرات التي تم تعريفها كــ char بـ TCHAR . طبعاً سنحتاج لإضافة TEXT في عدة أماكن ... وبذا يصبح بامكاننا كتابة نص بأكثر من لغة .. ركز على أني وضعت كلمة "الكتابة" بلون مختلف لأن القراءة شئ آخر وستعتمد على الـ encoding التي تم حفظ النص به ..

بالإمكان مراجعة هذا المقال فقد يفيد ...

Globalization Step-by-Step

بالنسبة لحفظ الملف فسنحتاج لتحديد نوعية الـ encoding التي سيتم حفظ النص بها UTF8/UTF16/UTF32 ...

المقال المشار إليه يشرح شئ عن هذه النقطة ..

هذا مقال قد يفيد أيضاً

Some files come up strange in Notepad

وبمناسبة ذكر الـ notepad سأذكر ما علمته قبل سويعات أثناء تتبع الـ notepad بواسطة IDA

حين يتم إختيار ملف ما بواسطة Open File Dialog فان notepad يقوم بقراءة الملف حين النقر مرة واحدة على إسم الملف (بإعتبار أن نقرة واحدة لاختيار الملف ونقرتين لفتح الملف في إعدادات الـ mouse )... وإن تم إختيار ملف آخر فستتم نفس العملية وإن رجعنا وإخترنا الملف الأول فستتم عملية القراءة مرة آخرى ..

شئ آخر هو أن notepad يستخدم mapping file وهذا شئ ضروري في تطوير محرر النصوص ...

---

بقيت نقطة أخرى هو لمن يريد الإستمرار بالتطوير بحيث تدعم واجهه المحرر أكثر من لغة سواء في القوائم أو رسائل الخطأ وغيرها يفضل وضع النصوص في الـ resource ليتم قراءتها بشكل سليم . يمكن أيضاً وضعها في ملفات خارجية ويتم قرائتها من الملف وهذا ما تعمله الكثير من البرامج التي توفر تغيير لغة الواجهه لبرامجها ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#39

السلام عليكم

بصراحة

جئت لأشد على أيديكم

بارك الله فيكم

هذه بداية جيدة

ولكن أريد أن أسأل

ألا تحتاجون لكي تعلموا بعض الخوارزميات وما إلى ذلك؟

تم تعديل هذه المشاركة بواسطة برق في 5 أغسطس 2006 في 03:37

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

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

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