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

لماذا لا ندرس كود SharpDevelop

مغلق
بدأه فواز الشمري في 1 أكتوبر 2005 · 18 رد · 1,700 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

طالما ان البرنامج مفتوح المصدر لماذا لاندرس الكودات الخاصة به

يعني نضع مواضيع ثم نقوم بالبحث عن الحلول لها باكود البرنامج حتى نفعل فكرة

محرر لغة php الذي كان قد تم وضعة مسبقاً

مثلا لنبدا بمعرفة يف تم معلجة التعليقات ثم البحث عن الأقواس ثم التلوين وهكذا . ما رئيكم :rolleyes:

#2

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

أنا أأويد إقتراحك ونحن ننتظر أن تبدأ أنت أولا لفتح شهية بقية الأعضاء للموضوع

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#4

جيد جداً

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

#5

حتى لاأفتح الشهية خاصة مع دخول شهر رمضان لذا سوف أبدا بالتالي :

لاحضت في محرر البرنامج بعد دراسة عمية جدا لكيفية معرفة الأقواس مثلا :

لو كانت لدي الجملة التالي

If(b>20){
    M= nameFunction(M (10),20,(2*1))
}

كيف للبرنامج أن يتعرف على القوس الخاص بنهاية nameFunction

لاحضت تركيب الخوارمية على النحو التالي :

هناك نوعين من البحث الأول في حال كان قوس مفتوح ليكون البحث إلى امامي

أما إن كان القوس مغلق فيتم البحث خلفي

البحث الأمامي تتمثل الفكرة فية بالتالي

معرفة الحرف ماقبل العلامة مثلا وليكن الحرف) وهوا القوس

نقوم بعمل دالة تستخدم للبحث الأمامي من بعد القوس ونعرف متغير نعطية قيمة 1 والتي تشير إلى أننا وجدنا قوس مفتوح .

نبدا من الموقع مابعد القوس إلى الأمام بالبحث فإذا وجدنا قوس مفتوح نقوم بزيادة متغير مرة واحدة وليكن اسم التغير مثلا Brackets فيكون في هذه الحالة يتحتوي على قيمة 2 يعني قوسين مفتوحين , ثم يواصل البحث أما إذا وجد قوس مغلق فيوم بتنقيص واحد من المتغير Brackets وهكذا

في حال كان قيمة المتغير بصفر تعيد الدالة موقع الدوران مثلا وليكن OffSet وهوا يمثل في هذه الحالة موقع نهاية القوس (عد من بداية موقع العلامة حتى نهاية القوس الصحيح الذي يغلق الي أنت محدد عليى البحث)

هذه هي الخوارزمية للبحث الأمامي أما البحث الخلفي فهوا نفس العمل .

أتمنا من الأخوه أن يضعوا ماتم فهمة من محرر البرنامج أولا حتى نفهم كيف تم معالجة المشاكل ثم بعد ذلك نقوم بعمل محرر كامل بجهدنا الخاص ولنتعاون مع بعضنا البعض ;)

#6

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

شكرا يا أخ فواز على البداية

وأرجوا وضع وصلة مباشرة للكتاب والسورس بدون المرور على أي موقع

وجزاك الله خيرا

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#7

ياريت نتفاعل اكثير ونحن نريد فقط الأفكار وسوف احاول وضع الكودات باللغتين vb و c#

هذا رابط البرنامج مع الملف التعليمي له :

http://www.icsharpcode.net/OpenSource/SD/Download

الملف التعليمي

من خلال هذا الموقع

http://www.apress.com/free/

في نهاية الصفحة كتاب بإسم :

Dissecting a C# Application: Inside SharpDevelop

يالله ياعباقرة السي وروني شغلكم . :lol:

#8

السلام عليكم يا اخوان

اذا بدنا نعمل SyntaxHighLighter Control من الصفر بدون الحاجة ل RichText Box الفكرة بسيطة كثير لكن الكود محتاح لجهد و معرفة جميع المهتمين ..

اولا نقوم بعمل يوزر كنترول جديد ثم في حدث keydown نقوم برسم الكي علي اليوزركنترول وفي نفس الوقت نقوم باضافة الكي الي array نقوم بتعريفها مسبقا اذا مهتمين وجادين "بجد" انا مستعد ادخل معاكم في مشروع لعمل هذا الكونترول .. شو رايك يا فواز وشو راي الشباب .

#9

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

أخي H7SE والله أنا معاك وبشجعك على عمل المشروع بس ممكن تبدأ فيه لوحدك وحاول أول بأول معانا

علشان لو فيه أي مساعدة ممكن نساعدك فيها لأن خلاص القسم ده شكله كده مات خلاص

مفيش مشاركات ولا أي حاجة ولا تفاعل وأنا أعذر الناس علشان مشكلة الوقت وعدم التفرغ

بس متيأسش أبدأ وهتلاقي الناس معاك إن شاء الله

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#10

السلام عليكم

هذا مثال بسيط ..

المثال معمول بالفيجيوال بيسك 2005

ببساطة يمكن لكم عمل تحرير للملف HH.vb وتحويله للسي شارب ..

