Навигация
Главная
Поиск
Форум
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
Пример работы с... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
21 ошибка прогр... 65535
Гостевая книга ... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Содержание сайт... 65535
Invision Power ... 65535
Имитационное мо... 65535
Программируемая... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 5
На сайте нет зарегистрированных пользователей

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

Моделирование интернет кафе на GPSS + Отчет
База данных студентов на Turbo Pascal (Списки) + Пояснительная записка
Лабораторная работа по динамическим спискам на Turbo Pascal (перемещение...

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



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




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 Октябрь 25 2008 18:00:16 · 2 Комментариев · 10289 Прочтений · Для печати

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


Комментарии
я Август 20 2010 16:22:20
smileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmileysmiley
ExtazY Январь 21 2014 05: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...
Шаблон для новост...

Случайные загрузки
MxProtector
EditNew
База данных: Книж...
ProLIB18
RxLIB
PHP/MySQL для нач...
Панель Наша Кнопка
Программа предназ...
RbControls
Пример работы с б...
Dbgridpack
CaptionButton
База данных фильм...
TmxOutlookBarPro
Assembler. Учебни...
DelTrayIcon [Исхо...
Шаблон для новост...
Мод "проверочный ...
Анекдоты с ostrie.ru
Halcyon

Топ загрузок
Приложение Клие... 100765
Delphi 7 Enterp... 97588
Converter AMR<-... 20240
GPSS World Stud... 16995
Borland C++Buil... 14165
Borland Delphi ... 10202
Turbo Pascal fo... 7360
Калькулятор [Ис... 5941
Visual Studio 2... 5196
Microsoft SQL S... 3654
Случайные статьи
LED-лампы
Обеспечение финанс...
Синтез нового объекта
Кельн: путешествие...
Управление риском
Основные игры в он...
Выбор ведущего эле...
Вулкан казино игро...
Управляемая инициа...
Сайдбар сайта тепе...
Игровые автоматы P...
Вот пример сеанса ...
Тема адресации и с...
Для ввода строк с ...
Онлайн игры казино...
Игровой видео слот...
Листинг 11.2. Сорт...
Pointer type Ident...
Измените громкость...
Анализ общей линей...
Этап 9: выполните ...
Написание собствен...
Новые возможности ...
Задание таблицы дл...
Функции технологич...
Статистика



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


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