![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Нужна помощь. Хочу дополнить свой код. Нужно, чтобы из папки "Мои документы" по нажатию кнопки удалялись все файлы с расширением *.txt.
Как узнать путь к папке "Мои документы" я узнал. Вот код: Код:
//Сначала добавить в Uses ActiveX, ShlObj;
//Узнать папку Мои документы
function GetMyDoc : string;
var
SpecialDir: PItemIdList;
begin
SetLength(result, MAX_PATH);
SHGetSpecialFolderLocation(Form1.Handle, CSIDL_PERSONAL, SpecialDir);
SHGetPathFromIDList(SpecialDir, PChar(Result));
SetLength(result, lStrLen(PChar(Result)));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetMyDoc);
end;Как теперь можно из папки "Мои документы" удались файлы с расширением *.txt ??????? |
|
#2
|
||||
|
||||
|
FindFirst, FindNext. В справке имеется пример использования.
|
|
#3
|
|||
|
|||
|
А как можно применить их к моему примеру. Не могу никак разобраться. В справке написана общая информация.
|
|
#4
|
||||
|
||||
|
Достаточно простой пример:
Код:
function DeleteFiles(const FileMask : String) : Boolean;
var
SRec : TSearchRec;
Path : String;
begin
Result := FindFirst(FileMask, faAnyFile, SRec) = 0;
if not Result then
exit;
try
Path := ExtractFilePath(FileMask);
Repeat
if (SRec.Name <> '') and (SRec.Name <> '.') and (SRec.Name <> '..') and
(SRec.Attr and (faVolumeID + faDirectory) = 0) then
begin
Result := DeleteFile(Path + SRec.Name);
if not Result then
break;
end;
Until FindNext(SRec) <> 0;
finally
FindClose(SRec);
end;
end; |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
StudentMarat (21.04.2012)
| ||
|
#5
|
|||
|
|||
|
Я попробовал применить функцию вот так:
Код:
DeleteFiles('D:\Новая папка\*.txt');А как сделать так,чтобы удаляла из папки "Мои документы". В ручеую прописывать не вариант, т.к. папка "Мои документы" может быть настроена по разному. У меня на компе, к примеру, я её настроил на диск D. На других компах она может быть настроена по умолчанию при постановке винды, т.е. c:\Document and Setting\Имя пользователя\Мои документы. |
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Цитата:
немножко напряч мозги =) путь к папке документы знаем. теперь Код:
var path:string; begin path:=GetMyDoc; |
|
#8
|
|||
|
|||
|
angvelem опередил =)
|
|
#9
|
|||
|
|||
|
Скорее всего, вот так, я правильно думаю:
Код:
procedure TForm1.Button1Click(Sender: TObject); begin DeleteFiles(GetMyDoc+'\*.txt'); end; |
|
#10
|
|||
|
|||
|
Цитата:
Последний раз редактировалось Snake22, 21.04.2012 в 23:27. |
|
#11
|
|||
|
|||
|
Цитата:
У меня по заданию нужно, чтобы все файлы с расширением *.txt из папки Мои документы удалялись. И я только что попробовал сделать вот так: Код:
procedure TForm1.Button1Click(Sender: TObject); begin DeleteFiles(GetMyDoc+'\*.txt'); end; |
|
#12
|
|||
|
|||
|
если интересует способ без переобора то через ShellAIP
Код:
function Recycle( FileName: string): Boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), 0);
FileOp.Wnd := Application.Handle;
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(FileName);
FileOp.fFlags := FOF_NOERRORUI or FOF_NOCONFIRMATION;
FileOp.fAnyOperationsAborted:=true;
Result := (SHFileOperation(FileOp) = 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Recycle('C:\tmp\*.txt'#0);
end;Последний раз редактировалось Snake22, 21.04.2012 в 23:33. |
| Этот пользователь сказал Спасибо Snake22 за это полезное сообщение: | ||
StudentMarat (21.04.2012)
| ||
|
#13
|
|||
|
|||
|
Цитата:
|
|
#14
|
|||
|
|||
|
Цитата:
т.е. здесь в Uses нужно добавить ShellApi. Компилятор у меня ругается на Wnd. Что нужно сделатьЮ чтобы не ругался???? |
|
#15
|
|||
|
|||
|
Цитата:
wnd вообще можно удалить.это так я со своего примера копировал,там он нужен был мне. Код:
function Recycle( FileName: string): Boolean; var FileOp: TSHFileOpStruct; begin FillChar(FileOp, SizeOf(FileOp), 0); FileOp.Wnd := Application.Handle; FileOp.wFunc := FO_DELETE; FileOp.pFrom := PChar(FileName); FileOp.fFlags := FOF_NOERRORUI or FOF_NOCONFIRMATION; FileOp.fAnyOperationsAborted:=true; Result := (SHFileOperation(FileOp) = 0); end; |
| Этот пользователь сказал Спасибо Snake22 за это полезное сообщение: | ||
StudentMarat (21.04.2012)
| ||