Showing posts with label csharp-basic. Show all posts
Showing posts with label csharp-basic. Show all posts

Thursday, December 19, 2013

أساسيات البرمجة سي شارب التعامل مع الملفات C# - File I/O

 التعامل مع الملفات C# - File I/O

الملف file :-

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

التدفق Stream:-

هو تدفق البيانات من خلال أدوات الاتصال أي عملية مرور -نقل البيانات خلال الكوابل ويوجد نوعان من التدفق أو الاستريم تدافق داخل ويسمى Input stream وتدفق خارج يسمى Output Stream.

فئة الادخال والاخراج C# I/O Classes

توجد  العديد من الفئة الادخال والاخرات التي تتعامل مع الملفات مثل انشاء ملف جديد , قراءة , كتابة ,فتح ..... الى اخره في الجدول التالي يوضح أهم الفئات التي تتعامل مع الملفات في لغة سي شارب.

فئة الادخال والاخراجالوصف
BinaryReaderقراءة البيانات البسيطة من تدفق الثنائي
BinaryWriterكتابة البيانات البسيطة الى الصيغة الثنائية
BufferedStreamتخزين مؤقت للبيانات في صيغة بايت من اجل بدأ عملية التدفق
Directoryيساعد على معالحة هيكل المجلدات او المسارات
DirectoryInfoيساعد على معالجة المعلومات على المجلدات
DriveInfoيزودنا بمعلومات عن السواقة
Fileيساعد في معالجة الملفات
FileInfoيساعد في معالجة معلومات الملف
FileStreamيستخدم للقراءة والكتابة على الملفات من اي مكان
MemoryStreamيستخدم للوصول للذاكراة العشوائية للملفات المخزنة في الذاكراة
Pathيستخدم لمعالجة المسار
StreamReaderيستخدم لقراءة الحروف من تدفق البايت
StreamWriterيستخدم لكتابة الحروف الى تدفق البايت
StringReaderيستخدم للقراءة النصوص من المخزن المؤقت 
StringWriterيستخدم للكتابة الي مخزن النصوص المؤقت


فئة تدفق الملف FileStream:-

تستخدم هذه الفئة للقراءة والكتابة واغلاق الملفات . للتعامل مع الملفات عند القراءة او انشاء ملف جديد فيجب انشاء كائن من هذه الفئة 
الصيغة العامة لانشاء كائن من الفئة كالتالي:-


FileStream <object_name> = new FileStream( <file_name>,

<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

مثال على انشاء كائن لقراءة ملف.

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);


الجدول التالي يوضح بعض المتغيرات البارميترات المررة من خلال انشاء كائن تدفق الملف.


الباراميتر
الوصف
FileMode
FileMode وضع الملف عبارة عن مجاميع مرقمة لدول تستخدم في فتح الملفات
وتتكون اعضاء وضع الملف منالتالي

  1. Append:يستخدم لفتح ملف موجود ووضع مؤشر الماوس للكتابة في اخر سطر في الملف
  2. Create: يستخدم لانشاء ملف جديد
  3. CreateNew: انشاء ملف جديد حسب نظام التشغيل المحدد
  4. Open: فتح ملف مسبق
  5. OpenOrCreate: فتح ملف مسبق في حال لم يكن موجد يقوم بانشاءه وفتحه
  6. Truncate:فتح الملف موجود وعمل اقتصاص بحجمه الى يصبح صفر بايت بمعنى حذف ما بالملف وليس الملف
FileAccess
FileAccessl مجمع تراقيمي يحتوي علىالاعضاء التالية:
ReadوReadWrite وWrite.
FileShare
FileShare مجمع مرقم يحتوي على التالي

  1. Inheritable: يسمح بوارثة الاذونات الى الابناء
  2. None: لايسمح بمشاركة الملف الحالي
  3. Read:يسمح للملف للقراءة فقط
  4. ReadWrite:يسمح للقراءة والكتابة على الملف
  5. Write: يسمح للكتابة على الملف

