PDA

View Full Version : پیدا کردن یک فایل از داخل Subfolder های یک Folder



nasr
چهارشنبه 23 اردیبهشت 1383, 08:23 صبح
سلام

چگونه میشه یه فایل را که هم اسم اون و هم پسوند اون را داریم در یه فولدر پیدا کنیم

من یک سری فیل اتو کد هست که در یک فولدری به نام Cad و Subfolder هایی ذخیره شده است

حالا آدرس فولدر اصلی را دارم و نمی دونم فایل مورد نظر در کدام Subfolder است

می خوام آدرس فولدر اصلی را بدم خود برنامه بگرده توی هر کدوم از Subfolder ها هست فایل را باز کنه

البته برای باز کردن اتوکد و یه فایل کد مشکلی ندارم فقط مشکلم پیدا کردن فایل در بین Subfolder ها است

ممنون

مهدی کرامتی
چهارشنبه 23 اردیبهشت 1383, 08:56 صبح
function FINDFile(const FILESpec: TFileName; attributes: integer): TStringList;
var
spec: string;
list: TStringList;

procedure RFINDFile(const folder: TFileName);
var
SearchRec: TSearchRec;
begin
// Locate all matching FILES in the current
// folder and add their names to the list
if FINDFirst(folder + spec, attributes, SearchRec) = 0 then begin
try
repeat
if (SearchRec.Attr and faDIRECTORY = 0) or
(SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
list.Add(folder + SearchRec.Name);
until FINDNext(SearchRec) <> 0;
except
FINDClose(SearchRec);
raise;
end;
FINDClose(SearchRec);
end;
// Now search the subfolders
if FINDFirst(folder + '*', attributes
or faDIRECTORY, SearchRec) = 0 then
begin
try
repeat
if ((SearchRec.Attr and faDIRECTORY) <> 0) and
(SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
RFINDFile(folder + SearchRec.Name + '\');

until FINDNext(SearchRec) <> 0;
except
FINDClose(SearchRec);
raise;
end;
FINDClose(SearchRec);
end;
end; // procedure RFINDFile inside of FINDFile

begin // function FINDFile
list := TStringList.Create;
try
spec := ExtractFileName(FILESpec);
RFINDFile(ExtractFilePath(FILESpec));
Result := list;
except
list.Free;
raise;
end;
end;

نحوه استفاده:

var
List: TStringList;
begin
List := FINDFile('c:\windows\ + 'file1.txt', 0);

این تابع فولدر c:\windows و تمام زیرشاخه‌های آن را بدنبال فایل موردنظر میگردد و موارد یافت شده را در عناصر List قرار میدهد.

nasr
چهارشنبه 23 اردیبهشت 1383, 10:32 صبح
آقا ما اگه این آقای کرامتی را نداشتیم ....

بسیار ممنونم :kiss:

parhizkar2000
دوشنبه 28 اردیبهشت 1383, 00:26 صبح
حالا یکی اینو بگه
1- چطوری میشه اسامی فایلهای داخل یک فولدر رو برگردوند ؟
2-چطوری میشه نام فولدرهای یک پارتیشن رو پیدا کرد؟
3- چطوری بفهمیم هارد دیسک چند پارتیشن داره؟

parhizkar2000
دوشنبه 28 اردیبهشت 1383, 00:55 صبح
خودم جواب اولی رو پیدا کردم
http://www.swissdelphicenter.ch/torry/showcode.php?id=1725