Работа с файлами в Delphi - Форум
Пятница, 17.05.2024, 14:33 | Приветствую Вас Гость

Жми-форум обо всём

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 1 из 1
  • 1
Модератор форума: RoMkA29  
Форум » Кодинг » Delphi » Работа с файлами в Delphi (Работа с файлами в Delphi)
Работа с файлами в Delphi
RoMkA29Дата: Воскресенье, 12.05.2013, 23:42 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 264
Репутация: 3
Статус: Offline
Работа с файлами важная вещь в любом языке программирования. Работа с файлами в Delphi позволяет считывать, сохранять информацию, и выполнять другие действия с файлами. В Delphi поддерживаются все операции с файлами - создание, поиск, чтение и запись, переименование как файлов, так и к директорий. В Delphi существует несколько способов работы с файлами.

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

Каждая строка компонентов ListBox и ComboBox является объектом Items, а Memo - Lines, где 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 (Работа с файлами в Delphi)
  • Страница 1 из 1
  • 1
Поиск:

Навигация
Block title
Форма входа

Наш бот
Наш бот информер

ICQ:636-921-022
Jabber:zhmibot@jabber.ru
Случайные картинки
Случайная музыка
[11.03.2013][mp3]
Johnyboy feat Ksenia - Метамфетамир (0)
Johnyboy feat Ksenia - Метамфетамир
[11.03.2013][mp3]
Жека Кто ТАМ - За груснявую любовь(Boston Prod) (0)
Жека Кто ТАМ - За груснявую любовь(Boston Prod)
[11.03.2013][mp3]
Johnyboy - Я не умею разговаривать с людьми (InDaBattle2 Round5) EFREET PROD (0)
Johnyboy - Я не умею разговаривать с людьми (InDaBattle2 Round5) EFREET PROD
Опрос
Вы нашли тут что искали?
Всего ответов: 17
Поиск
Обновление
  • Полезные советы для пользователей Windows XP (1)
  • Ключи для Kaspersky CRYSTAL 2013 до 2014 02 02 (2)
  • Network Traffic Monitor (1)
  • Букмекерская контора Betsstore (0)
  • Глючит компьютер,что делать?! (1)
  • Статистика


    Яндекс.Метрика
    Статистика