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

لو سمحتوا ممكن احد يحولي هذه الدالة من ++C

مغلق
بدأه H7SE في 26 يوليو 2005 · 6 رد · 548 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
int wildcmp(const char *wild, const char *string) {
  // Written by Jack Handy - jakkhandy@hotmail.com
  const char *cp = NULL, *mp = NULL;

  while ((*string) && (*wild != '*')) {
    if ((*wild != *string) && (*wild != '?')) {
      return 0;
    }
    wild++;
    string++;
  }

  while (*string) {
    if (*wild == '*') {
      if (!*++wild) {
        return 1;
      }
      mp = wild;
      cp = string+1;
    } else if ((*wild == *string) || (*wild == '?')) {
      wild++;
      string++;
    } else {
      wild = mp;
      string = cp++;
    }
  }

  while (*wild == '*') {
    wild++;
  }
  return !*wild;
}
#2

تصدق أنا حاسس اني شايف طلاسم :lol: ,طب حتي قول ما هي وظيفة الداله يمكن نلاقي ليها بديل ,

#3

أخي، لقد نسيت أن تذكر ماذا تفعل هذه الـ Function كما قال لك hazzoom، على الأقل ممكن أن نقوم بكتابة Function أخرى بالـ VB.Net تقوم بنفس الوظيفة، بدلاً من الترجمة...

تم تعديل هذه المشاركة بواسطة محمد عبد العليم في 26 يوليو 2005 في 16:31

رأس الحكمة الإيمان بالله

#4

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

if (wildcmp("bl?h.*", "blah.jpg")) {
  //we have a match!
} else {
  //no match =(
}

وجدت كود اخر علي اانت يستخدم RegEx ولكن توجد مشكلة عندما يتضمن اسم الملف او المجلد فراغ مثلا

"New Folder"

او عندما يتضمن الاسم بعض الرموز مثل

"New Folder (1)"

وهذا هو الكود

  Private Function WildStringToExpression(ByVal Text As String) As String
        Dim NewString As String = Text
        NewString = Replace(NewString, "*", "\w*")
        NewString = Replace(NewString, "?", "\w?")
        NewString = Replace(NewString, ".", "[.]{1}")
        NewString = "^" & NewString & "$"
        Return NewString
    End Function
    
    Private Function PatternMatches(ByVal StringToCheck As String, ByVal Pattern As String) As Boolean
        If Regex.Match(StringToCheck, WildStringToExpression(Pattern), C).Success Then Return True
        Return False
    End Function


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Text = CStr(PatternMatches("TextDocument.txt", "*.txt"))	' هنا لا توجد مشكلة
             Me.Text = CStr(PatternMatches("Text Document.txt", "*.txt"))	'  
             هنا  توجد مشكلة بسبب الفراغ الموجود في الاسم
    End Sub

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

ارجو من الاخوة الذين لديهم خبرة في RegEx المساعدة

#5

جرب هذا الكود

Me.Text = TRIM(CStr(PatternMatches("Text Document.txt", "*.txt")))

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

شكرا اخ طارق

قصدت انه يوجد فراغ داخل النص نفسه وليس في بداية String او نهايتها

يعني "Text" تفصلها مسافة عن "Document" وهذا الذي يعمل المشكلة

وهذا الفراغ لا يمكن التخلص منه بدالة الTrim

لاحظ معي ايضا ان من كتب الدالة التي تستخدم RegEx يقوم باستبدال علامة النجمة مثلا بالتعبير

"\w*"

وعلي ذلك اظن ان حل المشكلة هو بنفس الطريقة اي استبدال الفراغ بتعبير معين

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

#7

اذا كان احد مهتم .. وجدت الحل ولكن للاسف بطريقة التجربة والخطأ ( :blink: :wacko: :lol: )

فقط اعمل كمنت لهذه الجملة

NewString = "^" & NewString & "$"

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…