Лекция 14. Адрес и имя файла 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекция 14. Адрес и имя файла



В этой лекции вы познакомитесь с функциями обработки адреса и имени файла, конвертирующими его в различные форматы. Изучите тип Variant. Напишите приложение по конвертации имени файла.

Тип Variant

Бывают случаи, когда на этапе программирования мы еще не можем четко определить тип данных определенной переменной. В таком случае можно воспользоваться очень мощным типом Variant. Этот тип вводился в Delphi для поддержки технологии OLE (Object Link and Embedding – внедрение и связь объектов). Такая технология широко используется в Windows для обмена данными между приложениями различного типа. С помощью OLE происходит вставка таблицы MS Excel в редактор текстов MS Word, или картинка из Paint легко вставляется в тот же редактор. В этой технологии Variant используется на каждом шагу, однако ему можно найти применение и в других случаях.

Переменные типа Variant могут принимать значения любого типа! Вы присваиваете такой переменной что угодно, а программа сама определяет ее тип на этапе выполнения. Давайте рассмотрим пример:

var

V: Variant;

begin

V:= 5; //присвоили целое число

V:= 'Это текст'; //присвоили строку

V:= True; //логический тип

V:= 3.14; //вещественный тип

end;

В этом примере во время выполнения программы тип переменной изменится 4 раза, и код выполнится корректно. Когда программа встречает тип Variant, она автоматически выделяет под нее память. Если значение не задано, переменной присваивается ноль.

Совет: старайтесь использовать тип Variant только там, где это действительно необходимо! За удобство использования такой переменной тоже приходится платить. Переменная такого типа занимает значительно больше памяти, чем переменная любого другого типа. Процессору мы тоже задаем лишнюю работу, ведь сначала нужно определить тип данных в переменной, затем присвоить этот тип самой переменной, и т.п. Кроме того, переменные типа Variant очень сложно отлаживать в больших программах. Складывая, к примеру, строку и целое число, вы можете получить совсем не тот результат, который ожидали!

Рассмотрим пример:

var

v1, v2, v3: Variant;

begin

v1:= '1';

v2:= '5';

v3:= 10;

v1:= v1 + v2 + v3;

end;

Как вы считаете, какой результат окажется в конце концов в переменной v1? На первый взгляд, результат очевиден: число 16. Однако не спешите с выводами. Когда операторы вычисления имеют равный приоритет, они выполняются слева – направо. В данном примере вначале объединятся строки, в результате чего получится строка "15". Затем эта строка преобразуется в целое число, и к нему будет прибавлено число 10. Поэтому результат сложения – число 25.

Функции для работы с именем файла

Любая серьезная программа обязательно работает с каким-либо файлом, или даже с множеством файлов. Программы для обработки с базами данных напрямую связаны с таблицами и индексами, которые представляют собой файлы различных форматов, редакторы текста работают с текстовыми файлами, а графические редакторы – с графическими. Все эти программы могут работать с настроечными файлами – файлами, в которых программа сохраняет пользовательские настройки, а при загрузке считывает их.

Там, где приходится работать с файлами, требуется уметь обрабатывать и имя файла: вычленять только имя или только адрес файла, диск, на котором файл находится, или расширение имени файла. Ниже представлен список функций, которые позволяют решить все эти задачи.

Функция ExtractFileName()

Функция возвращает имя файла без имени диска и каталогов, извлекая его из полного имени файла FileName. В качестве параметра указывается полный путь и имя файла.

Пример:

var

S: string;

begin

...

S:= ExtractFileName('C:\DIR1\myfile.txt'); // S = 'myfile.txt'

...

end;

Функция ExtractFilePath()

Функция возвращает путь к файлу, извлекая его из полного имени файла. Если имя файла не содержит ни имя каталогов, ни имя диска, то функция возвращает пустую строку. Подобное же действие выполняет функция ExtractFileDir(). Отличие этих функций в том, что в конце возвращаемого адреса функции ExtractFilePath() есть знак "\", а функция ExtractFileDir() этот знак не устанавливает:

var

S: string;

begin

...

S:= ExtractFilePath('C:\DIR1\DIR2\myfile.zzz'); //S ='C:\DIR1\DIR2\'

S:= ExtractFileDir('C:\DIR1\DIR2\myfile.zzz'); //S ='C:\DIR1\DIR2'

S:= ExtractFilePath('myfile.zzz'); //S =''

...

end;



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 241; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.144.197 (0.005 с.)