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

سؤال: خطأ في البرنامج

مغلق
بدأه مبرمجة مبتدئة في 19 أكتوبر 2004 · 10 رد · 945 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اتمنى تتقبلوني مبتدئة معكم

.... وتتحملو ن اسئلتي

1- لما اسوي اي برنامج في cاوc++

يطلع

2 errors

************

Linking...

LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16

Debug/ggggg.exe : fatal error LNK1120: 1 unresolved externals

Error executing link.exe.

ggggg.exe - 2 error(s), 0 warning(s)

******************************************

فياريت الي يعرف وش المشكلة فيه؟

%%%%%%%%%%%%%%

السؤال 2:

عن sentinell

الي تكون كشرط في عمليات الدوران؟

اتمنى الي يعرف عنها يشرح لي

وجزاكم ربي جناته...

اختكم:مبرمجة مبتدئة

تم تعديل هذه المشاركة بواسطة مبرمجة مبتدئة في 19 أكتوبر 2004 في 21:36

iwo3e5b2.gif

اللهم اغفر لجميع المسلمين والمسلمات الاحياء منهم والأموات.

#2

هذا الخطأ اذا طلع معناه إن الخطأ مو في الـ logic بل في البرنامج نفسه

يعني يمكن استخدمتي شي غلط او شي

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

#3

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

وفي c

,وc++

??

iwo3e5b2.gif

اللهم اغفر لجميع المسلمين والمسلمات الاحياء منهم والأموات.

#4

المشكله مو في البرنامج ولا شي

انت طريقة انشائك للبروجكتر غلط

وانا صارة للي هالمشكله

عندما تختار new

بعدها اختار

win32 console application

وكمل الباقي عادي

انت ما اخترة هذا الشي عشان كذا يقلك خطا win16

إن شاء الله اكون افدك

#5

هذا الخطأ يظهر .. عندما تكون إعدادات بيئة التشغيل غير قياسية

وقد يظهر في الكود إذا كان هنالك خطأ في تعريف الدوال

المطلوب :

ضعي كود البرنامج

+

ماهو المترجم المستخدم؟

لتوضيح طريقة الإعداد القياسية

وسؤحاول حل المشكلة

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#6

Mrs.n

الف شكررر صحيح صار هذا الخطأ .

jaas

كيف غير قياسية؟

شااكرة لكم ردكم

بس اتمنى القى اجابة عنكيفية استخدام sentinell

?

iwo3e5b2.gif

اللهم اغفر لجميع المسلمين والمسلمات الاحياء منهم والأموات.

#7

أقصد ( غير قياسي )

بأن ملفات التشغيل اللازمة للبرنامج غير موجودة

إسم المكتبة كما هو مبين في الخطأ LIBC.LIB

لمعرفة ملفات التشغيل في الفيجول سي .. راجع الرابط

/index.php?showtopic=48031

أما sentinell ؟ فلا أعرف ماهو

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#8

السلام عليكم

شرح لمعنى sentinell :

void arrCopy(int *a, int *b, int len) 
{
    for(int i=0; i<len; i++) 
 { 
     *b++ = *a++;  
  }
}

ما الذى يحدث فى هذا البرنامج هو اننا نقارن i فى كل مره مع len ثم نقوم بعمليه واحده داخل الدوران, يعنى عمليتين لكل خطوه فى الدوران.

الان انظر إلى هذا الكود

void strCopy(char *str1, char *str2)
 {  
while(*str2++ = *str1++);
}

كما نعلم ال string فى العاده ينتهى ب 0 وهذه ليست الرقم "0" وإنما ال ASCII 0 ومعناها False , هذه العلامه تسمى فى لغة البرمجه sentinell, لو قارنا البرنامجين لوجدنا ان الاول ياخذ ضعف الوقت الذى يستغرقه الثانى, المشكله الوحيده هى انه علينا ان نكون متاكدين من وجود العلامه 0 فى اخر النص وإلى سيستمر البرنامج فى القرائه من الذاكره إلى ان يصل إلى علامة 0, من ما قد يسبب خطاء فى البرنامج.

كثير من المبرمجين يقومون بوضع علامه الصفر كى يتاكدو من عدم حدوث مثل هذا الخطاء.

اليكم مثال :

