منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

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

تمت برمجة القاموس على مطابقة ولو كلمة واحدة من المعنى العربى ليستحضر الانجليزى
ولكن المشكلة كما بالصورة فى كلمة (تَرك) فلابد أن يتم البحث عنها (ترك) بلا تشكيل
وإلا لا يطابقها البرنامج
كل ما أريده أن يهمل البرنامج التشكيل أثناء مطابقة الكلمات العربية

كود ال function الخاص بالترجمة:
كود :
   Function argetword(ByVal content As String) As String()

       Dim targets As List(Of String) = New List(Of String)
       Dim connection As New OleDbConnection
       Try
           connection = New OleDbConnection(connectionString)
           Using cmd As OleDbCommand = New OleDbCommand("SELECT [English] FROM [Words] WHERE [Arabic] Like '%' + @arabic + '%'", connection)
               cmd.Parameters.AddWithValue("@arabic", content)
               connection.Open()
               Using reader As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader()
                   Do Until Not reader.Read()
                       targets.Add(reader("English").ToString())
                   Loop
               End Using
               connection.Close()
           End Using
       Catch ex As Exception
           Console.WriteLine(ex.Message)
       Finally
           If connection IsNot Nothing Then
               If connection.State = ConnectionState.Open Then
                   connection.Close()
               End If
               connection.Dispose()
           End If
       End Try
       Return targets.ToArray()
   End Function

كود الزر المتحكم فى الترجمة:
كود :
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

           TextBox1.Lines = argetword(TextBox2.Text)
   End Sub
سلام

مع اني غير مشجع على طريقت برنامجك في الترجمه لكن بمكنك استخدام الامر replace لكل لحذف علامات التشكيل
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox1.Lines = argetword(removeHarakat(TextBox2.Text))

End Sub

Private Function removeHarakat(ByVal txt As String) As String
    For c = &H64B To &H655
        txt = txt.Replace(ChrW(c), "")
    Next
    Return txt
End Function

موفقين
لقد أسأت فهمى يا أخى
لا أريد طريقة لإهمال التشكيل الذى يكتب فى textbox2
فمن الطبيعى أن من يبحث عن كلمة سيكتبها بدون تشكيل
وإنها إهمال التشكيل عند الاستحضار من قاعدة البيانات
فكما أوضحت عندما يتم كتابة (ترك) فى البرنامج
أريده أن يطابقها مع (تَرك) المشكلة دون مراعاة التشكيل
وأرجو إيضاح سبب عدم تشجيعك لطريقة الترجمة
وشكراً لك
سلام

اذا لماذا لا تغير الكلمات التي في قاعدت البيانات وتجعلها بدوت تشكيل
او ان تكتب الكلمه مرتين احداهما بالتشكيل والاخرى بدون
او تظيف عمود اخر للكلمات بدون تشكيل

سبب عدم تشجيعي لطريقت الترجمه:
اعتقد ان البرنامج يستبدل الكلمه في نفس المكان بدون ما راعي قواعد اللغه

وعتذر ان تطفلت بابداء راي دون ان يطلب مني.

موفقين
فكرة ممتازة أخى
إضافة عمود بدون تشكيل يجعلنى لا أحتاج لتغيير الكود

على العكس رأيك يسعدنى فهو يكشف لى نواحى بالبرنامج لم ألاحظها
ولكنى أحب أن أوضح أن البرنامج متعدد المستويات
وهذه ال function تستخدم لترجمة كلمة واحدة فقط
ولا يمكن كتابة الجمل أثناء تنفيذها
أما ترجمة الجمل فلها function أخرى
وشكراً جزيلاً لك