يا احمد لو كان بدي ابدأ في المشروع لوحدي لما كنت طرحت الموضوع اساسا في المنتدي

لكن كنت بدي اجرب فكرة العمل الجماعي ونستفيد من خبرات بعض ..

Caret.rar

تم تعديل هذه المشاركة بواسطة H7SE في 11 أكتوبر 2005 في 01:34

#11

شكرا لك اخي Ahmed H. Alawady على تفاعلك لكن لي ملاحضة :

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

على العموم نحن نشارك ولو بالأفكار والبحث على النت وليس الضرورة المشاركة بالكودات .

اخي :

H7SE الفكرة جيدة جدا لكن سوف ندوخ في تفاصيلة لأن الكود كبير جدا ونحن إن شاء الله سنوقوم بدراسته .

انا الي مستغرب من هذا البرنامج الي وضعت رابطه أنا كيف قام بعمالجة التلوين وكيف هي السرعة الفائقة في ذلك يعني تخيل 3000 الف سطر بيعالجهم في لمح البصر , والمشكلة التي ما قدرت احلها إطلاقا هي مشكلة التعليق المتعدد مثل /* */ كيف يوق بمعالجة يعين يغير مابداخلة إلى لون التعليق ثم ن شطب إحدى العلامات ولتكن البداية يعيد تلوين الكلمات المحجوزة بها .

أتمنا من الأخوة الكرام ان نحاول وذع الأفكار والمناقشة حولها .

#12

شكرا اخي فواز .. أحمد

.....................................

شباب المهم ان نفهم الفكرة يعني مش ضروري كثير نفهم الكود الموجود في dev#

لاني بصراحة انا حاولت عن نفسي مفهمتش كثير

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

في البداية يجب ان نقوم بعمل كنترول شبيه بالTextBox ولكن من الصفر .. وبعدين تيجي مرحلة التلوين للكلمات المفتاحية ..

المثال الذي ارفقتة يوضح مدي سهولة الامر .. ولكن بدنا جهد جماعي

اذا مهتمين بالموضوع خلينا نجمع بعض علي البال توك ونحكي في الموضوع ..

#13

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

فواز الشمري كتب:
شكرا لك اخي Ahmed H. Alawady على تفاعلك لكن لي ملاحضة :

لماذا أنت على معنى إذهب أنت وربك فقاتلا أنا هاهونا قاعدون .

:D :D :D

لا والله يا أخي ليس هذا مبدأي ولا أسلوبي ولكن يعلم الله أني أقوم بتفريغ الوقت لمدة نصف ساعة كل يوم للمنتدى بالكاد

والله شهيد على ما أقول وأعلم أخي أنني إذا سنحت لي الفرصة للمشاركة في المنتدى لا أتردد

ولو بحثت عن مواضيعي الفعالة سوف تجدها خلال يوم كامل وفي وقت واحد

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

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#14

يكفيي تفاعلك اخي Ahmed H. Alawady أنا أيضا بالكاد اجد وقت لكني من هواه هذه المواضيع وانا حاليا لدي مشروع مشابة لهذا العمل .

اخي H7SE ياريت توضح الفكرة أكثر . يعني كيف بيتم وضع النصوص في النافذه افصد الحروف .

#15
Imports System.Drawing
Imports System.Runtime.InteropServices

