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

طلب مساعدة في قراءة مجلد

مغلق
بدأه Vara في 25 مايو 2004 · 4 رد · 536 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي دايركتري ( مجلد ) فيه 10000 ملف وابي اقرا هالملفات واحد ورا الثاني

بلغة سي ++ ياليت ياشباب الامر والمكتبه اللي تحتوي على هالامر

#2

هناك امر اسمه FindFile وايظا Findnext قم بالبحث عنهم في help

وان شاء الله إذا وجدت اي معلومات مع مثال ساحاول ان اعطيك اياها

#3

السلام عليكم,

لغرضك هذا يجب استعمال الدالتين FindFirstFile وهي كالتالي مأخوذة من MSDN :

HANDLE FindFirstFile(
  LPCTSTR lpFileName,  // pointer to name of file to search for
  LPWIN32_FIND_DATA lpFindFileData 
                       // pointer to returned information
);

البارامتر الأول هو اسم الدالة التي نريد البحث عنها وبالطبع يمكن للإسم أن يأخذ الإشارات * كما اعتدنا عنه في البحث .

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

BOOL FindNextFile(
  HANDLE hFindFile,  // handle to search
  LPWIN32_FIND_DATA lpFindFileData 
                     // pointer to structure for data on found file
);

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

وفي حالتك يمكن للبرنامج أن يكون على الشكل التالي :

file="path\\*.*";
WIN32_FIND_DATA  wfd;
HANDLE hand=FindFirstFile(file,&wfd);
if(hand == INVALID_HANDLE_VALUE)
{
//there is a problem may be no such file
return;
}

while(FindNextFile(hand,&wfd)
{
NameOfFile=wfd.cFileName
// هنا سيكون عندك اسم الملفات التي في مجلدك وافعل بها ما تشاء
}

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

إلى اللقاء.

#4
/* findfirst and findnext example */


#include <stdio.h>
#include <conio.h>
#include <dir.h>

int main(void)
{
   struct ffblk ffblk;
   int done;
   printf("Directory listing of *.*\n");
   done = findfirst("c:\*.*",&ffblk,0);
   while (!done)
   {
      printf("  %s\n", ffblk.ff_name);
      done = findnext(&ffblk);
      getch();
   }

   return 0;
}

وهذا هو طلبك بالضبط

#5

والله ماني داري كيف اشكركم

هذا بالضبط اللي كنت ابيه وابحث عنه

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

وشكرا لكم مره ثانية

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

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

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

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

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

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