PDA

View Full Version : راهنمايي در استفاده از دستور حذف در دلفي



sezar21m
سه شنبه 22 تیر 1389, 13:50 عصر
سلام و خسته نباشيد

من به راهنمايي شما عزيزان نياز دارم

مشكل من اينه كه زياد به دلفي وارد نيستم و ميخوام دستوري رو بنويسم كه بياد توي هارد دنبال يه فايل خاص بگرده و وقتي اونو پيدا كرد حذفش كنه مثلا فايل ali.txt كه هم توي C باشه و هم توي درايو D اين فايل رو پيدا كنه و و بطور خودكار حذفش كنه


ممنون ميشم كمكم كنيد :قلب::لبخندساده:

Felony
سه شنبه 22 تیر 1389, 15:29 عصر
روال زیر به دنبال فایل (ها) مورد نظر در یک آدرس مشخص میگرده و اون ها رو لیست میکنه :

procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string);
var
SR: TSearchRec;
DirList: TStringList;
IsFound: Boolean;
i: integer;
begin
if StartDir[length(StartDir)] <> '\' then
StartDir := StartDir + '\';

{ Build a list of the files in directory StartDir
(not the directories!) }

IsFound :=
FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0;
while IsFound do begin
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);

// Build a list of subdirectories
DirList := TStringList.Create;
IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;
while IsFound do begin
if ((SR.Attr and faDirectory) <> 0) and
(SR.Name[1] <> '.') then
DirList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);

// Scan the list of subdirectories
for i := 0 to DirList.Count - 1 do
FindFiles(FilesList, DirList[i], FileMask);

DirList.Free;
end;

به وسیله تابع GetLogicalDrives میتونید لیست درایوهای سیستم رو بگیرید و به وسیله تابع GetDriveType نوع اونها رو تشخیص بدید و در آخر هم فایل های مورد نظر رو با یک شرط پیدا کنید و به وسیله تابع DeleteFile خذفشون کنید .

sezar21m
سه شنبه 22 تیر 1389, 19:01 عصر
با عرض پوزش

واقعا شرمنده
اگه ميشه يه نمونه كاملش رو بزارين چون نتونستم از اون توابعي كه گفتين استفاده كنم چون 4 روز هست كه دلفي رو ياد گرفتم و دارم ياد ميگيرم و خيلي مبتدي هستم بيسوادييه ديگه :خجالت:

Felony
چهارشنبه 23 تیر 1389, 07:28 صبح
روال قبلی رو داخل برنامتون قرار بدید و کد زیر رو در یک دکمه بنویسید :

var
StrList: TStringList;
Drive: Char;
FileCount: Integer;
begin
for Drive:= 'A' to 'Z' do
if GetDriveType(PChar(Drive+':'))= DRIVE_FIXED then
begin
StrList:= TStringList.Create;
try
FindFiles(StrList, Drive+':\', 'FileName.txt');
for FileCount:= 0 to StrList.Count- 1 do
DeleteFile(StrList.Strings[FileCount]);
finally
StrList.Free;
end;
end;