السلام عليكم
عندي دايركتري ( مجلد ) فيه 10000 ملف وابي اقرا هالملفات واحد ورا الثاني
بلغة سي ++ ياليت ياشباب الامر والمكتبه اللي تحتوي على هالامر
السلام عليكم
عندي دايركتري ( مجلد ) فيه 10000 ملف وابي اقرا هالملفات واحد ورا الثاني
بلغة سي ++ ياليت ياشباب الامر والمكتبه اللي تحتوي على هالامر
هناك امر اسمه FindFile وايظا Findnext قم بالبحث عنهم في help
وان شاء الله إذا وجدت اي معلومات مع مثال ساحاول ان اعطيك اياها
السلام عليكم,
لغرضك هذا يجب استعمال الدالتين 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
// هنا سيكون عندك اسم الملفات التي في مجلدك وافعل بها ما تشاء
}وهنا أفترض أن مجلدك يحتوي على ملفات فقط وفي الحالة الأخرى يجب أن نزيد كود لنتأكد إن كان الملف الذي وجدناه ملف أو مجلد ولكن الطريقة هي دائما نفسها.
إلى اللقاء.
/* 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;
}وهذا هو طلبك بالضبط
والله ماني داري كيف اشكركم
هذا بالضبط اللي كنت ابيه وابحث عنه
الله يجزاكم الف الف خير
وشكرا لكم مره ثانية
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…