Читаем Delphi. Трюки и эффекты полностью

Листинг 4.13.

Определение имени временного файла

function GetTempFile(prefix: String = \'~mytmp\'): String;

var

buffer, dir: String;

begin

dir := GetTempDir();

//Получение имени временного файла (система сама определяет

имя,

//уникальное для заданной папки)

SetLength(buffer, MAX_PATH + 1);

GetTempFileName(PAnsiChar(dir), PAnsiChar(prefix), 0,

PAnsiChar(buffer));

GetTempFile := buffer;

end;

Приведенная в листинге 4.13 функция в качестве папки для временных файлов использует папку Temp. Однако функцию GetTempFileName можно использовать для получения имен файлов в пределах любой папки.

Кроме пути папки, в которой необходимо создать временный файл, функция GetTempFileName принимает строку-префикс для имени временного файла и целочисленное значение (третий параметр). Если третий параметр не равен нулю, то его значение в шестнадцатеричной форме просто прибавляется справа к строке prefix. Никаких проверок на уникальность получившегося имени файла при этом не производится. Если же третий параметр установить в 0, то система сама сформирует шестнадцатеричное значение так, чтобы имя файла было уникальным в заданной папке. Кроме того, при этом создается и сам файл.

Буфер (последний параметр функции GetTempFileName) должен вмещать как минимум МАХРАТН символов, так как функция записывает в него полный путь временного файла.

Пример работы функций определения папки для временных файлов, получения имени для временного файла, а также определения системных папок Windows приводится на рис. 4.2.

Рис. 4.2. Папки WINDOWS, system, Temp и имя для временного файла

Прочие системные пути

В Windows существует ряд других системных путей, которые так или иначе могут пригодиться. Определяются они не менее просто, чем пути к системным папкам (листинг 4.14).

...

Листинг 4.14. Определение прочих системных путей

function GetSpecialDir(dirtype: Integer): String;

var

buffer: String;

begin

SetLength(buffer, MAX_PATH + 1);

SHGetSpecialFolderPath(0, PAnsiChar(buffer), dirtype, False);

GetSpecialDir := buffer;

end;

Здесь используется функция командной оболочки файловой системы (Windows Shell) SHGetSpecialFolderPath, ее объявление находится в модуле ShlObj. Среди параметров этой функции самыми значимыми для нас (кроме буфера длиной минимум МАХРАТН символов для помещения в него пути) являются два последних. Третий параметр функции SHGetSpecialFolderPath используется для указания того, расположение какой именно папки нас интересует. Если четвертый параметр функции SHGetSpecialFolderPath не равен False, то запрошенная папка будет создана, если до этого она не существовала.

Пример использования функции GetSpesialDir для составления списка (в элементе управления ListView) некоторых системных путей приведен в листинге 4.15. Из него вы также сможете узнать имена целочисленных констант, идентифицирующих некоторые папки.

...

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Мейерс , Скотт Майерс

Программирование, программы, базы данных / Программирование / Книги по IT