Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,368
новичок: Goosprin
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

База данных - словарь терминов на Delphi + Пояснительная записка
Обработка задач на ЭВМ на GPSS + Пояснительная записка
Моделирование работы аэропорта на GPSS + Пояснительная записка

Работа с директориями (папками) в Дельфи
В этой статье я
постараюсь познакомить Вас с некоторыми стандартными функциями для
работы с директориями. И еще приведу несколько пользовательских функций
и примеры их использования. Также рассмотрен вопрос вызова диалога
выбора директории.



Для начала начнем с
простой функции для создания новой папки. Общий вид функции такой:




function CreateDir(const
Dir: string): Boolean;






То есть если
папка успешно создана функция возвращает
true. Сразу же
простой пример ее использования:




procedure TForm1.Button1Click(Sender:
TObject);

begin

if createdir('c:\TestDir') = true then

showmessage('Директория успешно создана')

else

showmessage('При создании директории произошла ошибка');

end;







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



Объявления




createdir(edit1.text);







и




createdir(extractfilepath(paramstr(0))+edit1.text);







приведут к одному и
тому же результату.



Теперь рассмотрим
функцию для удаления папок. Ее объявление выглядит так:




function RemoveDir(const Dir: string):
Boolean;






Сразу же хочу
предупредить, что данная функция способна удалять только пустые папки, и
если там что-нибудь будет, то произойдет ошибка! Но выход есть!!! Здесь
нам на помощь придет пользовательская функция с простым названием
MyRemoveDir. Вот описание функции:




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;






Копируете это все в
Вашу программу, а затем эту функцию можно вызвать например так:





if NOT MyRemoveDir('C:\TestDir') then

ShowMessage('Не могу удалить эту директорию');







Теперь маленько
отстранимся от непосредственной работы с папками и рассмотрим волнующий
многих вопрос. Как вызвать диалог выбора папки (как при установке
программ)?? ПРОСТО!!!



Подключаем в uses
модуль Filectrl.pas (то есть uses FileCtrl;). Теперь ставим на форму еще
кнопочку (чтобы не путаться :) и пишем такой код:




procedure TForm1.Button3Click(Sender: TObject);

const

SELDIRHELP = 1000;

var

Dir: string;

begin

Dir := 'C:\windows';

if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP)
then

Caption := Dir;

end;






При выборе директории в
заголовке формы отобразиться ее название!



Теперь рассмотрим
следующую процедуру. К примеру Вам надо создать папку Dir1 по адресу: C:\MyDir\Test\Dir1,
но при этом папок MyDir и Test на Вашем компьютере не существует.
Функция CreateDir здесь не сработает, поэтому воспользуемся процедурой
ForceDirectories. Ее общий вид таков:

procedure ForceDirectories(Dir: string);




Пример ее использования
(как всегда я поставил на форму новую кнопку, а там написал)

procedure TForm1.Button4Click(Sender: TObject);

var

Dir: string;

begin

Dir := 'C:\MyDir\Test\Dir1';

ForceDirectories(Dir);

end;




Ну и напоследок приведу функцию для проверки: существует ли директория
или нет. Ее общий вид такой:

function
DirectoryExists(Name: string): Boolean;




Если директория
указанная в параметре Name существует - то функция возвратит true.

Надеюсь, что помог Вам
описанием данных функций и процедур. Сразу хочется дать совет: почаще
заглядывайте в HELP, там много интересной и полезной информации!

mailto:kikoz@kemtel.ru
Опубликовал Kest October 25 2008 14:00:16 · 2 Комментариев · 10388 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
я August 20 2010 12:22:20
smileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmiley
ExtazY January 21 2014 01:46:09
procedure CREATEFOLDERS(Str: String);
var
I: Integer;
StrTemp,CreateFolder: string;
begin
for I:=1 to Length(Str)+1 do
begin
If (Str[I]<>'\') and (I<=Length(str)) Then StrTemp:=StrTemp+Str[I] Else
begin
CreateFolder:=CreateFolder+StrTemp+'';
StrTemp:='\';
If not DirectoryExists(CreateFolder) Then MkDir(CreateFolder);
end;
end;
end;
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
iComm v.6.1 - выв...
Pro-Download Sys...
Animation (Пример...
Распознавание иде...
Animation Effect ...
iChat v.7.0 Final...
Crypt32
PolyFlow
PDJPack
Профессиональное ...
Srinilist
32 урока по Delphi
MPTools
PrevInst
PRNDbgrid
Система баннеро...
MxProtector
Print Grid
FormShape [Исходн...
Анекдоты с ostrie.ru

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97833
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Реализация механиз...
Функции GetX и Get...
Буферы для потоков
Кумулятивные суммы
Сборка
Файлы посещений: м...
Как играть в казин...
Обновление плагинов
Программа для масс...
Правильность и сос...
Содержание
9.1. Проблема син...
Создание и изменен...
ВВЕДЕНИЕ В ОТСЕЧЕНИЕ
Если протокол не в...
Определения в язы...
Объединение элемен...
Сортировка методом...
Служба RunAsСлужба...
Модели выполнения ...
Еще раз о способах...
Исследование прост...
Что делать?
Методика проектиро...
Элементы ввода для...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?