Учебный центр "ANIT Texno Inform"
Опубликован: 25.06.2014 | Доступ: свободный | Студентов: 2382 / 729 | Длительность: 24:39:00
Специальности: Программист
Лекция 20:

Тип TStringList. Работа с папками

< Лекция 19 || Лекция 20: 12 || Лекция 21 >

Работа с папками

В 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');
    
< Лекция 19 || Лекция 20: 12 || Лекция 21 >
Инга Готфрид
Инга Готфрид
Александр Скрябнев
Александр Скрябнев

Через WMI, или используя утилиту wmic? А может есть еще какие более простые пути...