Public Class HH
    Inherits System.Windows.Forms.UserControl
    
    Dim Sb As New System.Text.StringBuilder
   ' Event CaretPosChanged(ByVal sender As Object, ByVal e As yPoint)
    Dim _charSize As SizeF


    <DllImport("User32.dll")> _
  Friend Shared Function CreateCaret(ByVal hWnd As IntPtr, ByVal hBitmap As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Boolean
    End Function

    <DllImport("User32.dll")> _
    Friend Shared Function SetCaretPos(ByVal x As Integer, ByVal y As Integer) As Boolean
    End Function

    <DllImport("User32.dll")> _
Friend Shared Function GetCaretPos(ByRef point As yPoint) As Boolean
    End Function

    <DllImport("User32.dll")> _
  Friend Shared Function DestroyCaret() As Boolean
    End Function

    <DllImport("User32.dll")> _
  Friend Shared Function ShowCaret(ByVal hWnd As IntPtr) As Boolean
    End Function

    <DllImport("User32.dll")> _
   Friend Shared Function HideCaret(ByVal hWnd As IntPtr) As Boolean
    End Function

    <StructLayout(LayoutKind.Sequential)> _
     Structure yPoint
        Public X As Integer
        Public Y As Integer

        Public Sub New(ByVal _x As Integer, ByVal _y As Integer)
            Me.X = _x
            Me.Y = _y
        End Sub
        Overrides Function ToString() As String
            Return "x: " & X & "  " & "y: " & Y
        End Function
    End Structure

 <StructLayout(LayoutKind.Sequential)> _
    Friend Structure RECT
        ' Fields
        Public Bottom As Integer
        Public Left As Integer
        Public Right As Integer
        Public Top As Integer

        ' Methods
        Public Sub New(ByVal rect As Rectangle)
        End Sub
        Public Sub New(ByVal left As Integer, ByVal top As Integer, ByVal right As Integer, ByVal bottom As Integer)
        End Sub
        Overrides Function ToString() As String
            Return "Left: " & Left & "  " & "Top: " & Top & "  " & "Bottom: " & Bottom & "  " & "Right: " & Right
        End Function
    End Structure

    Private Sub HH_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
        CreateCaret(Me.Handle, 0, 1, Me.Font.Height)
        ShowCaret(Me.Handle)
        SetCaretPos(0, 0)
    End Sub

    Private Sub HH_HandleDestroyed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleDestroyed
        DestroyCaret()
    End Sub


    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

        Dim MyStr As String = CStr(Chr(AscW(e.KeyChar)))

        If e.KeyChar = Chr(Keys.Enter) Then
            Dim yp1 As New yPoint
            GetCaretPos(yp1)
            SetCaretPos(0, yp1.Y + Me.Font.Height) ': RaiseEvent CaretPosChanged(sender, New yPoint(0, yp1.Y + Me.Font.Height))
            Sb.Append(e.KeyChar)
            Return
        ElseIf e.KeyChar = Chr(Keys.Tab) Then      '    GOTO Cont
        ElseIf e.KeyChar = Chr(Keys.Space) Then   '    GOTO Cont
        ElseIf e.KeyChar = Chr(Keys.Insert) Then
            Console.Beep()
        ElseIf e.KeyChar = Chr(Keys.Back) Then
            DeleteLastChar()
            Return
        ElseIf e.KeyChar < Chr(Keys.Space) Then
            Sb.Append(e.KeyChar)
            Return
        End If
Cont:

        Sb.Append(e.KeyChar)

        Dim gf As Graphics = Me.CreateGraphics
        Dim yp As New yPoint
        GetCaretPos(yp)
        gf.DrawString(MyStr, Me.Font, Brushes.Blue, yp.X, yp.Y)
        SetCaretPos(yp.X + gf.MeasureString("1", Me.Font).ToSize.Width - 2, yp.Y) : RaiseEvent CaretPosChanged(sender, New yPoint(yp.X + gf.MeasureString("1", Me.Font).ToSize.Width - 2, yp.Y))
        '       SetCaretPos(yp.X + CInt(gf.MeasureString(e.KeyChar.ToString, Me.Font, Me.Font.Size).Width), yp.Y)
        gf.Dispose()

        '     Rtf.Text = Sb.ToString
    End Sub


   ' Sub Me_CaretPosChanged(ByVal sender As Object, ByVal point As yPoint) Handles Me.CaretPosChanged
  '      Me.Text = point.ToString
    'End Sub


End Class

هذا هو الكود في المثال السبق ..

بدي احكي شغلة يا فواز ويا احمد ..

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

خلونا نلتقي علي المسنجر او البالتوك ونستعرض افكارنا ..

اما انكمل أو لا ....

بدي تردوا علي هذه الفكرة بالذات .. شكرا

#16

أخي H7SE يبدو ان قسم C# مخيب للأمال لذلك أنا أدعوك وأدعو الأخوه للعودة إلى الموضوع الخاص بك على المشاركة التالية في قسم فيجول بيسك فهناك التفاعل أكثر .

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

بالنسبة للفكرة اللقاء هذا إيميلي Fawaz_mahdi@hotmail.com

ارجو الرد بخصوص نقل الموضع لمنتدانا فيجول بيسك كما كان فنحن هنا ضيوف :rolleyes:

#17

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

هل من الممكن أن نعمل مثل CodeProject و CSharp-Corner

هذان الموقعان يقومان بوضع المواضيع فقط ولا يحتاجون للردود ولا التفاعلات

فما بالنا إيها المسلمون ألا يمكن عمل الخير والنفع بدون رد وكفى عداد رؤية الأعضاء "المشاهدات" للموضوع

"فلا تهنوا ولاتحزنوا" نحن نتابع الموضوع ، فللأسف نحن غير متفرغون للرد نسألكم الدعاء على العون في مصاعب الحياة

أدعوكم مرة ثانية لعدم التهاون نحن معكم بإذن الله

وأخي الكريم "H7SE" أرجوا ترجمة الأكواد إلى لغة C# لعدم وضوح الرؤية لنا في VB.Net

ولو كان لدينا خبرة بها لكنا من أعضاء قسم VB.Net

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

#18

أخي العزيز احمد اولاً

نحن كلنا نبحث وليس لدينا اي معلومات ممكن ان بدا بالعمل على طول لكن الغرض ان نقوم كلنا بالتعاون مع بعض في إيجاد المشاكل ونزود الموضوع بمراجع حتى نستطيع ان نواصل الفكره

بالنسبة vb.net في البرنامج المفرق الذي اقترحت انا بدارسته فيه امكانية تحويل الكود من vb.net إلى c# والعكس يمكنك تجريبة فهوا فعلا رائع .

اخي H7SE وين رحت .

#19

مرحبا يا فواز ويا احمد

انا معاكم .. :rolleyes: :rolleyes: وين بدي اروح :rolleyes:

هذا برنامج صغير ورائع لتحويل كور ا لسي شارب للبيسك والعكس

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

ConvertNet.rar

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

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