Урок Delphi 7
Работа с файлами в Delphi

Компоненты для работы с файлами в Delphi


Компоненты работающие с файлами
Классическая работа с файлами
Диалоги выбора файлов
Определение размера файла
Поиск файлов
Таблица функций






Уроки Delphi
  1.  Первая программа
  2.  Использование компонентов
  3.  События Delphi
  4.  Типы данных Delphi
  5.  Создание своих типов данных
  6.  Выражения и операторы
  7.  Работа с файлами в Delphi
  8.  Дополнительные формы
  9.  Подпрограммы в Delphi
  10. Исключительные ситуации
  11. Взаимодействие приложения с пользователем
  12. Указатели в Delphi
  13. Обзор компонентов
  14. Работа со строками
  15. Создание интерфейса
  16. Графика в Delphi
  17. Многопоточность в Delphi
  18. Динамическое создание
        компонентов
Поиск по сайту




 Это важно:
   Метод Application.ProcessMessages;

 Это полезно:
   Параметр Sender в обработчиках событий;










Бояться не надо



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

   Для "лирического" вступления нужно упомянуть компоненты Delphi, которые умеют работать с файлами. Они читают и сохраняют своё содержимое, строки типа String, в файл текстового формата. Это компоненты ListBox, ComboBox и Memo, расположенные на первой же вкладке палитры компонентов.

   Каждая строка компонентов ListBox и ComboBox является объектом Items[i], а Memo - Lines[i], где i - номер строки, который отсчитывается от нуля. Добавление строк в компоненты выполняется методами Add и Insert:

Компоненты сохраняющие содержимое
  begin
   Memo1.Lines.Add('Первая строка');
   ComboBox1.Items.Add('Первая строка');
   ComboBox1.Items.Add('Вторая строка');
   ListBox1.Items.Add('Первая строка');
   ListBox1.Items.Add('Вторая строка');
  end ;



Метод Add добавляет новую строку в конец. Метод Insert имеет дополнительный параметр, указывающий, после какой строки разместить новую строку. Доступ к строкам осуществляется так:

   ComboBox1.Items[0] := 'Первая строка изменилась' ;
   ListBox1.Items[1] := 'Вторая строка изменилась' ;

У компонента ComboBox дополнительно есть свойство Text, где (как и у компонента Edit) находится вводимый текст:

   ComboBox1.Text := ' Вводимый текст ';

На выделенную в данный момент строку компонента ComboBox указывает свойство ItemIndex типа Integer, то есть это номер выделенной строки. Следовательно, получить саму выделенную строку компонента ComboBox можно следующей конструкцией:

   S:=ComboBox1.Items[ComboBox1.ItemIndex];

или, пользуясь оператором присоединения

   With ComboBox1 do
    S:=Items[ItemIndex];

Вот как по нажатию клавиши Enter можно заносить в этот компонент вводимую в строку информацию и удалять нажатием Escape:
Выделите на Форме ComboBox и перейдите в Инспектор объектов, на вкладку Events. Щёлкните дважды по обработчику OnKeyPress. Система Delphi создаст заготовку обработчика. Напишите:

  begin
   if Key=#13 then
      ComboBox1.Items.Add(ComboBox1.Text);
   if Key=#27 then
      ComboBox1.Items.Delete(ComboBox1.Items.Count-1);
  end ;

Key - определённая в этом обработчике переменная, содержащая код нажатой клавиши, #13 и #27 - коды клавиш Enter и Escape соответственно. Items.Count - количество содержащихся в компоненте строк. Так как отсчёт строк идёт от нуля, мы отнимаем единицу. После очередного удаления количество строк меняется, таким образом, Items.Count-1 всегда указывает на последнюю строку. Последовательно нажимая Escape, мы можем удалить все строки. Командой
   ComboBox1.Items.Delete(0);
можно добиться того же эффекта, только удаляться будут первые строки. Впрочем, чтобы стереть всё сразу, есть метод Clear!

Ну а теперь собственно о сохранении содержимого в файл. Для этого выполните команду

   ListBox1.Items.SaveToFile(' Имя_файла.txt ') ;

Впрочем, расширение можно поставить любое по желанию, не обязательно .txt, как и вообще без него обойтись. Но расширение .txt позволит легко открыть файл стандартным виндовским Блокнотом, что бывает очень удобно на этапе написания программы!
Для загрузки служит метод LoadFromFile:

   ListBox1.Items.LoadFromFile(' Имя_файла.txt ') ;

Что делать, если в своей программе мы не работаем с компонентами Combobox, ListBox или Memo, а сохранять информацию нужно? Берём один из компонентов и делаем его невидимым, для этого в Инспекторе Объектов ставим в свойство Visible значение False. Функциональность его от этого не изменится!

Последний штрих - создадим программу, сохраняющую своё положение на экране в момент закрытия и там же открывающуюся. Нам нужно сохранить два параметра - значения свойств Формы Left и Top, это расстояние от левого и верхнего краёв экрана соответственно. Значения эти выражаются в пикселах и имеют тип Integer. Необходимо перевести эти числа в строку (тип String) с помощью оператора IntToStr. Итак, разместите на Форме невидимый ListBox, щёлкните по пустому месту Формы, чтобы её свйства появились в Инспекторе объектов, и перейдите на вкладку Events. Щёлкните по обработчику OnClose и в созданной заготовке напишите:

  begin
   ListBox1.Items.Clear;
   ListBox1.Items.Add(IntToStr(Form1.Left));
   ListBox1.Items.Add(IntToStr(Form1.Top));
   ListBox1.Items.SaveToFile('MyFormPos.txt');
  end ;

Этот обработчик сохраняет положение Формы на экране. Теперь напишем обработчик, помещающий Форму на прежнее место при старте программы. Создайте заготовку обработчика события OnCreate. Это событие происходит в момент "создания" Формы операционной системой. В этот момент и нужно присваивать ей необходимые свойства. Пишите:

  begin
   if FileExists('MyFormPos.txt') then
    begin
     ListBox1.Items.LoadFromFile('MyFormPos.txt');
     Form1.Left:=StrToInt(ListBox1.Items[0]);
     Form1.Top:=StrToInt(ListBox1.Items[1]);
    end ;
  end ;

   В первой строке происходит проверка на существование файла, ведь если его не будет, произойдёт ошибка. Впрочем, программа после выдачи предупреждения откроется в том месте, где была на этапе проектирования, а при закрытии нужный файл будет воссоздан!
   Затем в логических скобках begin / end содержится сам код, который будет выполнен только приналичии файла MyFormPos.txt в папке с программой, так как используется относительный путь. Можно указать конкретное местоположение, например, C:\Program Files\MyProg\MyFormPos.txt.

   Проверку на существовование файла можно выполнить также с помощью контроля исключительных ситуаций. Если файл не существует, то произойдёт исключительная ситуация. Перехватив её с помощью специального оператора, мы сможем избежать ошибок в программе.

Конечно, профессиональные программы сохраняют своё положение в Реестре Windows. Но всему своё время.

   А пока "лирическое" вступление окончено.
Продолжение. Прямая работа с файлами.
Окончание. Диалоги открытия и сохранения файлов.


Выражения и операторы Delphi           В начало урока          Работа с дополнительными формами  

Уроки Delphi начинающим



Вопросы и комментарии (84)      Решение задач в Delphi

Оставить комментарий:

Имя  

Текст комментария

  





Интернет-магазин электрооборудования