مثال نظرة عامة على فئة التدفق.

using System;
using System.IO;

namespace FileIOApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream F = new FileStream("test.dat", 
            FileMode.OpenOrCreate, FileAccess.ReadWrite);

            for (int i = 1; i <= 20; i++)
            {
                F.WriteByte((byte)i);
            }

            F.Position = 0;

            for (int i = 0; i <= 20; i++)
            {
                Console.Write(F.ReadByte() + " ");
            }
            F.Close();
            Console.ReadKey();
        }
    }
}
ناتج المثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1



سيتم التحدث عن الملفات بالتفاصيل في برمجة متقدمة لاحقا

لمتابعتي
تويتر: @aalmahallawi
IT Help Desk,
SEO Arabic Expert ,PHP,C#,ASPX
Al alami st
gaza -jabaliaGaza Strip
Palestine
Email :ahmed.almahallawi@gmail.com
DOB: 05/10/1984
No comments

Wednesday, December 18, 2013

أساسيات البرمجة سي شارب معالجة الاستثناءات C# - Exception Handling

 معالجة الاستثناءات C# - Exception Handling

الأسثناء Exception :-

الإستثناء هو خطأ يظهر أثناء تشغيل البرنامج سواء كان خطأ مفتعل أو نتيجة سهو المبرمج عن وضع قيود محدد للتعامل مع البرنامج مثلا حقل نص يستخدم لادخال الارقام وسها المبرمج عن وضع قيد يجبر المستخدم على ادخال ارقام بدل نصوص.او مثل القسم على صفر.
يقسم معالجة الاستثناءات الى اربع اقسام.
  1. try وفي هذا البلوك يتم وضع الكود الذي يجب معالجة استثناء له عند حدوث الاخطاء ويجب ان يتبعه اما واحد من catch او عدة جمل Catch.
  2. catch وهي تشير الى وقوع الخطأ وتم العثور عليه وهنا يتم معالجة الخطأ عند حدوثه.
  3. finally وتستخدم سواء حدثجب   الخطأ او  لم يحدث سوف يتم  تنفيذ الكود الذي تحتويه مثل إغلاق ملف. نفترض اننا قمنا بفتح قاعدة بيانات او ملف وحدث خطأ فهنا يجب إغلاق الملف سواء حدث الخطأ أو لم يحدث.
  4. throw وهي تقوم برمي الاخطأ اي بمعنى تجاهل الخطأ والانتقال الى الكود التالي لتنفيذه وغالبا ما يستخدم من قبل المبرمجين المبتدائين وذوي قلة الخبرة ولكن لا يمنع ذوي الاحتراف استخدامه خاصة لكتابة الاخطأ في ملف log.

الصيغة العامة لمعالجة الإستثناءات.

try
{
   //الكود الذي قد ينتج عنه خطأ
}
catch( ExceptionName e1 )
{ 
   // الاسثناء الاول
}
catch( ExceptionName e2 )
{
   // الاسثناء الثاني
}
catch( ExceptionName eN )
{
   // الاسثناء الثالث
}
finally
{
   // الجملة التالية ستنفذ سواء حدث خطأ أو لم يحدث
}

فئة معالجة الاستثناءات

1- System.ApplicationException

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

2- System.SystemException

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

اسم فئة الاستثناءالوصف
System.IO.IOExceptionمعالجة اسثناءات الادخال والاخراج مثل اخطاء فتح ملف او الكتابة في ملف
System.IndexOutOfRangeExceptionاسثناء معالجة الفهرس الذي خارج المدى في المصفوفات.
System.ArrayTypeMismatchExceptionاستثناء معالجة عند حدوث خطأ في نوع  المصفوفة مثل دمج مصفوفتين ليست من نفس نوع البيانات
System.NullReferenceExceptionاستثناء عندما لا يوجد مرجع للكائن او انها يشير لقيمة فارغة
System.DivideByZeroExceptionاستثناء القسمة على صفر
System.InvalidCastExceptionاستثناء عند التحويل من نوع بيانات الى اخر .
System.OutOfMemoryExceptionاستثناء عندما لا توجد مكان في الذاكرة.
System.StackOverflowExceptionاسثناء يحدث عندما يصبح مدى المكدس لا يتسع قيم.

