منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور (/showthread.php?tid=2482)



هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - سعود - 06-04-14

هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور

اريد كود واحد يقوم بمعرفة عدد الصور بكافة تنسيقاتها ...
لاني استخدم طريقة يدوية وهي:
كود :
Dim gifcounter As Object
    Dim jpgcounter As Object
    Dim pngcounter As Object
    Dim jpegcounter As Object
    Dim allcount As Integer

        gifcounter = Directory.GetFiles(fbd.SelectedPath, "*.gif".ToLower).Count
        jpgcounter = Directory.GetFiles(fbd.SelectedPath, "*.jpg".ToLower).Count
        pngcounter = Directory.GetFiles(fbd.SelectedPath, "*.png".ToLower).Count
        jpegcounter = Directory.GetFiles(fbd.SelectedPath, "*.jpeg".ToLower).Count
        allcount = gifcounter + jpgcounter + pngcounter + jpegcounter

فهل توجد طريقة لمعرفة عدد الملفات التي تعتبر صورة بغض النظر عن الامتداد؟؟
وفقكم الله.


RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - Aly El-Haddad - 06-04-14

كود :
Dim count As Integer = 0
        Dim extensions As String() = {".jpg", ".jpeg", ".png", ".gif"}
        Dim paths As String() = IO.Directory.GetFiles(fbd.SelectedPath)
        Array.ForEach(Of String)(paths, Sub(path As String) Array.ForEach(Of String)(extensions, Sub(ext As String) If path.ToLower().EndsWith(ext) Then count += 1))
        MsgBox(count)



RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - ali.alfoly - 06-04-14

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

كود :
Dim lst_Ex() As String = {".gpg", ".png", ".gif"}
        Dim lst() As String = IO.Directory.GetFiles("", "*.*", 0)
        Dim allcount As Integer
        For Each fil As String In lst
            If (Array.IndexOf(lst_Ex, (New IO.FileInfo(fil).Exists))) >= 0 Then allcount += 1
        Next

لم اجرب فقط كتبت الفكرة


RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - سعود - 06-04-14

بارك الله فيك
الكود هذا مايجي بالتخمينSmileSmile
تسلم ايدك


RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - ali.alfoly - 06-04-14

اسف اخي Aly El-Haddad ما رائيت ردك


RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - ali.alfoly - 06-04-14

هههههه
مش هعديها الكود ده لازم يتشرح
كود :
Array.ForEach(Of String)(paths, Sub(path As String) Array.ForEach(Of String)(extensions, Sub(ext As String) If path.ToLower().EndsWith(ext) Then count += 1))



RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - kslawy - 06-04-14

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

وزيادة الخير خيرين بالـ Linq :

كود :
Dim imagesFolder As String = My.Computer.FileSystem.SpecialDirectories.MyPictures
        Dim ImagesExtension As String() = New String() {".gif", ".jpg", ".png", ".jpeg"}

        Dim ImgsCount = (From m In New IO.DirectoryInfo(imagesFolder).GetFiles _
                         Where ImagesExtension.Contains(m.Extension) Select m).Count

        MessageBox.Show(ImgsCount)

****
***
**
*


RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - Aly El-Haddad - 06-04-14

ههههههههههه، أنت تأمر Big Grin

Array.ForEach تقوم بتنفيذ أمر معين على جميع عناصر مصفوفة ما
Array.ForEach(Of String) لأن المصفوفة من نوع String
يأخذ الـParameter الأول المصفوفة المراد تنفيذ الأمر عليها
يأخذ الـParameter الثاني الأمر الذي سيتم تنفيذه من نوع Action بصيغة Lambda expression أو بالصيغة الموضحة على هذا الرابط

تكتب الأومر بالصيغة Lambda expression بالطريقة الموضحة في المشاركة أعلاة حيث str هي قيمة عنصر المصفوفة الذي يتم تطبيق الأمر عليه و من ثم يُكتب الأمر (في سطر واحد)

مثال توضيحي مثلاً عندنا مصفوفة نصية:
كود :
Dim strArr As String() = {"Item0", "Item1", "Item2"}
استخدام هذا الكود:
كود :
Array.ForEach(Of String)(strArr, Sub(str As String) MsgBox(str.ToUpper()))
هو لا يختلف عن هذا:
كود :
For Each str As String In strArr
            MsgBox(str.ToUpper())
        Next
إلى أن الأول في سطر واحد Smile


RE: هل يوجد كود معرفة عدد ملفات التي بـ تنسيقات الصور - Aly El-Haddad - 06-04-14

و بأعتذر عن التأخير في الرد بسبب إنقطاع الكهرباء Blush