![]() |
|
|
Регистрация | << Правила форума >> | 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. В справке имеется пример использования.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
StudentMarat (21.04.2012)
|
#5
|
|||
|
|||
![]() Я попробовал применить функцию вот так:
Код:
DeleteFiles('D:\Новая папка\*.txt'); А как сделать так,чтобы удаляла из папки "Мои документы". В ручеую прописывать не вариант, т.к. папка "Мои документы" может быть настроена по разному. У меня на компе, к примеру, я её настроил на диск D. На других компах она может быть настроена по умолчанию при постановке винды, т.е. c:\Document and Setting\Имя пользователя\Мои документы. |
#6
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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)
|