مثال على معالجة الاستثناءات:-

في المثال التالي نعالج خطأ القسمة على صفر.
using System;
namespace ErrorHandlingApplication
{
    class DivNumbers
    {
        int result;
        DivNumbers()
        {
            result = 0;
        }
        public void division(int num1, int num2)
        {
            try
            {
                result = num1 / num2;
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine("Exception caught: {0}", e);
            }
            finally
            {
                Console.WriteLine("Result: {0}", result);
            }

        }
        static void Main(string[] args)
        {
            DivNumbers d = new DivNumbers();
            d.division(25, 0);
            Console.ReadKey();
        }
    }
}


ناتج الكود:-

Exception caught: System.DivideByZeroException: Attempted to divide by zero. 
at ...
Result: 0


تعريف استثناء من قبل المستخدم.

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


using System;
namespace UserDefinedException
{
   class TestTemperature
   {
      static void Main(string[] args)
      {
         Temperature temp = new Temperature();
         try
         {
            temp.showTemp();
         }
         catch(TempIsZeroException e)
         {
            Console.WriteLine("TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey();
      }
   }
}
public class TempIsZeroException: ApplicationException
{
   public TempIsZeroException(string message): base(message)
   {
   }
}
public class Temperature
{
   int temperature = 0;
   public void showTemp()
   {
      if(temperature == 0)
      {
         throw (new TempIsZeroException("Zero Temperature found"));
      }
      else
      {
         Console.WriteLine("Temperature: {0}", temperature);
      }
   }
}

تحميل الكود السابق:- ملاحظة الانتظار 5 ثواني وسيتم تحويلك لصفحة التحميل وشكرا

ناتج الكود:-
TempIsZeroException: Zero Temperature found

كائن throw الصيغة العامة لالقاء اسثتناء.

Catch(Exception e)
{
   ...
   Throw e
}


Ahmed Ata Almahallawi
Freelancer
IT
IT Help Desk,
SEO experience,PHP,C#,ASPX
Al alami st
gaza -jabaliaGaza Strip
Palestine
ahmed.almahallawi@gmail.com
DOB: 05/10/1984
by +Ahmed Almahallawi 
18/12/2013
No comments

Monday, December 16, 2013

أساسيات البرمجة سي شارب علامات الهروب C# - Character Escapes

أساسيات البرمجة علامات الهروب C# - Character Escapes


علامات الهروب

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

سلسلة الإلغاء
اسم الحرف
ترميز Unicode
\'
علامة اقتباس مفردة
0x0027
\"
علامات اقتباس مزدوجة
0x0022
\\
Backslash
0x005C
\0
Null
0x0000
A
تنبيه
0x0007
\b
Backspace
0x0008
\f
تغذية النموذج
0x000C
n\
New line
0x000A
:-R
حرف إرجاع
0x000D
t\
أفقي علامة تبويب
0x0009
\u
Unicode سلسلة الإلغاء لزوج بديل.
\Unnnnnnnn
\u
Unicode سلسلة الإلغاء
\u0041 = "A"
\v
تبويب عمودية
0x000B
\x
تتابع هروب Unicode مشابهة إلى "\u" فيما عدا ذات طول متغير.
\x0041 = "A"





Ahmed Ata Almahallawi
Freelancer
IT
IT Help Desk,
SEO experience,PHP,C#,ASPX
Al alami st
gaza -jabaliaGaza Strip
Palestine
ahmed.almahallawi@gmail.com
DOB: 05/10/1984
by +Ahmed Almahallawi 
17/12/2013


No comments

Saturday, December 14, 2013

أساسيات البرمجة سي شارب التعبيرات المنتظمة C# - Regular Expressions

أساسيات البرمجة التعبيرات المنتظمة C# - Regular Expressions

التعابير المنتظمة  Regular Expressions:

هي عبارة عن أنماط لنصوص الأدخال في حال تم معالجتها فأنها إما أن تطبع كما هي أو إنها تعطي تعبير ذا معنى.

أنواع التعابير المنتظمة في سي شارب:-

