Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

Как от личить файл от папки при FindFirst   Найти похожие ветки 

 
TStas ©   (2006-02-20 07:50) [0]

Если нужно и то, и другое, колнечноая цель - все стьереть, то есть аналог DEleteFolder, просто не могу найти в каком модуле он живет, проже самому написать.


 
AbrosimovA   (2006-02-20 08:16) [1]

faDirectory - директория


 
TStas ©   (2006-02-20 23:09) [2]

SR.Attr=FaDirectory//ошибка потому и спросил


 
Zeqfreed ©   (2006-02-20 23:12) [3]

if (sr.Attr and faDirectory = faDirectory) then ;


 
TStas ©   (2006-02-24 23:39) [4]

function ClearDir(const Path: string): Boolean;
var
SR: TSearchRec;
FilePath: String;
begin
//ShowMessage("Ïîëó÷åíî íà âõîäå "+Path);
Result := DirectoryExists(Path);
if not Result then Exit;

if FindFirst(path+"\*.*", faAnyFile, SR)=0 then
 repeat
 if (sr.Name<>".") and (sr.Name<>"..") and
   (sr.Attr and faDirectory <> faDirectory) then
   begin
   FilePath:=Path+"\"+sr.Name;
     try
     DeleteFile(FilePath);
     except Result:=false; end;
   end;
 until FindNext(SR)<>0;

FindClose(sr);

if FindFirst(path+"\*.*", faDirectory, SR)=0 then
 repeat
   begin
   if (sr.Name=".") or (sr.Name="..") then continue;
   FilePath:=Path+"\"+sr.Name;
   ClearDir(FilePath);
   end
 until FindNext(SR)<>0;

FindClose(sr);
rmDir(Path);
end;

Получился вполне рабочи код. Одно плохо - стирает все, вычищает саму папку, но при удалении ее возникает ошика 32. С чем это связано - ума не приложу, видимо, нечего прикладывать


 
Джо ©   (2006-02-25 00:13) [5]

> но при удалении ее возникает ошика 32.

Code: 32.
The process cannot access the file because it is being used by another process.
Для какого-то процесса, вероятно, эта папка является текущей. В XP и Win2K ты не сможешь удалить такую папку.


 
TStas ©   (2006-02-25 00:32) [6]

И чего сделать? Это ж рекурсия? Может в try засунуть. А не удалится - так судбба ее жить на Земле


 
Джо ©   (2006-02-25 00:36) [7]

> [6] TStas ©   (25.02.06 00:32)

Ну, используй DeleteFile. Она возвращает булевское значение, а исключений не возбуждает.


 
Джо ©   (2006-02-25 00:37) [8]

> [7] Джо ©   (25.02.06 00:36)
> Ну, используй DeleteFile.

Тьфу, то есть RemoveDir.


 
Grief ©   (2006-02-25 01:45) [9]

Можно извратнуться и поискать хэндл процесса, который занимает эту папку, убить его и вновь попытаться удалить ее.


 
Джо ©   (2006-02-25 01:47) [10]

> [9] Grief ©   (25.02.06 01:45)
> Можно извратнуться и поискать хэндл процесса, который занимает
> эту папку, убить его и вновь попытаться удалить ее.

Угу. За такое лучше убить кого-то другого... Даже смайлик не поставлю.


 
novice_man ©   (2006-02-25 05:31) [11]

Что до ошибки возникаюей при выполнении RmDir, пример из справки:
uses Dialogs;
begin

  {$I-}
  { Get directory name from TEdit control }
  RmDir(Edit1.Text);
  if IOResult <> 0 then
    MessageDlg("Cannot remove directory", mtWarning, [mbOk], 0)
  else
    MessageDlg("Directory removed", mtInformation, [mbOk], 0);
end;

Попробуй перед выполнением RmDir сменить текущий каталог (можно попытаться проверить какой каталог текущий и если удаляемый, сменить).


 
TStas ©   (2006-02-25 20:16) [12]

>Попробуй перед выполнением RmDir сменить текущий каталог
А вот как его сменить? uses WinDos - не понимает, а что такое виндос, а именно в нем описана стандартная паскалевская функция смены каталога


 
Джо ©   (2006-02-25 20:25) [13]

> [12] TStas ©   (25.02.06 20:16)
> А вот как его сменить

ChDir.


 
TStas ©   (2006-02-28 23:41) [14]

Забыл спасибу написать. Каталог делался текущим, т. к. я, пробуя его стирать, невольно показывал его, ну и...
Джо, как всегда - респект


 
Джо ©   (2006-02-28 23:44) [15]

> [14] TStas ©   (28.02.06 23:41)
> Забыл спасибу написать. Каталог делался текущим

Так и думал :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.016 c
5-1127730027
DimaBr
2005-09-26 14:20
2006.03.19
Пункт меню редактора компонента 2


2-1141146829
ViktorZ
2006-02-28 20:13
2006.03.19
Apllication not applicable


2-1141159083
TStas
2006-02-28 23:38
2006.03.19
Как конвертировать файл из ОЕМ и обратно


1-1139761602
Fl@sh
2006-02-12 19:26
2006.03.19
CryptoApi &amp; криптопровайдеры и информацыя о них


11-1121813528
lundeholm
2005-07-20 02:52
2006.03.19
Want a simple KOLFTP example





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский