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

ما الذي يميز البرمجة بلغة C

بدأه engineer22 في 11 يناير 2009 · 48 رد · 4,470 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#26
اقتباس
عموماً إذا تعلمت إحدى اللغتين ستصاب بإحباط شديد بعد سنة أو سنتين

100% right :lol:

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#27
اقتباس
شيئ اخر من خصوصيات السي و لا اظن ان اي لغة تنافسها في هدا

يمكن عمل هذا في دلفي (باسكال) :

[color= #000000; font-weight: bold;]procedure ErrorMsgBox[color= #000066;](Text[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;]; Title[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;])[color= #000066;]; [color= #000000; font-weight: bold;]stdcall[color= #000066;];

[color= #000000; font-weight: bold;]begin

  MessageBox[color= #000066;]([color= #0000ff;]0[color= #000066;], Text[color= #000066;], Title[color= #000066;], MB_ICONERROR[color= #000066;])[color= #000066;];

[color= #000000; font-weight: bold;]end[color= #000066;];

 

[color= #000000; font-weight: bold;]procedure InfoMsgBox[color= #000066;](Text[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;]; Title[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;])[color= #000066;]; [color= #000000; font-weight: bold;]stdcall[color= #000066;];

[color= #000000; font-weight: bold;]begin

  MessageBox[color= #000066;]([color= #0000ff;]0[color= #000066;], Text[color= #000066;], Title[color= #000066;], MB_ICONINFORMATION[color= #000066;])[color= #000066;];

[color= #000000; font-weight: bold;]end[color= #000066;];

 

[color= #000000; font-weight: bold;]procedure TForm1[color= #000066;].[color= #006600;]Button1Click[color= #000066;](Sender[color= #000066;]: [color= #000066; font-weight: bold;]TObject[color= #000066;])[color= #000066;];

[color= #000000; font-weight: bold;]var MsgBox[color= #000066;]: [color= #000000; font-weight: bold;]procedure[color= #000066;](Text[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;]; Title[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;])[color= #000066;]; [color= #000000; font-weight: bold;]stdcall[color= #000066;];

[color= #000000; font-weight: bold;]begin

  MsgBox [color= #000066;]:[color= #000066;]= ErrorMsgBox[color= #000066;];

  MsgBox[color= #000066;]([color= #ff0000;]'Function pointer sample'[color= #000066;], [color= #ff0000;]'TEST'[color= #000066;])[color= #000066;];

 

  MsgBox [color= #000066;]:[color= #000066;]= InfoMsgBox[color= #000066;];

  MsgBox[color= #000066;]([color= #ff0000;]'Function pointer sample'[color= #000066;], [color= #ff0000;]'TEST'[color= #000066;])[color= #000066;];

[color= #000000; font-weight: bold;]end[color= #000066;];

لكني اعشق الـC .. القلب وما يهوى :P

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#28
اقتباس
شيئ اخر من خصوصيات السي و لا اظن ان اي لغة تنافسها في هدا

يمكن عمل هذا في فيجول بيزيك (VB6) :

  1. Private Sub Form_Load()
  2. Dim sFunc As String
  3.  
  4. sFunc = "Max"
  5. MsgBox "Max: " & CallByName(Me, sFunc, VbMethod, 10, 12)
  6.  
  7. sFunc = "Min"
  8. MsgBox "Min: " & CallByName(Me, sFunc, VbMethod, 10, 12)
  9. End Sub
  10.  
  11. Public Function Max(x As Double, y As Double) As Double
  12. If x > y Then
  13. Max = x
  14. Else
  15. Max = y
  16. End If
  17. End Function
  18.  
  19. Public Function Min(x As Double, y As Double) As Double
  20. If x > y Then
  21. Min = y
  22. Else
  23. Min = x
  24. End If
  25. End Function
  26.  

لكني اعشق الـC .. القلب وما يهوى :P

تم تعديل هذه المشاركة بواسطة ASPHP في 15 يناير 2009 في 05:16

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#29

جزاكم الله خيراً، وفعلاً هذه الطريقة ممكنة بالVisual Basic كما ذكر الأخ.

بالنسبة للإحباط فقد أصبت به :) ، أنا أقرأ كتاب الأستاذ سلطان ثبيتي، وكلما وصلت لفصل جديد، أقول لنفسي الآن سنودع الكونسول وننتقل إلى gui ، ولكن لا أمل :(

على كل حال صامدون :)

بالنسبة للأخ engineer22 كاتب الموضوع، يبدو أنه نسي موضوعه هنا، والله أعلم.

لكن يا (بروفيسور) خالد :) ، لم تجبني عن سؤالي، وهو: هل هناك شيء موجود في C ومفقود في c++ ؟

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

هذه الجملة خاطئة  :wacko: 


#30
اقتباس
هل هناك شيء موجود في C ومفقود في C++ ؟

بعض الليونة فقط !

لكن لا يوجد شئ مفقود منها عملياً .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#31

انا اعشق printf و sprintf وفى برامج ++C استخدمهم بدلا من cout

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#32

السلام عليكم ,,

هل من الممكن أن يقوم أحد الأخوة بكتابة الكود التالي بلغته المفضلة لنرى الفرق بين اللغات في هذه الكود :

	int string = 0;
	char* ptrString = reinterpret_cast<char*>( &string );

	ptrString[0] = 'P';
	ptrString[1] = 'T';
	ptrString[2] = 'R';

	std::cout << ptrString;

بسيط جداً مؤشر من نوع char يستلم عنوان int و يقوم بملئ الـ int بـ "PTR" ثم يتم طباعة الـ int على أنه string :)

يمنع استخدام الأسمبلي :P

اقتباس
بعض الليونة فقط !

لكن لا يوجد شئ مفقود منها عملياً .

جميل أتفق معك, و لكن هذه الليونة لا تؤثر على "سرعة البرنامج". يمكنني أن أريك مثالاً تصبح فيه C أبطأ من ++C بكتابة نفس الكود كل لغة على طريقتها :)

هناك ميزة تتميز بها ++C عن C, ألا و هي كتابة الـ reuseable code, دون فقدان السرعة, على عكس C في بعض الحالات :)

هذا من أفضل المقالات التي يمكن أن تقرأ حول الموضوع ::

http://theory.stanford.edu/~amitp/rants/c++-vs-c/

تحياتي ,,

#33
_string[color= #000066;]: [color= #000066; font-weight: bold;]Cardinal[color= #000066;];

ptrString[color= #000066;]: [color= #000066; font-weight: bold;]PCHAR[color= #000066;];

[color= #000000; font-weight: bold;]begin

  ptrString [color= #000066;]:[color= #000066;]= [color= #000066; font-weight: bold;]PCHAR[color= #000066;]([color= #000066;]@_string[color= #000066;])[color= #000066;];

  ptrString[color= #000066;][[color= #0000ff;]0[color= #000066;]] [color= #000066;]:[color= #000066;]= [color= #ff0000;]'P'[color= #000066;];

  ptrString[color= #000066;][[color= #0000ff;]1[color= #000066;]] [color= #000066;]:[color= #000066;]= [color= #ff0000;]'T'[color= #000066;];

  ptrString[color= #000066;][[color= #0000ff;]2[color= #000066;]] [color= #000066;]:[color= #000066;]= [color= #ff0000;]'R'[color= #000066;];

  ptrString[color= #000066;][[color= #0000ff;]3[color= #000066;]] [color= #000066;]:[color= #000066;]= [color= #ff0000;]#[color= #0000ff;]0[color= #000066;];

  ShowMessage[color= #000066;](ptrString[color= #000066;])[color= #000066;];

[color= #000000; font-weight: bold;]end[color= #000066;];
اقتباس
جميل أتفق معك, و لكن هذه الليونة لا تؤثر على "سرعة البرنامج".

بالطبع لا تؤثر على السرعة لأن الـbin الناتج هو نفسه, انا اتكلم عن الليونة في كتابة الكود نفسه .

لا يوجد ادنى شك بأن ++C تتفوق على الـC :)

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#34
  1. Private Sub Form_Load()
  2. Dim sString(5) As Byte
  3.  
  4. sString(0) = Asc("P")
  5. sString(2) = Asc("T")
  6. sString(4) = Asc("R")
  7.  
  8. MsgBox sString
  9. End Sub
  10.  

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#35

لا ليس هذا المطلوب أخي ASPHP :)

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#36

اعلم انه ليس بالضبط هو المطلوب :)

ولكن هذه الطريقه تسمح بالوصول المباشر لعناصر مصفوفه - كما يمكن الحصول على عنون المتغير بالداله ObjPtr

تم تعديل هذه المشاركة بواسطة ASPHP في 15 يناير 2009 في 20:30

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#37

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

وقت كبير يضيع في جمل ال malloc و ال type casting في حين ان سي++ تتعامل ببساطة مع هده الامور :(

حول المؤشرات و عملها قمت بخربشة مثال صغير لانشاء جدول ديناميكي من ثلاث ابعاد :evil:

اعرف ان الكثيرين لن يفيدهم هدا المثال لكن ارجو ان ينفع احد الاخوة هنا

شكر خاص ل xacker و لاخي الصغير hitmanBM

اظن ان التكنيك محفوظ لنا الثلاثة :lol:

#include <stdio.h>
#include <stdlib.h>


void test(int***,int,int,int);
void fill(int ***, int , int , int );
void allocateMemory(int***, int , int, int);
int ***tab;
int nx,ny,nz;

int main()
{

	nx = ny = nz = 3;
 	allocateMemory(tab,nx,ny,nz);
	fill(tab,nx,ny,nz);
	test(tab,nx,ny,nz);

		printf(" \n\n\n\n\n\ntab = %d",_msize(tab));
	//free(tab);
return 0;
}

void allocateMemory(int ***pArray, int nx, int ny, int nz){
	int y,z;
	//int *** pArray;	// an array of Pointers to an array of Integers
   	int ***space;


	space = malloc(nx * ny * nz * sizeof(int));

	pArray = malloc(nz * sizeof(int **));

	  for(z = 0; z < nz; z++)
	  {
	 	pArray[z] = malloc(ny * sizeof(int *));

	 	for(y = 0; y < ny; y++)
	 	{
	   		pArray[z][y] = ((int *)space + (z*(nx * ny) + y*nx));
	 	}
	  }


	// dumping out the contents
	for (int i=0; i < nx; i++)
   	{
   		printf ("Array[%d]
 = ", i);
   		for (int j=0; j < ny; j++)
			for (int k=0; k < nz; k++)
			  printf ("%d ", pArray[j][k]);
   		printf ("\n");
   	}
	printf("\n\n pA = %d",_msize(pArray));
	printf("\n\n space = %d",_msize(space));
	tab = pArray;
	//free(pArray);
	free(space);
}

void test (int ***tab, int x, int y, int z)
{
 	printf("\n\n\n");
	 for  (int i = 0; i < z; i++)
		  for  (int j = 0; j < y; j++)
			   for (int k = 0; k < x; k++){
					printf("%d\n", tab[j][k]);

				   }


}

void fill(int ***tab, int x, int y, int z)
{

	  for  (int i = 0; i < z; i++)
		  for  (int j = 0; j < y; j++)
			   for (int k = 0; k < x; k++){
				   tab[j][k]=i;
				   }

}

اظن ان هده المناقشة سوف تتحول الى نواة كتاب برمجي مثير للاهتمام

على فكرة البرنامج اكيد انه يحتوي على اخطاء لان الكثير من التغييرات لم تحفظ بسبب انقطاع الكهرباء :(

من يحوله الى سي++ لعمل المقارنة :lol: :angry:

اظن انه حان الوقت لاحاول ان اتكيف مع سي++ -_-

على فكرة لم اجرب البرنامج على GCC لانني افضل ان اعمل على PellesC

تم تعديل هذه المشاركة بواسطة fkugd2003 في 16 يناير 2009 في 16:32

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#38

للأسف أنا ما زلت مبتدئاً ولم أفهم الكود كثيراً لأحوله.

لكن أحب أن أضيف سؤالين:

1- من المعلوم أن c++ تدعم البرمجة غرضية التوجه، فهل تدعمه C ؟

2- هل تعطي c++.net ميزات على c++ ، وما هي؟

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

هذه الجملة خاطئة  :wacko: 


#39
اقتباس
1- من المعلوم أن C++ تدعم البرمجة غرضية التوجه، فهل تدعمه C ؟

لا للاسف حسبما اعرف -_-

اقتباس
- هل تعطي c++.net ميزات على C++ ، وما هي؟

تعطيك القدرة على استعمال الدوت نت :lol:

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#40

السلام عليكم ,,

أخ fkugd2003 :)

هذا على طريقة ++C, و لكنه أرجو أن لا يكون هناك تسرب للذاكرة :lol: لأني كتبت الكود بسرعة,,

#include <iostream>

int main(){

	const int L = 3;
	int*** numCube = new int**[ L ];

	for( int x = 0; x < L; x++ )
		numCube[x] = new int*[ L ];

	for( int x = 0; x < L; x++ )
		for( int y = 0; y < L; y++ )
			numCube[x][y] = new int[ L ];

	for( int x = 0; x < L; x++ )
		for( int y = 0; y < L; y++ )
			for( int z = 0; z < L; z++ )
				std::cout << (numCube[x][y][z] = z + y*L + x*L*L) << std::endl;

	for( int x = 0; x < L; x++ )
		for( int y = 0; y < L; y++ )
			delete[] numCube[x][y];

	for( int x = 0; x < L; x++ )
		delete[] numCube[x];

	delete[] numCube;

	return 0;
}

في الحقيقة أن ما تراه في الأعلى هو كود ++C على طريقة مبرمجي C :lol: سوف أحاول كتابة المكعب باستخدام STL بعد قليل و أضع الكود بإذن الله :)

========================

اقتباس
1- من المعلوم أن c++ تدعم البرمجة غرضية التوجه، فهل تدعمه C ؟

لغة C لا تعرف معنى كلمة "الحدود", هي في قلبها لا توفر طريقة للبرمجة الكائنية, و لكن هناك العديد من المقالات التي تريك كيف تنفذ oop باستخدام pure C :lol:

ضع في google التالي : polymorphism in C أو inheritance in C

++C توفر لك تلك الطرق مع فعالة و مرونة أكبر بكثير طبعاً, أعتقد أن هناك بعض الأمور في oop لا يمكن فعلها بالـ C و لا بد للمترجم أن يكون على وعي ببعض تلك الأمور, لست متأكداً :)

اقتباس
2- هل تعطي c++.net ميزات على c++ ، وما هي؟

أعتقد أنها أفشل لغة عرفتها البشرية :lol:

لا تسألني لماذا و لكن إن كنت سأبرمج للـ NET. فأرى أن أستخدم #C أو VB.NET,

الحقيقة تعلمت القليل و لكن تلك البداية لم تكن مبشرة أبداً فهي خليط من ++C و بعض الخزعبلات من ميكو :lol:

عموماً فكرة ترجمة ++C للغة الآلة الافتراضية لم تنجح و لن تنجح برأيي, و بالمناسبة حاول البعض فعل نفس الشيء مع C و ترجمة الكود إلى Java Virtual Machine فشلو لأسباب تقنية تتعلق بالتعامل الحر مع الذاكرة في C :lol:

لا أعارض الـ NET. بل على العكس أشجع على البرمجة على منصة محترمة كهذه توفر كل ما يريده المبرمج و أكثر و لكن ليس بـ ++C :)

#41

السلام عليكم

حوار جميل وراق جدا

ارجو من

fkugd2003

ان يوضح لنا الظاهر الجديدة

c--

*/عاشت الاسماء/*

المهم نريد رابط او كود بسيط

وشكرا

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#42
اقتباس
لغة C لا تعرف معنى كلمة "الحدود", هي في قلبها لا توفر طريقة للبرمجة الكائنية, و لكن هناك العديد من المقالات التي تريك كيف تنفذ oop باستخدام pure C

صحيح, هذا ما يعتمده كثير من مطوري الدرايفرز حيث تتم الكتابة بلغة C لكن الفكرة العامة تعتمد على مفهوم OOP .

حتى نواة الـNT مكتوبة بهذا المفهوم مع انها بلغة C .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#43

السلام عليكم ,,

هذه هي طريقتي في كتابة الكود الذي ذكر باستخدام STL vector :

#include <iostream>
#include <vector>

int main(){

	const int L = 3;

	std::vector<int> x( L, 0 );
	std::vector< std::vector<int> > y( L, x );
	std::vector< std::vector< std::vector<int>>> z( L, y );

	for( int i = 0; i < L; i++ )
		for( int n = 0; n < L; n++ )
			for( int m = 0; m < L; m++ )
				std::cout << (z[n][m] = m + n*L + i*L*L) << std::endl;
	return 0;
}

هل رأيت البساطة :P

vector سوف يقوم بحجز و تنظيف الذاكرة بدلاً عن المبرمج :)

العيب الوحيد و الذي أكرهه في الـ templates هو الـ syntax المزعج جداً,

بالمناسبة L يمكن أن تحددها وقت تشغيل البرنامج :) و ليس شرطاً أن تكون ثابتاً,,

اقتباس
صحيح, هذا ما يعتمده كثير من مطوري الدرايفرز حيث تتم الكتابة بلغة C لكن الفكرة العامة تعتمد على مفهوم OOP .

حتى نواة الـNT مكتوبة بهذا المفهوم مع انها بلغة C .

GM

قرأت الذي كتبته حول الـ Native Applications :wink: رائع يا ماستر :)

تحياتي ,,

#44
اقتباس
السلام عليكم

حوار جميل وراق جدا

ارجو من

fkugd2003

ان يوضح لنا الظاهر الجديدة

c--

*/عاشت الاسماء/*

المهم نريد رابط او كود بسيط

وشكرا

ادا كان بالامكان اصبر علي حوالي الساعة سوف اكتب لك بعض الشرح :lol:

اخي خالد مممم سي++ لديدة كما قلت

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#45

أنا ما عاد لحقت :eek:

أنا بانتظار الـc-- ، بس خايف منها.

إن شاء الله سوف أبحث عن هذا في google .

فقط سؤال صغير إضافي، ما مميزات C و c++ مع قواعد البيانات؟ وهل توفر مرونة في التعامل معها؟

هذه الجملة خاطئة  :wacko: 


#46

اظن ان اخي عزيز اصبح مهتما بهده اللغة

الحقيقة سي-- ليست لغة جديدة الا ان المبرمجين لم يسمعوا بها من قبل حتى انا و لم اكن اعرفها من قبل (الشكر لاحد الاصدقاء المصابين بجنون الهاردوير)...

سي-- عبارة عن لغة برمجية تحتوي على دمج للغة سي و اسمبلي.. لديدة

في استطاعتك ان تكتب الكود البرمجي بسي مباشرو و ادخال التعليمات الخاصة بالاسمبلي مباشرة داخل الكود

اظن ان الدعم اصبح كاملا لجميع التعليمات

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

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

لنجرب ان نكتب برنامج غبي جدا كعادة امثلتي :lol:

لنبدا بالتعاريف البسيطة :

#pragma option w32	 //لانتاج برنامج ويندوز دو واجهة رسومية
#pragma option dbg	 //لاجبار المترجم ان ينتج معلومات التنقيح
#pragma option w	   //تفعيل الاعلام بالتحديرات
#pragma option 3	   //هده سهلة معالج 386

#include "windef.h--"
#include "winbase.h--"	  //kernel32.dll
#include "wingdi.h--"	   //gdi32.dll
#include "winuser.h--"	  //user32.dll
#include "commctrl.h--"	 //comctl32.dll
#include "commdlg.h--"	  //comdlg32.dll
#include "shellapi.h--"	 //shell32.dll
#pragma option ia	  // حينما نريد ادخال الاسمبلي الى البرنامج "asm" "$" لاعلام المترجم اننا لن نحتاج الى

لم احضر شيئ جديد لانني فقط قمت باعادة نقل احد الدروس لبرمجة الواجهات و نقلته الى سي—

لمزيد من المعلومات يمكن ان تراجع دروس

http://winprog.org/tutorial/

و الان لنعرف بعض المتغيرات

ساحاول ان ارفق الموافق بلغة سي لكل عبارة

dword hinst=0;	// HINSTANCE hinst
dword hwnd=0;	// HWND hwnd

struct WNDCLASS wndclass;	// WNDCLASS wc;
struct MSG msg;		// MSG msg;

char szTitleName="a stupid program";	
char szClassName="fkugd2003";		// char szClassName[] = " fkugd2003";

main()
{
  GetModuleHandle(NULL);	//hinst=GetModuleHandle(NULL);
  mov hinst,eax

// initialize the WndClass structure...

	mov wndclass.style,CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS //wndclass.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
	mov wndclass.lpfnWndProc,#WNDproc 	//wndclass.lpfnWndProc=&WNDproc;
	mov wndclass.cbClsExtra,0		//wndclass.cbClsExtra=wndclass.cbWndExtra=0;
	mov wndclass.cbWndExtra,0
	mov eax,hinst		//wndclass.hInstance=hinst;
	mov wndclass.hInstance,eax

	LoadIcon(hinst,IDI_APPLICATION);
	mov wndclass.hIcon,eax


	LoadCursor(NULL,IDC_ARROW);
	mov wndclass.hCursor, eax   

	GetStockObject(BLACK_BRUSH);   
	mov hblackbrush,eax
	mov wndclass.hbrBackground,eax

	mov wndclass.lpszMenuName,#szClassName
	mov wndclass.lpszClassName,#szClassName

	RegisterClass(#wndclass); //if(!RegisterClassEx(&wndclass))
	test eax,eax
	jnz NOT_END
	jmp exit

NOT_END:
	CreateWindowEx(0,#szClassName,#szTitleName,WS_OVERLAPPEDWINDOW,5,5,300,200,0,0,hinst,0);
	test eax,eax
	jz exit		//exit if eax=0.
	mov hwnd,eax

	ShowWindow(hwnd,SW_SHOWNORMAL);
	UpdateWindow(hwnd);

msg_loop:
	GetMessage(#msg,0,0,0);
	or eax,eax //cmp eax,0
	je exit
	TranslateMessage(#msg);
	DispatchMessage(#msg);
	jmp msg_loop

exit:
	ExitProcess(msg.wParam);

}

dword WNDproc(dword  hwnd,wmsg,wparam,lparam)
{
  struct PAINTSTRUCT s3;
  dword hdc;
  dword hbrushsaved;

  switch(wmsg)
  {
	case WM_CLOSE:
	  DestroyWindow(#hwnd);
	case WM_DESTROY: 
	  PostQuitMessage(0);
	  //...main() will get this and call ExitProcess() (see above).
	  break;	  

	default:
	  DefWindowProc(hwnd,wmsg,wparam,lparam);
	  jmp short getout		 
  }
  xor eax,eax 
getout:
}

البرنامج يظهر انه مرعب الشكل و غريب لكن ادا راجعتم دروس iczelion سوف تتوضح الصورة

ما رأيكم??

http://sourceforge.net/projects/c--/

موقع الكمبايلر المفتوح

http://c--sphinx.narod.ru/compil_e.htm

نسيت المرفقات :lol:

test.rar

تم تعديل هذه المشاركة بواسطة fkugd2003 في 17 يناير 2009 في 01:32

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#47

fkugd2003

رائع جدا بارك الله فيك

من الملاحظة الاولي انها مثل

msam32

مزيج من التعليمات بالاسمبلي ودوال

api

المربك هو الكود يعني لولا وجود التعليقات لكن شيئ اخر

والامر يمكن حله طبعا بمعرفة قواعد اللغة وبعض الممارسة ويزول الغموض

ان شاء الله لما انهي كتاب الهندسة العكسية ل

at4re

ساطلع اكثر علي هده اللغة لاني من المهتمين بالاسمبلي والسي

وهداللغه جات ولمتهم مع بعض

يعني يسعد من لم راسين في الحلال

طبعا لك جزيل الشكر

fkugd2003

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#48

بارك الله فيك اخي عزيز

لا تنس ان تضع ملاحظاتك في المنتدى عندما تبدأ بالتعلم لعلك تنفع بها احد الاخوة :lol:

ممممم صرنا اثنين من يريد ان يجرب و يكون الثالث :lol:

العمل كثير و الوقت قليل أعاننا الله

seo zen SEO Enlightment amazon danbo

#49

مشكورين اخوان

الحقيقة كفيتوا ووفيتوا ...

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