Тип TStringList. Работа с папками
Работа с папками
В Lazarus имеется несколько полезных функций и процедур для различной работы с папками (каталогами), которые вы можете применять в своих программах. Изучим их. При желании, можете создать простое приложение с единственной кнопкой TButton на форме. Сгенерируйте процедуру OnClick для неё, и в этой процедуре поочередно можете проверять рассмотренные далее примеры.
GetCurrentDir - функция возвращает адрес и имя текущей папки. Функция описана в модуле SysUtils, то есть, чтобы использовать функцию, нужно убедиться, что SysUtils подключен в разделе uses. Пример использования:
ShowMessage(GetCurrentDir);
GetDir - функция возвращает текущую папку на указанном в параметре диске. Имеется два параметра: номер диска (целое число) и имя текстовой переменной, куда будет записан результат работы функции. Имейте в виду, что нумерация дисков начинается с 1, это будет диск A:. Первый жесткий диск C: имеет номер 3. Если указать номер диска 0, то будет выводится информация о текущей папке текущего диска. В Linux и других Unix-подобных системах нумерация диска игнорируется. Функция описана в модулях System и SysUtils, для использования будет достаточно, если подключен один из них. Пример использования:
procedure TForm1.Button1Click(Sender: TObject); var s: string; begin GetDir(3, s); //в переменную s получили текущую папку на диске C: ShowMessage('Текущая папка на диске C: - ' + s); end;
DirectoryExists - функция проверяет, существует ли указанная в параметре папка. Если папка существует, функция возвращает True, если нет - False. Если адрес папки не указан, то делается проверка на существование папки внутри текущей папки. Функция описана в модуле SysUtils, её следует использовать, если программа будет обращаться к какой-то папке: копировать её или просто сделать текущей. Если папки нет - это вызовет ошибку программы, поэтому проверка на существование в таких случаях обязательна. Пример использования:
if not DirectoryExists('C:\Temp') then ShowMessage('Папки "C:\Temp" не существует') else ShowMessage('Папка"C:\Temp" существует!!!');
ChDir - процедура, делает текущей указанную в параметре папку. Процедура описана в модулях System и SysUtils, чтобы её использовать, достаточно подключить один из них. Пример использования:
ChDir('C:\Temp\111'); //изменили текущую папку ShowMessage('Теперь текущая папка: ' + GetCurrentDir);
SetCurrentDir - функция, делает указанную в параметре папку текущей и возвращает True в случае успеха, или False, если произошла ошибка (например, указанной папки не существует). Функция описана в модуле SysUtils. Пример использования:
if SetCurrentDir('C:\Temp\1111') then ShowMessage('Сменили текущую папку') else ShowMessage('Ошибка! Сменить папку не удалось');
CreateDir - функция, создает указанную в параметре папку. В случае успеха возвращает True, в случае неудачи - False. Неудача может случиться, если отсутствуют права на создание папки, например, диск доступен только для чтения, или такая папка уже существует. Функция описана в модуле SysUtils. Следующий пример будет успешным при первом обращении (если конечно, папку вообще можно создать), и неуспешном при последующих, так как такая папка уже будет:
if CreateDir('C:\Temp\MyNewDir') then ShowMessage('Создали новую папку') else ShowMessage('Ошибка! Создать папку не удалось');
ForceDirectories - функция, создает указанную папку и все недостающие папки. В случае успеха возвращает True, в случае неудачи - False. Функция описана в модуле SysUtils. В следующем примере на диске C: будет создана папка MyNewDir, а в ней - папка 123:
if ForceDirectories('C:\MyNewDir\123') then ShowMessage('Папки созданы') else ShowMessage('Ошибка создания папок');
RemoveDir - функция, удаляет указанную в параметре папку. Чтобы удаление было успешным, папка должна быть пустой. Если в параметре указан не абсолютный путь (вместе с адресом), функция пытается удалить указанную папку внутри текущей папки. В случае успеха возвращает True, в случае неудачи - False. Функция описана в модуле SysUtils. Пример использования:
if RemoveDir('C:\MyNewDir\123') then ShowMessage('Папка удалена') else ShowMessage('Ошибка удаления папки');
RmDir - процедура, удаляет указанную в параметре папку. В отличие от RemoveDir, не возвращает никаких значений и не может удалить текущую папку. При попытке удалить несуществующую папку вызывает ошибку программы, так что применять нужно только совместно с DirectoryExists, во избежание неприятных ошибок. А лучше всегда пользоваться RemoveDir. Пример использования:
RmDir('C:\MyNewDir\123');