Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Удаление файлов 
V
    Опции темы
xz386
Дата 22.1.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Здравствуйте я задавал вопрос по поводу удаления файлов помогли спасибо! А теперь надо удалить не один а несколько как это заделать???
Пробовал поставить  * за место имен не катит расскажите как это сделать???

Вот прошлый код

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
RemoveDir('c:\\temp');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DeleteFile('c:\\temp.txt');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
RenameFile('c:\\1.txt','c:\\qwe1.txt');
end;

end.



M
Alexeis
Модератор: выделяйте пожалуйста код http://forum.vingrad.ru/index.php?showtopic=126445

И указывайте в заголовке язык программирования.


Это сообщение отредактировал(а) Alexeis - 22.1.2007, 21:54
PM MAIL   Вверх
Rodman
Дата 22.1.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



Код

{Удаление пустой директории
Чтобы удалить пустую директорию с помощью delphi достаточно обратиться к функции removedir.
function removedir(const dir: string): boolean;
Эта функция возвращает true если директория, указанная в единственном параметре, передаваемом в функцию, успешно удалена, в противном случае функция возвратит false.
Часто возникает необходимость удалить непустую папку, содержащую не только файлы, но и другие вложенные папки. Для этого была написана пользовательская функция, удаляющая папку со всеми файлами и поддиректориями. Вот она:}
function myremovedir(sdir : string) : boolean;
var
iindex : integer;
searchrec : tsearchrec;
sfilename : string;
begin
result := false;
sdir := sdir + '*.*';
iindex := findfirst(sdir, faanyfile, searchrec);
while iindex = 0 do begin
sfilename := extractfiledir(sdir)+''+searchrec.name;
if searchrec.attr = fadirectory then begin
if (searchrec.name <> '' ) and
(searchrec.name <> '.') and
(searchrec.name <> '..') then
myremovedir(sfilename);
end else begin
if searchrec.attr <> faarchive then
filesetattr(sfilename, faarchive);
if not deletefile(sfilename) then
showmessage('could not delete ' + sfilename);
end;
iindex := findnext(searchrec);
end;

findclose(searchrec);

removedir(extractfiledir(sdir));
result := true;
end;

//А сейчас пример использования этой функции:

procedure tform1.button1click(sender: tobject);
begin
if myremovedir('c:testdir') then showmessage('Директория успешно удалена')
else showmessage('Не получается удалить директорию');
end; 

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Alexeis
Дата 22.1.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



в делфи не нужно дублировать слэши в путях к файлу, так как это делается в С++, используйте одинарные.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
xz386
Дата 22.1.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



что то пробовал папки не рубит.

PM MAIL   Вверх
Rodman
Дата 22.1.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



вот еще нашел... попробуй...

Код

{Here's a Delphi procedure that can delete a file with the ability to undo by sending the file to the "Recycle Bin."

Function FileDeleteRB will return True if the operation was successful.

~~~~~~~~~~~~~~~~~~~~~~~~~}
uses ShellAPI;

function FileDeleteRB(
   AFileName:string): boolean;
var Struct: TSHFileOpStruct;
    pFromc: array[0..255] of char;
    Resultval: integer;
begin
   if not FileExists(AFileName) then begin
      Result := False;
      exit;
   end
   else begin
      fillchar(pfromc,sizeof(pfromc),0) ;
      StrPcopy(pfromc,expandfilename(AFileName)+#0#0) ;
      Struct.wnd := 0;
      Struct.wFunc := FO_DELETE;
      Struct.pFrom := pFromC;
      Struct.pTo := nil;
      Struct.fFlags:= FOF_ALLOWUNDO or FOF_NOCONFIRMATION
         or FOF_SILENT;
      Struct.fAnyOperationsAborted := false;
      Struct.hNameMappings := nil;
      Resultval := ShFileOperation(Struct) ;
      Result := (Resultval = 0) ;
   end;
end;


и 
Код

{The following function completely deletes a directory regardless of whether the directory is filled or has subdirectories. No confirmation is requested so be careful. If the operation is successful then True is returned, False otherwise.}

Usage

if DelTree('c:\TempDir') then
ShowMessage('Directory deleted!')
else
ShowMessage('Errors occured!') ;

//~~~~~~~~~~~~~~~~~~~~~~~~~}
uses ShellAPI;
Function DelTree(DirName : string): Boolean;
var
  SHFileOpStruct : TSHFileOpStruct;
  DirBuf : array [0..255] of char;
begin
  try
   Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
   FillChar(DirBuf, Sizeof(DirBuf), 0 ) ;
   StrPCopy(DirBuf, DirName) ;
   with SHFileOpStruct do begin
    Wnd := 0;
    pFrom := @DirBuf;
    wFunc := FO_DELETE;
    fFlags := FOF_ALLOWUNDO;
    fFlags := fFlags or FOF_NOCONFIRMATION;
    fFlags := fFlags or FOF_SILENT;
   end;
    Result := (SHFileOperation(SHFileOpStruct) = 0) ;
   except
    Result := False;
  end;
end;


Добавлено @ 23:20 
еще есть вариант с bat'ником...

прописать там 
Код

erase /Q имя_папки


а потом удалять уже пустую папку...

Это сообщение отредактировал(а) Rodman - 22.1.2007, 23:09
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 22.1.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122




xz386, не забудь пометить как решенный...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
xz386
Дата 23.1.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Всем Огромный Сенькс А так smile  но форум  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.