Все игры
Обсуждения
Сортировать: по обновлениям | по дате | по рейтингу Отображать записи: Полный текст | Заголовки

функция для удаления папок с содержимым без применения рекурсии

Всем привет! Тут ниже Unit, там описана процедура для удаления папок с содержимым (папки, файлы). В нете можно найти варианты с применеием рекурсии, но рекусия это рекурсия, дорого и не совсем надежно.
 
Стандарт ная процедура удаления папок delphi (RemoveDir) не удаляет вложенные папки и папки с содержимым.
 
Испытания проводил на флешке со вложенными папками, по скоростным показателям мало отличаеться от удаления через систему.
 
Буду рад получить отзовы и предложения по улучшению кода! В частности удаления зашишеных папок и файлов.
 
Жду откликов!
 
 
unit folders;
 
//____Abducarimov_Kairat_Tagaevich____
//____17.09.09________________________
//____function_for_removing_folders___
//____function_use_no_recursion_______
 
interface
uses SysUtils, Dialogs;
Function RemoveDirs(Dir : String) : Boolean;//delete_folder_with_contents
implementation
Function step_back(path:string):String;//gets_path_one_level_up
var i,le:integer;
begin
  le:=length(path);
  for i:=1 to le do
    if path[le-i]='\' then
      begin
        path:=copy(path,1,le-i-1);
        Break;
      end
    else
      begin
        if path[le-i]=':' then Break;
      end;
   Result:=path;
 end;
Function RemoveDirs(Dir : String) : Boolean;
var
  iIndex : Integer;
  SearchRec : TSearchRec;
  sFileName : string;
  StopLine:string;
  SourceDir:string;
begin
  StopLine:=Step_back(Dir);
  SourceDir:=Dir;
  repeat
    SourceDir := SourceDir + '\*.*';
    iIndex := FindFirst(SourceDir, faAnyFile, SearchRec);
    while iIndex=0 do
      begin
       sFileName := ExtractFileDir(SourceDir)+'\'+SearchRec.Name;
         if SearchRec.Attr = faDirectory then
           begin
             if (SearchRec.Name<>'') and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
               begin
                 SourceDir := sFileName + '\*.*';
                 FindClose(SearchRec);
                 iIndex := FindFirst(SourceDir, faAnyFile, SearchRec);
               end else iIndex := FindNext(SearchRec);
           end else
               begin
                if SearchRec.Attr <> faArchive then FileSetAttr(sFileName, faArchive);
                if NOT DeleteFile(sFileName) then ShowMessage('Could NOT delete' + sFileName);
                iIndex := FindNext(SearchRec);
               end;
       end;
    FindClose(SearchRec);
    SourceDir:=ExtractFileDir(SourceDir);
    RemoveDir(SourceDir);
    SourceDir:=step_back(SourceDir);
  Until SourceDir=StopLine;
end;

end.

MyDAC

Если у кого есть вопросы по MyDAC - обращайтесь.
Кто как работает с Mускулом?

Думаю пригодится

Думаю пригодитсяПродам свои произведения:

Trojan Downloader
(Скачивает файлы из интернета без ведома пользователя и запускает их!!)

Trojan info 
(Присылает на емайл адрес файл паролей майл агента+ Захват экрана откуда был запущен + полную инфу о компе вот пример:

Ip адреса: (1-локалка, 2-Интернет!!!)
10.37.0.78
92.122.85.55
Пользователь:Admin
Имя компа:Comp
%windir%:C:\WINDOWS
C:C: 198459,20mb. Свободно: 154731,88mb.
D:
E:E: 198459,20mb. Свободно: 154731,88mb.
F:
G:
Мак адресс:99-E6-BS-71-B4-20
Расширение экрана:1440 x 900
Common files:C:\Program Files
HDD Number:2964396647
Dir Program Files:C:\Program Files
Оперативка:2 096 232 KB
Операционная система: Microsoft Windows XP
Id продукта: 76356-640-1464557-23412

Программный фейк:
Выкладываю скрины:
1) http://s005.radikal.ru/i210/1010/11/5dafe4d5c4d3.jpg
2) http://s39.radikal.ru/i086/1010/47/913b459017a0.jpg

Винлокер:
+ Ничем не палится (по крайней мере известными антивирями)
+ Блокирует безопасный режим
+ Добавляется в автозагрузку
+ Убрать можно только если ввести определенный код
+ Блокирует диспетчер задач
+ Блокирует реестр
+ Блокирует msconfig
+ Удобный дизайн
+ Полностью блокирует windows
+ Закрывает explorer
+ Если правильно ввести код удалится из автозагрузки и разблокирует вышеперечисленные программы и безопасный 
режим
+ Копирует себя в директорию WINDOWS 
+ Удалить такой Винлокер будет очень сложно придется использовать LiveСD (еще придется хорошо поискать его) или 
просто ввести код
+ Могу сделать любой пароль
+ Любой дизайн
+ Любой размер формы и самого файла
+ Самоудаление после активации 
+ Отдам почти даром
+ На таком Винлоке можно не плохо заработать
+ Полностью на весь экран
+ Не даст открыть программы такие как msconfig, regedit, taskmgr, regdt32... Ну и т.п
+ Можно полностью заблокировать безопасный режим! (по желанию)
+ При нескольких неправильных попыток ввода кода Система завершит работу синим экраном смерти! (BSOD)
+ При закрытии снова откроется так что закрыть его тока можно кодом

Выкладываю скрин:
http://s43.radikal.ru/i100/1010/b3/5dbc2101d523.jpg
Ну и еще один троян он ворует историю переписки mail agent

Хелпните Цуцуть ребятушки!!

Народ.. Хочу насолить своему плохому "хорошему" знакомку. Задумка такая сляпать прогу которая активируеться лишь на указанному Ip и начнет касячить.. ну там отрубать мышку и клаву к примеру.. прога пойдет в малый офис...

Знаю легче конечно закинуть на тот самый комп.. "нужный" за которым сидит мой "хороший" знакомый.. но обстоятельства такие что я не попаду в Офис, значит нужно залить её на все компы! и активироваться она будет лишь на определенной IP тут я и прошу помощи.. моя головЯ уже не Варит!! и не жарит.. и даже не парит...   

P.S.
НАКАСЯЧИТЬ ТОМУ ЧЕЛОВЕКУ ДЕЛО ЧЕСТИ!! так что прошу отнистись с пониманием и без критики о целях

настроение: Благодарное
хочется: Закончить проект(СКОРЕЕ)
слушаю: godsmack - i stand alone

Метки: Delphi, маленькая пакость

Sergey Pobiruhin, 22-01-2010 15:30 (ссылка)

TChart, построение графика

как можно построить линейный график с помощью Chart'а?? подскажите, как должен выглядить код... """раньше с таким не связывался..."""...Заранее спасибо...

настроение: Скучающее
хочется: х\з
слушаю: Disturbed - Meaning Of Life

Метки: график, Chart, Delphi

Sergey Pobiruhin, 10-10-2009 18:32 (ссылка)

Деление

как можно избежать такой ситуации: при делении 1 на 1000000 ответ выводит в формате 1Е-6, нужно что бы ответ был в обычном формате (0,000001) или 1*10^-6...подскажите, кто знает, или если такое возможно...

настроение: Безжизненное

Метки: дельфи

Создаем вместе весело и с песней

Я предлагаю создавать совместные программы. Помогать с листингом если в нем что то не так, делиться полезной информацией. Помогать тому кто программу делает и тд.

использование библиотеки miniFmod!

При использовании библиотеки miniFmod, проигрываем трекерную музыку в своем приложении! используем файл ресурса, подключаем его к программе вместе с библиотекой, и простым кодом заставляем проигрывать музыку!

I H, 21-11-2009 22:31 (ссылка)

Взаимодействие с Флеш

Народ к вам вопрос! Как можно осуществить взаимодействие Дельфи, с Фелшом из браузера? Если можно примерчики какиенибудь или компонентики если есть или документацию на эту тему...

Sergey Pobiruhin, 20-09-2009 12:40 (ссылка)

помогите

как написать что бы в поле Edit можно было вводить ток положительные числа..если введешь отрицательное,  нажимаешь рассчитать, тебе пишет Х не может быть отрицательным....

Метки: дельфи

причаливание docking

есть задание: Создать панели элементов с кнопками и списками. Настроить панели для реализации функции "причаливания" Docking.


помогите реализовать, пожалуйста

Метки: делфи, Delphi

Срочно нужна помощь

Требуется установить соединение с интернетом используя подключение по умолчанию


пробовал через

InternetAutoDial (INTERNET_AUTODIAL_FORCE_ONLINE, handle); 
Ничего не вышло!!

Триангуляция

Кто нибудь реализовывал алгоритмы триангуляции?
Может поделитесь или ссылку на источник подкинете?

Sergey Pobiruhin, 21-09-2009 20:29 (ссылка)

сложные формулы

возможно ли в поле Label написать сложную формулу...примерно такого вида если да, то как сделать....

настроение: Никакое
слушаю: Nightwish - The Poet And The Pendulum

Метки: дельфи

Sergey Pobiruhin, 27-08-2009 17:24 (ссылка)

научите работать с дельфи

