View Full Version : پردازش فایل ها و زیر شاخه های یک شاخه
alimooghashang
یک شنبه 23 تیر 1387, 17:40 عصر
با سلام
راه ساده ای تو دلفی وجود نداره که بتونیم فایل ها و زیر شاخه های یک شاخه را لیست کنیم یا کلا پردازش کنیم؟
مرسی
Hsimple11
یک شنبه 23 تیر 1387, 17:51 عصر
راه ساده ای تو دلفی وجود نداره که بتونیم فایل ها و زیر شاخه های یک شاخه را لیست کنیم
از کنترلهای Visual مانند TreeView استفاده کنید.
یا کلا پردازش کنیم؟
منظورتان از پردازش چیست؟
Hsimple11
یک شنبه 23 تیر 1387, 18:09 عصر
لیست کردن فایلهای یک شاخه :
procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\WINDOWS\', ListBox1.Items);
end;
alimooghashang
دوشنبه 24 تیر 1387, 15:18 عصر
لیست کردن فایلهای یک شاخه :
procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\WINDOWS\', ListBox1.Items);
end;
سلام Hsimple11 (http://barnamenevis.org/forum/member.php?u=14163) جان
لطفا میشه یه کم در مورد تابع هایی که نوشتی توضیح بدی
ممنون میشم خودم هم بفهمم داره چی کار میکنه
مرسی
این توابع را میگم
TSearchRec
FindFirst
FindNext
FindClose
بازم ممنونم ازت
Hsimple11
دوشنبه 24 تیر 1387, 19:05 عصر
خب Findfirst تابعی است که یک شاخه (پارامتر اول آن یعنی Path) را به دنبال اولین فایل مورد نظر جستجو میکند. این جستجو بر مبنای Attribute هایی است که به عنوان پارامتر دوم مشخص می شود. مثلا اینکه فقط فایلهای Readonly را بیابد (faReadOnly) یا همه نوع فایلی (FaAnyFile). نتیجه جستجو در پارامتر آخر که از نوع TSearchRec است برمیگردد. اگر نتیجه FindFirst صفر باشد یعنی فایل مورد نظر وجود دارد. در اینجا چون تمام فایلهای شاخه را میخواهیم یک path در پروسیجر داریم و *.* که تمامی فایلها را لیست کند. پس این خط از برنامه در صورتی که شاخه مورد نظر فایلی را داشته باشد کار را ادامه میدهد تا زمانی که دیگر فایلی پیدا نکند (Until FindNext(SR)<>0). در ضمن FindFirst مقداری از حافظه را اشغال میکند که مثل خیلی از توابع بایستی در نهایت آن را Free کرد. (FindClose). و TSearhRec اطلاعاتی فایلهایی را که با توابع FindFirst و FindNext پیدا میشوند را تعیین می کند. اطلاعاتی مثل نام (SR.Name) سایز، زمان ساخت و attribute ها. در ضمن یک فیلتر <>Fadirectory انجام میدهیم که زیر شاخه ها را در لیست نیاورد.
موفق باشید...
alimooghashang
دوشنبه 24 تیر 1387, 21:22 عصر
مثلا اینکه فقط فایلهای Readonly را بیابد (faReadOnly) یا همه نوع فایلی (FaAnyFile).
در اینجا چون تمام فایلهای شاخه را میخواهیم یک path در پروسیجر داریم و *.* که تمامی فایلها را لیست کند.
مرسی که اینهمه جواب خیلی کاملی دادی
فقط میشه فرق این دو تا را بگی
من هنوز نفهمیدم نیاز این *.* چی بوده اینجا!
چه نیازی هست که اخر path این *.* را گزاشتی
مرسی
اصغر (پآچ)
سه شنبه 25 تیر 1387, 00:31 صبح
سلام دوست من
اگه توی سایت findfirst, find next, findclose رو سرچ کنی مقاله خوبی در این زمینه بدست میاری
موفق و موید باشی
Hsimple11
سه شنبه 25 تیر 1387, 01:13 صبح
فقط میشه فرق این دو تا را بگی
مشخص است. faReadOnly تنها به FindFirst اجازه میدهد در محدوده فایلهای ReadOnly جستجو کند. با مفهوم فایلهای ReadOnly که مشکلی ندارید؟
من هنوز نفهمیدم نیاز این *.* چی بوده اینجا!
چه نیازی هست که اخر path این *.* را گذاشتی
یعنی تمامی فایلها را لیست کن و فیلتر خاصی بر روی آنها صورت نده.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.