• الإعلانات

    • فيصل الحربي

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

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

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

Showing results for tags 'code'.

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

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

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

  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. Dot Net Code Elixir Number 0007

     What is TransactionScope object in Microsoft Dot Net Programming Code?      TransactionScope is an object which queues all SQL transactions inside its block and add them to the database distributed transactions. Its main benefit with handling multiple transactions automatically is to allow one call code to commit all transactions or one call code to rollback all transactions.      Its main disadvantage is combining all its block transactions within distributed transactions in the database, and if more than one connection pool is used, then all these pools are blocked in the database until the whole queued transactions are processed. The wrong usage of this object makes the database as a simple file to save data where in simple file case, it is impossible to have multithreaded operations. These multithreaded operations are the main reason for inventing databases. This wrong usage leads to too much timeout exceptions and transactions dead lock most of the time that results in a very slow heavy loaded system.      In the TransactionScope block, you cannot prevent select database calls from not being included in the transaction which leads to a very big transaction logs, memory and very heavy recovery data in case transaction is rolled back for any reason.      The best usage is to use only one connection pool through the whole TransactionScope process. The main need of this object is in case you have database calls that you cannot modify and you need to combine them with your code. So, it gives a great help in rollback for database transactions that you cannot modify or change.      It is recommended to use pool and separated transactions within the database connection object which needs much more logic codes in transactions for commit and rollback well. This leads to very fast light transactions, makes SQL transactions able to be applied to none selectcommand calls to the database easily, and keeps the multithreaded ability active, in which the databases were invented in the first manner. TransactionScope Example: Good Transaction Example:   Code Elixir Notes By Mohamed Sobeh: Dot Net Code Elixir Number 0007: https://goo.gl/jbQqqF Draft 0007 Dot Net Code Elixir E-Book: https://goo.gl/HrygWP
  3. What is the difference between Managed Code and UnManaged Code in Microsoft Dot Net Programming Code? Managed Code:            Is written to target the services of the managed runtime execution environment (like Common Language Runtime in .NET Framework). Themanaged code is always executed by a managed runtime execution environment rather than the operating system directly. Managed refers to a method of exchanging information between the program and the runtime environment. Because the execution of code is governed by the runtime environment, the environment can guarantee what the code is going to do and provide the necessary security checks before executing any piece of code. Because of the same reason the managed code also gets different services from the runtime environment like Garbage Collection, type checking, exception handling, and bounds checking … etc. This way managed code does not have to worry about memory allocations, and type safety … etc. Applications written in Java, C#, and VB.NET … etc. target a runtime environment which manages the execution and the code written using these types of languages. These languages are known as Managed Code. Managed code is always compiled into an Intermediate Language (MSIL in case of .NET Framework). The compiler used by .NET framework to compile managed codecompiles it into Intermediate Language and generates the necessarymetadata, which is symbolic information that describes all of the entry points and the constructs exposed in the Intermediate Language (e.g., methods, properties) and their characteristics. The Common Language Infrastructure(CLI) Standard describes how the information is to be encoded, and programming languages that target the runtime emit the correct encoding.           In .NET Framework Managed Code runs within the .Net Framework’s CLR and benefits from the services provided by the CLR. When we compile the managed code, the code gets compiled to an intermediate language (MSIL) and an executable file is created. When a user runs the executable file, the Just In Time Compiler of CLR compiles the intermediate language into a native code specific to the underlying architecture. Since this translation happens by the managed execution environment (CLR), the managedexecution environment can make guarantees about what the code is going to do, because it can actually reason about it. It can insert traps and sort of protection around the code. If it’s running in a sandboxed environment, it can insert all the appropriate garbage collection hooks, exception handling, type safety, array bounce, index checking and so forth.           Managed code also provides platform independence. As the managed code is first compiled to intermediate language, the CLR’s JIT Compiler takes care of compiling this intermediate language into the architecture specific instructions. UnManaged Code:            Is directly executed by the Operating System. Typically, applications written in VB 6, C++, and C … etc. are all examples of unmanaged code.Unmanaged code typically targets the processor architecture and is always dependent on the computer architecture. UnManaged code is always compiled to target a specific architecture and will only run on the intended platform. This means that if you want to run the same code on different architecture, then you will have to recompile the code using that particular architecture. UnManaged code is always compiled to the native code which is architecture specific. When we compile unmanaged code, it gets compiled into a binary x86 image. This image always depends on the platform on which the code was compiled and cannot be executed on the other platforms that are different than the one on which the code was compiled. Unmanaged codedoes not get any services from the managed execution environment.           In unmanaged code, the memory allocation, type safety, and security … etc. need to be taken care of by the developer. This makes unmanaged codeprone to memory leaks like buffer overruns and pointer overrides and so forth.           UnManaged executable files are basically a binary image, x86 code, loaded into memory. The program counter gets put there and that’s the last the Operating System knows. There are protections in place around memory management and port I/O and so forth, but the system doesn’t actually know what the application is doing. What Dot Net FrameWork programming languages can use UnMaaged Code?           UnManaged code can be written with C++, and C# … etc. Dot Net FrameWork programming languages. Why UnManaged Code is needed? Legacy – native code long predates managed code, and there are still native apps to maintain. Performance – all things being equal, native code should be faster and have a smaller memory footprint than managed code (things are rarely equal though, and for I/O bound tasks, the difference is negligible); also, non-deterministic garbage collection can play hell with real-time code. System or hardware-specific hacks – native code may have access to system calls or libraries that the managed code may not (such as for parallel processing or vector processing, although I imagine most managed languages should be able to expose an API for such operations). No Virtual Machine (Dot Net FrameWork RunTime Environment) available – you may be targeting a system for which no Virtual Machine has been developed, or doesn’t have the resources to run managed code (such as a microcontroller or other embedded system); also, your target system may not need the capabilities of a full-up Virtual Machine (predominately CPU-bound tasks, limited I/O … etc.). Maximum speed of execution – The managed code layer adds around 10% overhead to the program. Maximum flexibility – Some features of some APIs are unavailable through the managed code library. Using unmanaged APIs from a managed code program is possible but more difficult, and introduces its own performance issues. Dot Net Code Elixir Number 0002: https://goo.gl/gDi0kw Draft 0002 Dot Net Code Elixir E-Book: https://goo.gl/HrygWP
  4. What is the difference between using Empty String (“”) vs (string.Empty) in Microsoft Dot Net Programming Code? Answer using C# Dot Net Programming Language: Code 1: string textValue = “”; Code 2: string textValue = string.Empty; Code 1: each time empty string quotes are found, they are translated to a new empty string object. So, each “” is a new allocated useless object in memory especially for string since string object is an Immutable object (Any action with the object will lead to new allocated object and not modify the used object). Code 2: each time string.Empty is used, all empty string variables are assigned to only one static string object which reduces memory used for empty strings by assigning all empty strings to only one global empty string object which has special MSIL code in Dot Net to handle all empty strings as only one global string object during Active Dot Net framework life time. Note: there are tests on the internet shows a very small difference in speed (Milliseconds) which means nothing in most applications, but the main point here is reducing memory mainly and reducing number of useless objects the Garbage Collector need to release from memory. Dot Net Code Elixir Number 0001: https://goo.gl/9ZDBez Draft 0001 Dot Net Code Elixir E-Book: https://goo.gl/HrygWP
  5. السلام عليكم ورحمة الله وبركاته الرجاء مساعدتى فى كتابة كود يمكننى من الانتقال الى textbox2 بعد ادخال رقم فى text box1 تلقائيا وهكذا أى بمعنى أدق عندى حوال 20 حقل textbox وكلها أريد أن أدخل فيها رقم (واحد) لكل خانة واريد أن يعمل (tab) تلقائي بعد ادخال الرقم فى الخانة الأولى  مثال: بعد أن أدخل فى الخاننة الأوى رقم 5 ينتقل تلقائيا بعد الكتابة إلى الخانة التالية وهكذا وشكرا جزيلا لكم
  6. السلام عليكم ورحمة الله وبركاته   مدخل : إذا بدأنا الحديث عن "إعادة استخدام الكود" فسنبدأ بذكر التوابع , فعندما تكتب جسم التابع ثم تستدعيه مرات ومرات داخل الكود , فأنت توفر إعادة كتابة هذا التابع في كل مرة استدعيته فيها ( باستثناء التوابع العودية التي تقوم بأكثر من ذلك) ثم أخذت الأمور تكبر , وصار لدينا العديد من التوابع وصرنا نحتاج نسخ ولصق أجسام التوابع الخاصة بنا أينما ذهبنا .. لذلك قررنا وضع كل تلك التوابع في ملف واحد , وأسميناه 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;} والآن يمكنك الانطلاق لعمل مكاتبك الساكنة الخاصة بك , وتنظيم مشاريعك بطريقة أكثر تقدماً .   والله ولي التوفيق
  7. بسم الله الرحمن الرحيم اخواني و اخواتي كيف لي بالامكان حماية برنامج معين بواسطه عمل activation code اي ان البرنامج لا يمكن ان يتم تسويقه الا بعلم المبرمج و ذلك عند تشغيله يطلب activation code  فيتم ارساله من قبل المبرمج للمستفيد ليفتح البرنامج بعد ذلك   و رحم الله والديكم دنيا و اخرة    
  8. بجد يا جماعه انا مش عارف المشكله فى ايه بجد ارجو الحل السريع شكرا....
  9. السلام عليكم الزملاء الفضلاء بالمنتدى الكريم  برجاء التوجيه او المساعدة فى عمل شاشة دخول بالباس ورد والتاريخ  واسم العملية التى تم التعامل معها من خلال هذا الباس ورد علما بأنى استخدم فيجوال بييسك 2008 وقاعدة بيانات اكسيس 2007 شكرا لبزلكم الكريم   برجاء عدم الاحالة لموضوعات متشابهة فى المنتدى اذاكانت بدون اجابات وافية او فى غير المضمون                                            ****** كل عام واعضاء المنتدى العزيز بكل خير وبركات اللهم بلغنا رمضان ****  
  10. السلام عليكم انتشرت في الاونة الاخيرة مواقع كثيرة تتيح لك تجربة او تشغيل كود البي اج بي خاصتك على (الاونلاين) على المتصفح بدون تنصيب الاباتشي . وهو يستعمل لاختبار الدوال البسيطة  والعبارات الاساسية بلا قواعد بيانات وهذا احدها  
  11. Bar Code

    السلام عليكم. اريد اي ملومات حول استعمالات  Bar Code في Rave Reports شكرا.
  12. السلام عليكم إخواني قمت بتحميل نسخة من JDeveloper11 من موقع شركة اوراكل وكذلك نسخة من JDeveloper12 وعندما أقوم بعملية التنصيب لا تكتمل عملية التنصيب ويقوم بإظهار الخطأ التالي Could not extract the archive since it is corrupted. Error code =2 علما باني أوقفت برناج الفيروسات صور مصغرة مرفقة 
  13. السلام عليكم ورحمة الله وبركاته   هذه اول مشاركة لي في المنتدى .... انا مبتدئ في تعلم ال php ولا اعرف كيف اقوم بتحميل ملف من على السرفر   انا بحثت وقرأت شروح تعليمية دائما أجد كيفية رفع ملف على السرفر   حسنا بعدما رفع المستخدم الملف الى السرفر كيف احمله انا على الجهاز الخاص بي   لو امكن طلب ان يرفق شرح الكود مع الكود حتى اتمكن من فهمه   ارجو الرد وشكرا
  14. السلام عليكم ورحمة الله وبركاته تعتبر خوارزمية Depth First Search أحد الخوارزميات للمرور على جميع النقاط المتصلة connected nodes في مخطط Graph ما .. لا أريد التكرار فالموضوع عليه الكثير من الشروحات الواضحة على youTube  كما أن صفحة wikipedia فيها شرح ممتاز (وفيديو ملحق لإنشاء متاهة أيضاً :) ) ولكن لتبسيط الأمر .. تخيل أن لدينا شجرة كثيرة الفروع , حتى أن فروعها متداخلة , يعني يمكن أن يتقاطع فرعان ويندمجا ! تخيل أن هذه شجرة : هذه الأشجاء التخيلية التي تحوي فروعاً وتقاطعات تُسمّى Graphs (مخططات ) المهم .. تخيل أننا نريد المرور على جميع فروع الشجرة . سنبدأ من الجذر ونصعد .. ثم سيتفرع الجذع الى عدة فروع .. وكل فرع سيتفرع لاحقاً وهكذا .. هناك عدة طرق يمكننا من خلالها ضمان المرور على جميع الفروع .(المرور على جميع الفروع والتقاطعات(العقد) يُسمّى traversing ) إحداها طريقة Depth first Search تحتاج لتطبيقها إلى مكدّس ومعرفة بسيطة في الحلقات والشروط . خوارزمية DFS : 0-نضع الجذر في المكدس ونبدأ الحلقة طالما أن المكدس غير فارغ : 1- نقوم بوضع علامة على العنصر في قمة المكدس للدلالة على انه قد تمت زيارته 2- نقوم باختبار وجود عناصر مرتبطة بالعنصر الحالي(قمة المكدس ) وهل هي صالحة للزيارة (تكون صالحة للزيارة إن كانت مرتبطة بالعنصر ولم تتم زيارتها من قبل ) 3- كل عنصر يحقق الشرط في الخطوة 2 نضعه في المكدس 4- إن لم يحقق أي عنصر الشرط في الخطوة 2 نقوم بإخراج العنصر الحالي من المكدس 5- ان كان المكدس غير فارغ نذهب للخطوة 1   لنحول الخوارزمية إلى كود نحتاج إلى آلية تكديس وسنستعمل std::stack, وآلية loop ويمكن أن نستعمل for  , وسنحتاج آلية لإعادة القيام بالعملية على العقدة الجديدة (يمكن أن نستعمل العودية recursion ولكن سنطبق اليوم بواسطة حلقة while) كما أننا نحتاج وجود المخطط وبه العقد المتصلة (النقاط المتصلة) وسنستعمل ببساطة مصفوفة من بعدين , كل عنصرين متجاورين فيها يكونان مرتبطين مثال للمصفوفة : 1 2 3 4 5 6 7 8 9 نقول أن 1 مع 4 و 2 مرتبطة , وكذلك :  9 مع 6 و 8 وهكذا (يمكن لك أن تعتبر وجود ارتباطات بالمائل مثل 5 و 9 ان أردت ) يمكننا وضع علامة على النقطة التي تمت زيارتها ببساطة بتغيير قيمة المصفوفة مثلاً من 0 إلى 1 أخيراً  : نلاحظ أن الخطوة 4 لم تعد تحتاج إلى for loop  لأن العقد المرتبطة في حالة المصفوفة هي 4 كحد أقصى لذلك سنكتبها يدوياً   لنبدأ ..على بركة الله تحويل الخوارزمية إلى كود : أولا ودوماً أولاً : تطبيق بنية الـGraph ببساطة مصفوفة يمكن ان تحوي 0 أو 1 .. bool :) bool graph[30][30]={false}; القيمة false تعني أننا لم نزر أي عقدة بعد . ثانياً : كيفية الامساك بعقدة ما .. في حالتنا عن طريق الموضع في المصفوفة سنكتب  struct بسيط يُمثّل الموضع struct coord{     int x;     int y;     coord(int x1,int y1){         x=x1;         y=y1;     } }; ولا ننسى آلية التكديس stack <coord> s;والآن  الحلقة التي سنعمل بداخلها الخطوات من 1 إلى 5 , وبها سنتابع بقية العمل , ولكن قبل الدخول إليها علينا دفع الجذر إلى المكدس (أو أي عقدة نرغب في البدء منها ) while(!s.empty()){ }سنقوم بملء التابع السابق كما توضّح الخوارزمية   1-عملية وضع علامة على الفرع الذي تمت زيارته         graph[s.top().y][s.top().x]=true;2-اختبار صلاحية زيارة جميع العقد المرتبطة , وبعد انتهاء العقد المرتبطة ( أو عدم وجودها فالأمر سيان ) أخرج العقدة الحالية من stack سنختبر كل جهة على حدة كما يلي: //look at left        if(valid(s.top().y,s.top().x-1)){            s.push(coord(s.top().y,s.top().x-1));        }        //look at right        else if(valid(s.top().y,s.top().x+1)){            s.push(coord(s.top().y,s.top().x+1));        }        //look up        else if(valid(s.top().y-1,s.top().x)){            s.push(coord(s.top().y-1,s.top().x));        }        //look down        else if(valid(s.top().y+1,s.top().x)){            s.push(coord(s.top().y+1,s.top().x));        }        else{            s.pop();        }الكود بصيغته النهائية : الكود : أولاً : البنى والتوابع المساعدة struct coord{    int x;    int y;    coord(int y1,int x1){        x=x1;        y=y1;    }};const int X=10,Y=10;bool graph[Y][X]={false};stack <coord> s;bool valid(int y,int x){    if(x<X&&x>=0)        if(y<Y&&y>=0)            if(graph[y][x]==false)                return true;    return false;}والتنفيذ في الدالةmain int main(){    //push the current node    s.push(coord(0,0));    while(!s.empty())    {        graph[s.top().y][s.top().x]=true;        //look at left        if(valid(s.top().y,s.top().x-1)){            s.push(coord(s.top().y,s.top().x-1));        }        //look at right        else if(valid(s.top().y,s.top().x+1)){            s.push(coord(s.top().y,s.top().x+1));        }        //look up        else if(valid(s.top().y-1,s.top().x)){            s.push(coord(s.top().y-1,s.top().x));        }        //look down        else if(valid(s.top().y+1,s.top().x)){            s.push(coord(s.top().y+1,s.top().x));        }        else{            s.pop();        }    }    return 0;}كي نتابع عملية السير سنكتب تابع بسيط لإظهار المخطط بعد كل تغيير هذا مثال void printGraph(){/*Put here any implementation to return the pointer to top left*/        cout << s.size() << " " << s.top().x <<" " <<s.top().y<< endl;    for(int i=0;i<Y;i++)    {        for(int j=0;j<X;j++)        {            cout<<(graph[i][j]?'#':' ');        }        cout <<endl;    }/*Put here any implementation to Sleep for 10-100 milli second*/    }في ويندوز سأستعمل تابعين من الـ API void printGraph(){    COORD topLeft={0,0};    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),topLeft);    cout << s.size() << " " << s.top().x <<" " <<s.top().y<< "     " << endl;    for(int i=0;i<Y;i++)    {        for(int j=0;j<X;j++)        {            cout<<(graph[i][j]?' ':'#');        }        cout <<endl;    }    Sleep(30);}ثم ضع استدعاء التابع داخل حلقة while الخاصة بالخوارزمية جرب الكود التالي  في ويندوز (++C) #include<stack>#include<iostream>#include<windows.h>using std::stack;using std::cout;using std::endl;struct coord{    int x;    int y;    coord(int y1,int x1){        x=x1;        y=y1;    }};const int X=10,Y=10;bool graph[Y][X]={false};stack <coord> s;void printGraph(){    COORD topLeft={0,0};    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),topLeft);    cout << s.size() << " " << s.top().x <<" " <<s.top().y<< "     " << endl;    for(int i=0;i<Y;i++)    {        for(int j=0;j<X;j++)        {            cout<<(graph[i][j]?' ':'#');        }        cout <<endl;    }    Sleep(30);}bool valid(int y,int x){    if(x<X&&x>=0)        if(y<Y&&y>=0)            if(graph[y][x]==false)                return true;    return false;}int main(){    //put flag on the visited node    int x=0,y=0;    //push the current node    s.push(coord(x,y));    while(!s.empty())    {        printGraph();        graph[s.top().y][s.top().x]=true;        //look at left        if(valid(s.top().y,s.top().x-1)){            s.push(coord(s.top().y,s.top().x-1));        }        //look at right        else if(valid(s.top().y,s.top().x+1)){            s.push(coord(s.top().y,s.top().x+1));        }        //look up        else if(valid(s.top().y-1,s.top().x)){            s.push(coord(s.top().y-1,s.top().x));        }        //look down        else if(valid(s.top().y+1,s.top().x)){            s.push(coord(s.top().y+1,s.top().x));        }        else{            s.pop();        }    }    return 0;}  تجدر الإشارة إلى فكرة هامّة جداً .. يعتمد المعالج في استدعاء التوابع على مكدّس خاص بالاستدعاءات ويمكننا الاستغناء عن مكدسنا std::stack والاستعانة بالمكدس الخاص بالاستعداءات وذلك عن طريق وضع العملية في تابع بدلاً من while , وبدلاً من عملية push سنقوم باستدعاء التابع مرة أخرى , وبمجرد انتهاء التابع أو عمل return  سيتم عمل pop للقيمة الحالية انظر الكود التالي(أبسط من السابق) #include<iostream>#include<windows.h>using std::cout;using std::endl;const int X=10,Y=10;bool graph[Y][X]={false};void printGraph(){    COORD topLeft={0,0};    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),topLeft);    for(int i=0;i<Y;i++)    {        for(int j=0;j<X;j++)        {            cout<<(graph[i][j]?' ':'#');        }        cout <<endl;    }    Sleep(30);}bool valid(int y,int x){    if(x<X&&x>=0)        if(y<Y&&y>=0)            if(graph[y][x]==false)                return true;    return false;}void function(int y,int x){    printGraph();    graph[y][x]=true;    //look at left    if(valid(y,x-1)){        //s.push(coord(s.top().y,s.top().x-1));        function(y,x-1);    }    //look at right    if(valid(y,x+1)){        //s.push(coord(s.top().y,s.top().x+1));        function(y,x+1);    }    //look up    if(valid(y-1,x)){        //s.push(coord(s.top().y-1,s.top().x));        function(y-1,x);    }    //look down    if(valid(y+1,x)){        //s.push(coord(s.top().y+1,s.top().x));        function(y+1,x);    }//        s.pop();        return ;}int main(){    function(0,0);    return 0;}ولكننا خسرنا ميزة تتبع المكدس فلم يعد بإمكاننا مثلاً كتابة cout << s.size() << " " << s.top().x <<" " <<s.top().y<< "     " << endl;إذا جربت الكود , فستلاحظ أنه يسير بطريقة عادية ليمر على جميع عناصر المصفوفة , ولكن جرب كتابة  function(5,5);وسيبدأ من المنتصف , وعندها ستلاحظ سلوكاً غير متوقع (ربما) في المرور على جميع العناصر .   والآن إلى إنشاء المتاهة: ببساطة سنتحرك خطوتين بدلاً من خطوة واحدة , وبذلك سنترك فراغات تُشكّل الحوائط ! #include<cstdio>#include<windows.h>const int X=21,Y=21;bool graph[Y][X]={false};void printGraph(){    COORD topLeft={0,0};    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),topLeft);    for(int i=0;i<Y;i++)    {        for(int j=0;j<X;j++)        {            putchar(graph[i][j]?' ':'#');        }        putchar('\n');    }}bool valid(int y,int x){    if(x<X&&x>=0)        if(y<Y&&y>=0)            if(graph[y][x]==false)                return true;    return false;}void function(int y,int x){    printGraph();    //look at left    if(valid(y,x-2)){        //s.push(coord(s.top().y,s.top().x-1));        graph[y][x-1]=true;        graph[y][x-2]=true;        function(y,x-2);    }    //look at right    if(valid(y,x+2)){        //s.push(coord(s.top().y,s.top().x+1));        graph[y][x+1]=true;        graph[y][x+2]=true;        function(y,x+2);    }    //look up    if(valid(y-2,x)){        //s.push(coord(s.top().y-1,s.top().x));        graph[y-1][x]=true;        graph[y-2][x]=true;        function(y-2,x);    }    //look down    if(valid(y+2,x)){        //s.push(coord(s.top().y+1,s.top().x));        graph[y+1][x]=true;        graph[y+2][x]=true;        function(y+2,x);    }//        s.pop();        return ;}int main(){    function(5,5);    Sleep(100000);    return 0;}جرب الكود , وستلاحظ أن المتاهة سهلة جداً  للحل ولجعلها صعبة وعشوائية سنغير فقط طريقة الرؤية للكود ! ماذا يعني هذا ؟ يعني أن نجعل اختبارات (اليسارواليمين .. ) غير ثابته , فمثلاً يمكن أن نختبر المرور للأسفل قبل اليمين وهكذا .. لاحظ اختلافات الكود : #include<cstdio>#include<cstdlib>#include<ctime>#include<windows.h>const int X=31,Y=31;bool graph[Y][X]={false};void printGraph(){    COORD topLeft={0,0};    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),topLeft);    for(int i=0;i<Y;i++)    {        for(int j=0;j<X;j++)        {            putchar(graph[i][j]?' ':'#');        }        putchar('\n');    }}bool valid(int y,int x){    if(x<X&&x>=0)        if(y<Y&&y>=0)            if(graph[y][x]==false)                return true;    return false;}void function(int y,int x){    printGraph();    for(int i=0;i<10;i++){//to ensure passing all valid moves        int dx=0,dy=0;        while(dx^dy==0){            dy=rand()%2;//zero or one            dx=rand()%2;//zero or one        }        if(rand()%2==1)            dx*=-1,            dy*=-1;        if(valid(y+2*dy,x+2*dx)){            //s.push(coord(s.top().y,s.top().x-1));            graph[y+dy][x+dx]=true;            graph[y+2*dy][x+2*dx]=true;            function(y+2*dy,x+2*dx);        }    }        return ;}int main(){    srand(time(0));    function(5,5);    Sleep(100000);    return 0;{في الختام أود لفت الانتباه إلى أنه من الأمور الهامة جداً عند دراسة الخوارزميات عدم خلط الخورازمية بالتطبيق , مثلاً فتطبيق رسم المتاهة هو أحد التطبيقات لخوارزمية DFS وليس هو الخوارزمية , وقد وضعته كمثال رسومي جيد لبيان جمال الخوارزمية ليس أكثر .   والله ولي التوفيق
  15. برجاء من اخوانى الخبراء مساعدتى فى مشكله هذا الكود  لدى مشكله فى البرنامج المرفق فى انه لو ادخلت اى بيان بالغه العربيه  عند عمل تصدير الى صيغة pdf يظهرها على شكل رموز وعلامات استفهام  برجاء مساعدتى فى اظهار الحروف بالغه العربيه  ولكم جزيل الشكر      http://www.gulfup.com/?hiqBM5
  16. السلام عليكم     لقد تابعت موضوعات ومشاركات الأخت الفاضلة أم عهود (العضوة والمشرفة السابقة zahrah) ولقد أستفدت منها كثيرا في تعلم برنامج الأكسيس   ومن هذه الموضوعات ما قامت بشرحه في موضوعات إضافة الباركود لقواعد بيانات الأكسيس مثل 1- (اضافة الباركود وربطه برقم العميل) - المشلكة اننى لم أفهم الشرح بهذا الموضوع لأن صور التوضيح تم حذفها .. وإنني أطلب من الأخت الفاضلة أم عهود بإعادة رفع الصور التوضيحية لهذا الموضوع مرة أخرى حتى تعم الفائدة   2- (كل شيئ عن الباركود في الاكسيس) 3- (طباعة باركود من تقرير اكسس على طابعة الباركود زبرا) 4- (طباعة تقارير) 5- (جهاز الباركود لا يقرأ الملصق أين المشكلة؟؟) 6- (طباعة ملصقات صنف بعدد الكميه)     وموضوع العضو الجديد (aligaballa) بعنوان (كيف تصنع باركود بطريقة سهلة وبسيطه)     لقد حاولت عدة مرات أن أضيف الباركود الى قائمة الأصناف في قاعدة بيانات المخزن (حتى يتم دخول وخروج الأصناف آليا في فواتير الشراء والبيع) لكن كل مرة يحدث أخطاء كثيرة بالبرنامج .     1- أطلب من الأخت الفاضلة أم عهود أن تعطيني طريقة سهلة وسريعة لإضافة الباركود الى شاشة تكويد الأصناف بالبرنامج ومن ثم أستطيع ان أضيف الأصناف أتوماتيكيا (برمجيا) إلى فواتير الشراء والبيع (حتى لا يُضطر المستخدم الى كتابة كود كل صنف لكي يتم ادراج بياناته اتوماتيكيا في فاتورة الشراء أو البيع)    2- طريقة سهلة وسريعة لطباعة الباركود عن طريق طابعة عادية جحم الورق A4 أو أفضل طابعة للباركود   وشكرا جزيلا Store.zip
  17.     الحمد لله انتهيت من برمجة شفرلي QR Code generator shfrly.com ويقوم بإنتاج تشفير ال QR code ليسهل استخدامه للمواطن العربي ويمكنك عمل qr code للتالي :- 1- نص  2- رابط 3- رقم جوال (موبايل) 4- رسالة نصية sms  5- مفضلة وان شاء الله انتظرو المزيد قريبا بإذن الله لمزيد من التفاصيل يسعدني زيارة  مدونتي   http://abadahenno.com/2013/04/12/%D8%B4%D9%81%D8%B1%D9%84%D9%91%D9%8A-qr-code-generator/    
  18. برنامج ساعة الحائط - لسطح مكتب الويندوز بالسورس كود !   السورس كود Option Explicit'==================================================='Analog Clock'--------------------------------------------------'Creates a round(circle) shaped form'and draws H, M, S indicators'I made it easy to understand for VB6.0 beginers'--------------------------------------------------'Author: Evry1falls'Date: 2013'Visit : http://vb6access2003.blogspot.com'All lines of code are explained in the Blog, Visit :'http://vb6access2003.blogspot.com/2013/02/VB6-Analog-Clock.html'--------------------------------------------------'Reference:'Larry Serflaten, Dipak Auddy'Everything'Google : evry1falls'==================================================='API to create windowless formPrivate Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, _ByVal hRgn As Long, _ByVal bRedraw As Boolean) As LongPrivate Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _ByVal Y1 As Long, _ByVal X2 As Long, _ByVal Y2 As Long) As LongPrivate Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long 'API to move windowless formPrivate Const HTCAPTION As Long = 2Private Const WM_NCLBUTTONDOWN As Long = &HA1Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _ByVal wMsg As Long, _ByVal wParam As Long, _lParam As Any) As LongPrivate Declare Function ReleaseCapture Lib "user32" () As Long 'The length of H,M,S indicators...Private Const hWidth As Long = 1100Private Const mWidth As Long = 1400Private Const sWidth As Long = 1500 'Globals to store canvas(Picture Object)'s'center co-ord.Private X As SinglePrivate Y As SinglePrivate PI2 As DoublePrivate Sub Form_Load()Dim RGN As Long' PI / 2PI2 = Atn(1) * 2With Me.BackColor = vbWhite.Width = Me.Width.Height = Me.Height'Let's save the points...X = .Width / 2Y = .Height / 2End With 'meLabel1.Caption = "Evry1falls" & vbCrLf & "@evry1falls.freevar.com"'Make a round windowless! form...RGN = CreateEllipticRgn(0, 0, 310, 310)Call SetWindowRgn(Me.hwnd, RGN, True)Call DeleteObject(RGN)End SubPrivate Sub Form_MouseDown(Button As Integer, _Shift As Integer, _X As Single, _Y As Single)'Moving the form using mouse button from any location on the form held with mouseIf Button = 1 ThenReleaseCaptureSendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)'Stop the timerTimer1.Enabled = FalseEnd SubPrivate Sub Label1_MouseDown(Button As Integer, _Shift As Integer, _X As Single, _Y As Single)'Move form when drag the labelForm_MouseDown Button, Shift, X, YEnd SubPrivate Sub lblClose_Click()'Exit App.Unload MeEnd SubPrivate Sub Timer1_Timer()Dim Angle, PX, PY, OX, OY, WX, WYMe.Cls'Get Hr Angle...Angle = (180 - (Hour(Now) * 6) * 5 - (Minute(Now) * 6) / 12) * 3.1415 / 180'Hr. pointPX = X + (hWidth * Sin(Angle))PY = Y + (hWidth * Cos(Angle))'Opposite sideOX = X - (Sin(Angle) * 100)OY = Y - (Cos(Angle) * 100)'Hand widthWX = Sin(Angle + PI2) * 90WY = Cos(Angle + PI2) * 90'Draw Hr. hand...Me.Line (OX, OY)-(PX, PY), vbYellow ' From opposite side to pointerMe.Line -(OX + WX, OY + WY), vbBlue ' To one opposite sideMe.Line -(OX - WX, OY - WY), vbBlue ' To other opposite sideMe.Line -(PX, PY), vbBlue ' Back to pointerMe.Circle (X, Y), 50, vbYellow'Get Min Angle...Angle = (180 - (Minute(Now) * 6)) * 3.1415 / 180'Min pointPX = X + (mWidth * Sin(Angle))PY = Y + (mWidth * Cos(Angle))'Opposite sideOX = X - (Sin(Angle) * 100)OY = Y - (Cos(Angle) * 100)'Hand widthWX = Sin(Angle + PI2) * 90WY = Cos(Angle + PI2) * 90'Draw Min. hand...Me.Line (OX, OY)-(PX, PY), vbYellow ' From opposite side to pointerMe.Line -(OX + WX, OY + WY), vbMagenta ' To one opposite sideMe.Line -(OX - WX, OY - WY), vbMagenta ' To other opposite sideMe.Line -(PX, PY), vbMagenta ' Back to pointerMe.Circle (X, Y), 50, vbYellow'Get Sec Angle...Angle = (180 - (Second(Now) * 6)) * 3.1415 / 180'Draw Sec. hand...Me.Line (X, Y)-(X + (sWidth * Sin(Angle)), Y + (sWidth * Cos(Angle))), vbRedEnd Subالشرح + السورس كود من هنا
  19. يمكنكم تحميل الشيفرة المصدرية Source Code لمكتبات دوت نت فريم وورك Dot Net Framework باصداراتها المختلفة من رابط مايكروسوفت التالي : http://referencesource.microsoft.com/netframework.aspx حجم مكتبة 4.5 حوالي 133 MB للعلم هو مكتوب بلغة السي شارب C# كما يحتوي على ملفات الرموز Symbols من أجل دخول المنقح إلى داخل مناهج وخصائص وأصناف تلك المكتبات لمزيد عن كيفية تفعيل خاصية التنقيح الداخلي http://blogs.msdn.com/b/dotnet/archive/2012/08/15/announcing-the-release-of-net-framework-4-5-rtm-product-and-source-code.aspx لاستكشاف فئة ما يمكن البحث عنها ضمن المجلد باسمها كمثال String.cs أو DateTime.cs بالطبع ستظهر نتيجتين أو ثلاثة لأنها موجودة في مكتبات الـ ndp أو clr أو WPF وستجدون أن الملف يحتوي الشيفرة مكررة (لا أدري ما السبب) تجدون في المرفقات مثال عن شيفرة نوع المعطيات DateTime DateTime.rar
  20. السلام عليكم ورحمة الله اليكم هذا الموضوع الرائع عن كيفية حقن كود فى داخل عمليه اخرى باستخدام ثلاث طرق مختلفة ومتقدمة جدا http://www.codeguru.com/Cpp/W-P/system/pro...icle.php/c5767/ ارجو ان يفيد احد هنا ----------------- مصطفى 36a2 : قمت برفع محتوى الرابط خوفاً من ضياعه Code Injection.rar والله ولي التوفيق