кто нить научите работать с дельфи, в книгах не понятно написано... какие процедуры есть, за что они отвечают....вообщем у кого время есть научите.... спс заранее....:(

настроение: Подавленное
хочется: научится работать в среде дельфи
слушаю: Rammstein - Hilf Mir

Daniyar Sitak, 07-06-2011 17:33 (ссылка)

как поставить Delphi 7 на win 7

вот в чем вопрос

настроение: Задумчивое

Edit?

Как узнать положение курсора?

OpenGL

Я загружаю текстуры из файлов формата JPEG, TGA, BMP. хотелось-бы также найти коды к загрузке файлов формата GIF и TIF, если кто то уже имеет опыт работы с OpenGL, готов поделиться кодами. Загрузка файлов производиться из потока с сохранением информации в формате RGB с выделением памяти Pointer.

Need help

Господа программисты пишу прогу для администрирования виндуза через реестр


требуется вписать ключ [HKEY_CURRENT_USER\software\Microsoft\Windows\Current Version\Explorer]


значение "link"=hex:00 00 00 00


каким образом можно это корректнее сделать.


мой вариант :


if checkbox4.Checked then
begin
reg:= Tregistry.Create;
reg.RootKey:= HKEY_CURRENT_USER;
reg.OpenKey('software\microsoft\windows\currentversion\explorer', true);
reg.Writebinary('link', 00 00 00 00);
reg.CloseKey;
end else
begin
reg:= Tregistry.Create;
reg.RootKey:= HKEY_CURRENT_USER;
reg:= Tregistry.Create;
reg.RootKey:= HKEY_CURRENT_USER;
reg.OpenKey('software\microsoft\windows\currentversion\explorer', true);
reg.Writebinary('link', 00 00 00 01);
reg.CloseKey;
end;


Так не работает!


 

настроение: Сонное
слушаю: АРИЮ

I H, 20-12-2009 09:16 (ссылка)

События

Доброго времени суток всем! У меня такой вопрос! Пишу вот такую програмку...
program Server;
uses
Windows,
ScktComp;
var
Msg:TMsg;
  ServerSocket:TServerSocket;
begin
ServerSocket:=TServerSocket.Create(ServerSocket);
ServerSocket.Name:='Server';
ServerSocket.Port:=5124;
  ServerSocket.Active:=true;
while GetMessage(Msg,0,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
А теперь внимание вопрос! Как вызвать событие OnConnect????

Процедурный параметр

Как реализовать в Delphi Процедурный параметр?
Конструкция вида:
Procedure TraverseStack(S:stack; Visit: processentry);
или
Procedure TraverseStack(S:stack; procedure Visit(x: stackentry));

Из книжки

Реализация стека в виде массива, образцово показательный код:
unit Stack1;

interface

uses
Dialogs;

const
maxstack=3;

type stackentry = String; {тип ячейки стека}

type stack = record
top: 0..maxstack;
entry: array[1..maxstack] of stackentry
end;
{}
Procedure CreateStack (var S: stack);
{Pre: Предусловия отсутствуют.
Post: Стек S создан и инициалезирован так, что пуст.}
Function StackEmpty (S: stack):Boolean;
{Pre: Стек S уже создан
Post: Функция возвращает true, если стек пуст, и false в противном случае.}
Function StackFull (S: stack):Boolean;
{Pre: Стек S уже создан
Post: Функция возвращает true, если стек полон, и false в противном случае.}
Procedure Push (x: stackentry; var S: stack);
{Pre: Стек S уже создан и не полон
Post: Элемент x сохранён в стеке в качестве его верхнего элемента.}
Procedure Pop (var x: stackentry; var S: stack);
{Pre: Стек S уже создан и не пуст
Post: Элемент, находящийся на вершине стека, удалён и возвращён как x.}

implementation

{}
Procedure CreateStack (var S: stack);
{Pre: Предусловия отсутствуют.
Post: Стек S создан и инициалезирован так, что пуст.}
begin
S.top:=0;
end;

Function StackEmpty (S: stack):Boolean;
{Pre: Стек S уже создан
Post: Функция возвращает true, если стек пуст, и false в противном случае.}
begin
StackEmpty:=(S.top=0)
end;

Function StackFull (S: stack):Boolean;
{Pre: Стек S уже создан
Post: Функция возвращает true, если стек полон, и false в противном случае.}
begin
StackFull:=(S.top=maxstack)
end;

Procedure Push (x: stackentry; var S: stack);
{Pre: Стек S уже создан и не полон
Post: Элемент x сохранён в стеке в качестве его верхнего элемента.}
begin
with S do
if top = maxstack then
ShowMessage('Stack is full')
{Error('Stack is full')}
else
begin
top:=top+1;
entry[top]:=x;
end;
end;

Procedure Pop (var x: stackentry; var S: stack);
{Pre: Стек S уже создан и не пуст
Post: Элемент, находящийся на вершине стека, удалён и возвращён как x.}
begin
with S do
if top = 0 then
ShowMessage('Stack is empty')
{Error('Stack is empty')}
else
begin
x:=entry[top];
top:=top-1;
end;
end;
{}
end.

Без заголовка

Итак, начнём. У кого есть предложения по написанию общей программы?

слушаю: АРИЮ

Народ, интересная вещь по поводу Delphi 7

Кому нибудь доводилось делать вычесления маски изображения? координаты периметра изображения? Я говорю не об рамке.. а о самом изображении

Проблемма с кодировкой казахского языка

Стандартные элементы управления и среда разработки Delphi не позволили использовать казахские буквы. Я создавал программу учета студентов заочной кафедры и мне была просто необходимо вводить казахские имена и фамилии. Пробовал использовать элементы управления сторонних разработчиков с поддержкой ANSI кодировки но фиаско! Помогла прошивка винды под казахский язык. Если есть другие возможности использования казахского языка без использлвания прошивок так как приходиться устанавливать ее на каждый рабочий компьютер.

В этой группе, возможно, есть записи, доступные только её участникам.
Чтобы их читать, Вам нужно вступить в группу