Навигация
Главная
Поиск
Форум
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
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

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

База данных - рабочее место кассира на Delphi + бд Access
Моделирование работы аэропорта на GPSS + Пояснительная записка
Создание последовательности окон и передвижение окон по экрану на Turbo ...

Реклама



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

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



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




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 Комментариев · 10139 Прочтений · Для печати

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


Комментарии
я Август 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...
Шаблон для новост...

Случайные загрузки
Delphi 2005 Секре...
Применение жадног...
Эффект лампы на р...
Image Browser [Ис...
KOL & MCK v1.69
Векторный редакто...
База для Allsubmi...
TrayComp
Иллюстрированный ...
MP3 Архив v.2.0
AlignEdit
RAS
Fig [Исходник на ...
БД студентов
SODA [Исходник на...
Delphi 6. Учебный...
Разработка интерн...
FreeSMS v1.3.1
Графика в проекта...
AJAX и PHP. разра...

Топ загрузок
Приложение Клие... 100751
Delphi 7 Enterp... 97123
Converter AMR<-... 20228
GPSS World Stud... 16951
Borland C++Buil... 14136
Borland Delphi ... 10066
Turbo Pascal fo... 7333
Калькулятор [Ис... 5882
Visual Studio 2... 5189
FreeSMS v1.3.1 3650
Случайные статьи
Схема адресации IP...
Трехмерный объект ...
Последовательный п...
Цели и философия я...
Все запросы на при...
Трафик абонентских...
Программа пользова...
Простые свойства
Предварительные св...
Стеки как структур...
Схема взаимодейств...
ФОРМАТЫ ОПЕРАТОРОВ...
Школа SEO Россия
Трендовые темы
Что писать в инфог...
СУБД mySQL
Слот машины онлайн...
Конференция по PHP...
Б-деревья
Сигареты оптом: ка...
Продолжительность ...
Тайные каналы
UFC-ставки в Париматч
Работа с настройка...
Игровые автоматы с...
Статистика



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


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