  1. Character escapes
  2. Character classes
  3. Anchors
  4. Grouping constructs
  5. Quantifiers
  6. Backreference constructs
  7. Alternation constructs
  8. Substitutions
  9. Miscellaneous constructs

فئة  التعبير المنتظم The Regex Class

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

التسلسلالدالة والوصف
1public bool IsMatch( string input ) 
تحدد هل النص مطابق للتعبير في مشيد الفئة ام لا
2public bool IsMatch( string input, int startat ) 
تشبه السابق الانها تحدد من اين يبدا مقارنة التعبير 
3public static bool IsMatch( string input, string pattern ) 
تحدد هل النص مطابق للنموذج الممرر من خلال الدالة
4public MatchCollection Matches( string input ) 
تبحث عن نص معين في كافة التعابير الموجودة
5public string Replace( string input, string replacement ) 
يتم استبدال نص وفقا للصيغة معينة بنص اخر
6public string[] Split( string input ) 
مصفوفة تقوم بقسم النص الى عناصر المصفوفة وفقا للصيغة التعبير


في المثال التالي سنبحث عن الكلمات التي تبدأ بالحرف "S"


using System;
using System.Text.RegularExpressions;

namespace RegExApplication
{
   class Program
   {
      private static void showMatch(string text, string expr)
      {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         foreach (Match m in mc)
         {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args)
      {
         string str = "A Thousand Splendid Suns";

         Console.WriteLine("Matching words that start with 'S': ");
         showMatch(str, @"\bS\S*");
         Console.ReadKey();
      }
   }
}

ناتج الكود


Matching words that start with 'S':
The Expression: \bS\S*
Splendid
Suns


في المثال التالي نبحث عن الكلمات التي تبدأ بحرف "M" وتنتهي بحرف "E".

using System;
using System.Text.RegularExpressions;

namespace RegExApplication
{
   class Program
   {
      private static void showMatch(string text, string expr)
      {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         foreach (Match m in mc)
         {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args)
      {
         string str = "make maze and manage to measure it";

         Console.WriteLine("Matching words start with 'm' and ends with 'e':");
         showMatch(str, @"\bm\S*e\b");
         Console.ReadKey();
      }
   }
}

ناتج الكود
Matching words start with 'm' and ends with 'e':
The Expression: \bm\S*e\b
make
maze
manage
measure

في المثال  التالي نبحث عن الفراغ ونقوم بحذفه.


using System;
using System.Text.RegularExpressions;

namespace RegExApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         string input = "Hello   World   ";
         string pattern = "\\s+";
         string replacement = " ";
         Regex rgx = new Regex(pattern);
         string result = rgx.Replace(input, replacement);

         Console.WriteLine("Original String: {0}", input);
         Console.WriteLine("Replacement String: {0}", result);    
         Console.ReadKey();
      }
   }
}
ناتج الكود 
Original String: Hello   World   
Replacement String: Hello World   



Ahmed Ata Almahallawi
Freelancer
IT
IT Help Desk,
SEO experience,PHP,C#,ASPX
Al alami st
gaza -jabaliaGaza Strip
Palestine
ahmed.almahallawi@gmail.com
DOB: 05/10/1984
by +Ahmed Almahallawi 
17/12/2013

No comments