• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

البحث في المنتدى

Showing results for tags 'static-library'.

  • البحث بالتاقات

    اكتب الكلمات المفتاحيه بينها علامه الفاصله
  • البحث بكاتب الموضوع

تم إيجاد 5 نتيجة

  1. // Part 1 string result = CodeHelper.getCastedValue<string>(dataReader["name"]); int myId = CodeHelper.getCastedValue<int>(dataReader["id"]); int myId = CodeHelper.getCastedValue<int>(dataReader["id"], /*default value*/ -1); // Part 2 int test = 5; if( CodeHelper.isValueInList<int>( test, 1, 2, 3, 6, 5 ) ) { // TRUE CODE } else { // FALSE CODE } // Part 3 object test = new DataSet(); if ( CodeHelper.isTypeInList<object>( test, typeof(DataTable), typeof(DataView), typeof(DataSet) ) ) { // TRUE CODE } else { // FALSE CODE } // Part 4 if(CodeHelper.getTopDataRow(DataSet) == null) { // EMPTY DATASET } if (CodeHelper.getTopDataRow(DataTable) != null) { // NOT EMPTY DATATABLE }   هذه بعض الأكواد البرمجية التي أستخدمها لتسهيل التعامل مع أكواد السي شارب و أكواد ال في بي إليكم الكود الكامل:   namespace HelpersLibrary { public static class CodeHelper { public static T getCastedValue<T>(object obj) { T result = default(T); if (obj != null && !Convert.IsDBNull(obj)) { Type normalType = typeof(T); Type nullableType = Nullable.GetUnderlyingType(normalType); if (nullableType != null) { result = (T)Convert.ChangeType(obj, nullableType); } else { result = (T)Convert.ChangeType(obj, normalType); } } return result; } public static T getCastedValue<T>(object obj, T defaultValue) { T result = getCastedValue<T>(obj); if (result.Equals(default(T))) result = defaultValue; return result; } public static bool isValueInList<T>(T value, params T[] checkList) { return isValueInList(value, checkList.AsEnumerable()); } public static bool isValueInList<T>(T value, IEnumerable<T> checkList) { bool result = false; if (value != null && checkList != null) { foreach (T item in checkList) { if (item != null) { if (value.Equals(item)) { result = true; break; } } } } return result; } public static bool isValueInListParallel<T>(T value, params T[] checkList) { return isValueInListParallel(value, checkList.AsEnumerable()); } public static bool isValueInListParallel<T>(T value, IEnumerable<T> checkList) { bool result = false; if (value != null && checkList != null) { Parallel.ForEach( checkList, () => false, (listItem, loopState, madeChange) => { if (listItem != null) { if (madeChange = value.Equals(listItem)) loopState.Break(); } return madeChange; }, (changed) => { if (changed) lock (checkList) { result = changed; } } ); } return result; } public static bool isTypeInList<T>(T value, params Type[] checkList) { return isTypeInList(value, checkList.AsEnumerable()); } public static bool isTypeInList<T>(T value, IEnumerable<Type> checkList) { bool result = false; if (value != null && checkList != null) { Type valueType = value.GetType(); foreach (Type item in checkList) { if (item != null) { if (valueType.IsAssignableFrom(item)) { result = true; break; } } } } return result; } public static bool isTypeInListParallel<T>(T value, params Type[] checkList) { return isTypeInListParallel(value, checkList.AsEnumerable()); } public static bool isTypeInListParallel<T>(T value, IEnumerable<Type> checkList) { bool result = false; if (value != null && checkList != null) { Type valueType = value.GetType(); Parallel.ForEach( checkList, () => false, (listItem, loopState, madeChange) => { if (listItem != null) { if (madeChange = valueType.IsAssignableFrom(listItem)) loopState.Break(); } return madeChange; }, (changed) => { if (changed) lock (checkList) { result = changed; } } ); } return result; } public static DataRow getTopDataRow(DataSet dataSet) { return getTopDataRow<DataSet>(dataSet); } public static DataRow getTopDataRow(DataTable dataTable) { return getTopDataRow<DataTable>(dataTable); } public static DataRow getTopDataRow(DataView dataView) { return getTopDataRow<DataView>(dataView); } private static DataRow getTopDataRow<T>(T data) { DataRow dataRow = null; if (data != null) { if ( isTypeInList( data, typeof(DataSet), typeof(DataTable), typeof(DataView) ) ) { if (data is DataSet) { DataSet dataSet = data as DataSet; if (dataSet.Tables.Count > 0) { if (dataSet.Tables[0].Rows.Count > 0) { dataRow = dataSet.Tables[0].Rows[0]; } } } else if (data is DataTable) { DataTable dataTable = data as DataTable; if (dataTable != null) { if (dataTable.Rows.Count > 0) { dataRow = dataTable.Rows[0]; } } } else if (data is DataView) { DataView dataView = data as DataView; if (dataView != null) { if (dataView.Table != null) { if (dataView.Table.Rows.Count > 0) { dataRow = dataView.Table.Rows[0]; } } } } } else { throw new InvalidCastException("Data parameter is not valid, you are only alowed to use: DataTable, DataSet and DataView"); } } return dataRow; } } }   CodeHelper.cs
  2. مشروع ادارة مكتبة (تعليمي)

      هنا مشروع كامل وبالخطوات التفصيلية لادارة مكتبة  أظنه بداية جيدة لطلبة الجافا     بالتوفيق للجميع    
  3. السلام عليكم ورحمة الله وبركاته   مدخل : إذا بدأنا الحديث عن "إعادة استخدام الكود" فسنبدأ بذكر التوابع , فعندما تكتب جسم التابع ثم تستدعيه مرات ومرات داخل الكود , فأنت توفر إعادة كتابة هذا التابع في كل مرة استدعيته فيها ( باستثناء التوابع العودية التي تقوم بأكثر من ذلك) ثم أخذت الأمور تكبر , وصار لدينا العديد من التوابع وصرنا نحتاج نسخ ولصق أجسام التوابع الخاصة بنا أينما ذهبنا .. لذلك قررنا وضع كل تلك التوابع في ملف واحد , وأسميناه header file وعوضاً عن نسخ محتوى الملف يدوياً جاءت include# لتقوم بعملية النسخ واللصق فقط , ونحن نخبرها بموضع واسم الملف الذي نريد لصق محتواه . ولكن ماذا عن أجسام التوابع ! آلاف التوابع وآلاف الأجسام , وكلها تحتاج للترجمة من قبل الـ compiler كل مرة ! عندها جاءت مكتبات الربط لحل المشكلة .. وأصبحنا ننسخ فقط الـ function prototype فقط ليعرف المترجم أن هناك تابعاً بهذا الاسم وهذه الوسطاء parameters وله القيمة المعادة من النوع الفلاني returned type . ولكن أين أجسام التوابع ؟ كثيراً ما حاولنا رؤية محتوى أحد التوابع المثيرة للاهتمام , ماذا بداخل التابع sin وماذا بداخل التابع rand ! أحياناً يكون متاحاً لنا الوصول إلى أجسام التوابع , وأحياناً أخرى تكون الأجسام مخفية داخل المكتبات الساكنة التي سنتحدث عنها اليوم .   هذا المقال موجّه لمن تجاوز مرحلة انشاء التوابع ويرغب بالتعرف على كيفية حزم التوابع ضمن مكتبات مشابهة لمكتبات اللغة بحيث تظهر الـ prototypes فقط للتوابع ولا تظهر أجسامها.   الفهرس :   0- مقدمة 1- ما هي المكتبات الساكنة static library ؟ 2- لماذا نحتاج إلى مكتبة ساكنة ؟ 3- إنشاء مكتبة ربط ساكنة باستخدام بيئة code::blocks ربط المكتبة مع مشروع بلغة C ربط المكتبة مع مشروع بلغة ++C  0-المفدمة : لدينا الكود البسيط التالي : int Add(int i1, int i2){    return i1 + i2;}long long Mul(int i1, int i2){    return i1 * i2;}int Sub(int i1, int i2){    return i1 - i2;}int Div(int i1, int i2){    if(i2)        return i1 / i2;    return -1;}أين ستضع الكود السابق في حال أردت استخدام التوابع السابقة بشكل متكرر ؟ قد تقوم بنسخها معك أينما ذهبت , وقد تقوم بوضعها في ملف header خاص بك وقوم بعمل include له , ولكن ماذا لو كان لديك المئات من التوابع , هل تدري أنك في كل مرة تقوم بعمل compile يتم إعادة ترجمة الكود كاملاً , وربط كل تلك التوابع مع استدعاءاتها في عمليات طويلة , يمكنك أن تتخيل ان عملية ترجمة ملفات بهذا الحجم ستسغرق الكثير من الوقت , فما بالك عندما تصل إلى آلاف التوابع , ستكون عملية الترجمة لكودك البسيط الذي لم يتجاوز الأسطر .. كابوساً من الانتظار .   1- ما هي المكتبات الساكنة static library ؟ هي ملفات تحوي أجسام توابع تمت ترجمتها مسبقاً ومتغيرات تم حجزها مسبقاً, يتم نسخ محتويات المكتبة إلى الملف التنفيذي مباشرة عند بناء مشروع مرتبط linked بها بعد عمل الـ linking اللازمة لربط استدعاءات التوابع بأجسامها كما يمكن أن تنسخ إلى مساحة ذاكرة ساكنة خاصة بها محددة في وقت الترجمة .   2- لماذا نحتاج إلى مكتبة ساكنة ؟ كما ذكرنا في المقدمة , فإن انشاء مكتبة ساكنة يخفف الحمل عن المترجم compiler في وقت الترجمة , فالمكتبة مترجمة مسبقاً وتنتظر الربط linking كما أنها تقيد في تجزئة ملفات الكود وتنظيم بنية المشروع , ويمكننا أن نضيف إلى فوائدها : إغلاق مصدر البرنامج , أي جعله closed source وذلك لأن عدم وجود أجسام للتوابع ضمن ملفات المشروع يجعل هذا الجزء مغلق المصدر , مما يتيح بعض الخصوصية وحقوق النشر للمبرمج والشركة.   3- إنشاء مكتبة ربط ساكنة باستخدام بيئة code::blocks يمكن إنشاء مكتبات الربط بأي مترجم , وتتيح أي بيئة القيام بذلك بسهولة , باستخدام code::blocks سنقوم بإنشاء مكتبة ربط ساكنة ثم نربطها بمشروع يستخدمها , من القائمة file اختر new ثم project واختر نوع المشروع Static Library لدينا أجسام التوابع التالية : int Add(int i1, int i2){    return i1 + i2;}long long Mul(int i1, int i2){    return (long long)i1 * i2;}int Sub(int i1, int i2){    return i1 - i2;}int Div(int i1, int i2){    if(i2)        return i1 / i2;    return -1;} انسخ الكود السابق واستبدل المحتوى السابق للمشروع (الذي تنشئه البيئة افتراضياً) به . والآن قم بعمل Build ويفترض أن الكود خالٍ من الأخطاء ( لا تقم بعمل run لأن هذا ليس مشروعاً كاملاً ولا يحوي main ) ربط المكتبة مع مشروع بلغة C والآن لنقم بإنشاء مشروع جديد عادي من نوع console project واختر لغة C لكتابة المشروع للتبسيط , سنقوم بلصق تصاريخ التوابع قبل الـmain مباشرة : سيكون لدينا الكود التالي في المشروع : #include <stdio.h>#include <stdlib.h>int Add(int,int);long long Mul(int, int);int Sub(int, int);int Div(int, int);int main(){    printf("4 + 2 = %d\n",Add(4,2));    printf("5 - 4 = %d\n",Sub(5,4));    printf("5 * 5 = %d\n",Mul(5,5));    printf("5 / 5 = %d\n",Div(5,5));    return 0;}والآن إلى عملية الـ linking , من Settings>> Compiler اختر Linker settings ثم قم بالضغط على Add واختر مسار المكتبة الذي أنشأناها قبل قليل ثم O.K -- O.K والآن يمكنك عمل Build ثم run للمشروع وتكون قد أنشأت أول مكتبة ربط ساكنة لك   ربط المكتبة مع مشروع بلغة ++Cتختلف توابع الـ C عن توابع ++C بمسألة تسمى name mangling وهي عملية يقوم بها المترجم فيغيّر أسماء التوابع قبل مرحلة الـ linking ليتمكن من عمل  overloading للتوابع أو إذا كانت بداخل classes , المهمّ أن توابع ++C لا تبقى بنفس الاسم الذي نكتبه عند التعريف , وكل مترجم له mangling خاص به , ولكن في C لا يوجد overloading ولا تغليف للتوابع , فالتابع يبقى بنفس اسمه بالنسبة للمترجم أثناء الربط , لذلك عندما نقوم بعمل مكبتة ربط ساكنة ونريد ربطها مع كود بلغة ++C فعلينا اخبار المترجم أن هذه التوابع مكتوبة ومترجمة بلغة C وذلك عن طريق الكلمة المجوزة التي لا نستخدمها كل يوم , extern ويصبح كود الـ ++C كما يلي : #include <cstdio>#include <cstdlib>extern "C"{    int Add(int,int);    long long Mul(int, int);    int Sub(int, int);    int Div(int, int);}int main(){    printf("4 + 2 = %d\n",Add(4,2));    printf("5 - 4 = %d\n",Sub(5,4));    printf("5 * 5 = %d\n",Mul(5,5));    printf("5 / 5 = %d\n",Div(5,5));    return 0;} والآن يمكنك الانطلاق لعمل مكاتبك الساكنة الخاصة بك , وتنظيم مشاريعك بطريقة أكثر تقدماً .   والله ولي التوفيق
  4. السلام عليكم , انا احمد من كردستان العراق , انا طالب جامعي المرحلة الاخيرة (الرابعة ) علوم الحاسبات , عندي مشروع لازم اسويه , ولكن لا اعرف كيف اقوم بذالك , المطلوب مني ان اركب ويب كام على نضارات نكدر نشوف العين , و نربطة ويا ال سي شارب , حتي نسوي ( اي رايتر ) eye writer < ف شفت بعض الفيديوهات تستعمل ال opencv < ولكن انا بس من قبل اسبوعين سمعت بيها , ف ممكن مساعدة باي شكل من الاشكال ؟؟؟و شكرا ... :)
  5. السلام عليكم   اخواني الاعزاء اعضاءً ومشرفين   اعتقد ان هذه هي المشاركه الاولى لي في منتداكم جميل التصميم والاتقان والغزير بالفائده بعد العوده الي ملفي ولقد وجدت ان لي 11 مشاركه ف المنتدى ايام الصغر خخخخ اقدمها ف 2006 سبحان الله قبل 7 سنوات ذكريات جميله وايام تمضي اللهم بارك لنا في اعمارنا ويسرنا لعمل الخير والتقرب اليك   ارجو من ذوي الخبره والاختصاص ان يساعدوني في ارشادي لحل مشكلتي في اسرع وقت وزاكم الله كل خير على ما تقدمونه   برنامج قاعدة البيانات sql server 2000 ويوجد عليه قاعده بيانات اسمها pal وبداخلها الكثير من الجداول ويوجد برنامج مصنوع على فيجول بيسك للتعامل مع هذه البيانات   الجديد انني قد تعلمت على فيجول بيسك واستطعت ان اعمل برنامج للتعامل مع هذه البيانات وانا على نفس الكمبيوتر واردت ان اطوره لكي استطيع التعامل على نفس البيانات من خلال كمبيوتر اخر موجود خارج نطاق الشبكة المحليه مع العلم ان الايبي مثبت لكلا الجهازين   ارجو ان ترشدوني لحل هذه المعظله مع اننيحاولت كثير ان اقرا كل المواضيع التي استطعت الوصول اليها في منتداكم او مقاطع الفيديو التي تتحدث عن ذلك الموضوع الا انه معظم الحلول كانت تتركز على برنامج sql server  ذو الاصدارات العاليه 2005 او 2008 او اكثر   ارجو ان اكون قد استطعت ان اوصل لكم مشكلتي وارجو ان يكون الشرح مفصل جدا ان تكرمت علي واشكركم جميعا مسبقا لا تبخلو علي باي معلومه قد استطيع ان ابحث عنها لاهتدي الي الطريق