char *str = "Hellow World\0 new String";

وبهذه الطريقه يمكنهم إستخدام البرنامج الثانى للحصول على نصين على التوالى, او النص الاول فقط.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

jaas

شكرا على الرابط المفيد.

احمد غريب

وعليكم السلام ورحمة الله وبركاته....

اولا لك مني جزيل الشكر وصادق الدعوات على شرحك

ولكن ارجو ان تتحمل بعض تساؤلاتي.

1-

void strCopy(char *str1, char *str2)
{  
while(*str2++ = *str1++);
}

كيف string ينتهي عادة بــ صفر؟

اشرحها لي فضلا منك وليس امرا.

2-

هل دائما شرط sentinell

يكون محصورا بــ صفر لاني عرفت sentinell من مثال شرطه "أن المتغير != الصفر؟؟"

هل ذلك لزاماً؟

وهل شرطها يكون بدلا عن عملية الدوران فقط...ونلغي جميع الشكل العام للدوران الا الشرط؟؟

اعذرني على هذه الاسئلة لاني لااعلم ماهي sentinell الا من خلال شرط باستخدام الدوران فلا اعلم لها تطبيقات اخرى

اتمنى ان تتحمل اسئلتي الثقيلة

جزاك ربي اعلى الجنان

اختك:مبرمجة مبتدئة

iwo3e5b2.gif

اللهم اغفر لجميع المسلمين والمسلمات الاحياء منهم والأموات.

#10

السلام عليكم

اولاً اشكرك جزيل الشكر على ادبك, وإسلوبك الراقى فى طرح السؤال.

بالنسبه للسؤال الاول

اقتباس
كيف string ينتهي عادة بــ صفر؟

اشرحها لي فضلا منك وليس امرا.

حاضر ومن عيونى الاثنين.

كيف يحفظ النص فى الذاكره ؟

char *str = "Hello World";

هذا النص مثلاً يحفظ فى 12 بايت, لماذا؟

كلمة Hello فى 5 بايت

المسافه فى بايت

كلمة World فى 5 بايت

المجموع 11 بايت

بعد ذالك يضيف الكمبايلر علامة الصفر والتى يطلق عليها null او nil فى بعض اللغات ليعرف الكمبايلر اين نهاية الكلمه.

ملاحظه : علامة الصفر ليست هى الرقم صفر.

هذه العلامه معناها ايضاً False لذالك عندما نكتب :

void strCopy(char *str1, char *str2)
{  
while(*str2++ = *str1++);
}

نطلب من للكمبايلر ان يقوم بعلمية النسخ إلى ان يصل إلى علامة الصفر.

السؤال الثانى :

اقتباس
هل دائما شرط sentinell

يكون محصورا بــ صفر لاني عرفت sentinell من مثال شرطه "أن المتغير != الصفر؟؟"

هل ذلك لزاماً؟

وهل شرطها يكون بدلا عن عملية الدوران فقط...ونلغي جميع الشكل العام للدوران الا الشرط؟؟

نعم sentinell محصور بعلامة الصفر, طريقة إستخدام الصفر قد تختلف من امر لاخر, مثلا عند إستخدام for , نبحث عن الصفر ونوقف الدوران حال العثور عليه. اما فى While فنقوم بالدوران إلى ان نحصل على false وهى كما ذكرت علامة الصفر.

الاسئله لم تكن ثقيله بالعكس انا سعيد بها وشاكر لك الدعوه الطيبه, اللهم امين اجمعين.

والسلام

تم تعديل هذه المشاركة بواسطة احمد غريب في 25 أكتوبر 2004 في 23:33

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#11

,, وعليكم السلام ورحمة الله وبركاته

شاكرة لك جزيل الشكر

لم اكن اعلم انك تقصد بالصفر هو null فهمتها كقيمة صفر (عددية) وليس كمساحة تخزين في string .

.

.

.

اما بالنسبة لــsentinll في عمليات الدوران فقد اوصلت المعلومة كما أريدها.

فــ جزاك الله كل الخير على ماعلمتني و وجعله في موازين حسناتك

"خير الناس أنفعهم للناس"

iwo3e5b2.gif

اللهم اغفر لجميع المسلمين والمسلمات الاحياء منهم والأموات.

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

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