Середа, 01.05.2024, 00:01
Вітаю Вас Гість | Реєстрація | Вхід

Інформатика в Білицькій ЗОШ І - ІІІ ступенів №1

Меню сайту
Вхід на сайт
Наше опитування
Оцініть мій сайт
1. Відмінно
2. Непогано
3. Добре
4. Погано
5. Жахливо
Всього відповідей: 8
Друзі сайту
  • Білицька ЗОШ №1
  • Мої Білики
  • Урок Delphi 7

     

    Робота з файлами в Delphi

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

     Робота з файлами важлива річ в будь-якій мові програмування. Робота з файлами в Delphi дозволяє зчитувати, зберігати інформацію, і виконувати інші дії з файлами. У Delphi підтримуються всі операції з файлами - створення, пошук, читання і запис, перейменування як файлів, так і до директорій. У Delphi існує кілька способів роботи з файлами . 
       Для "ліричного" вступу потрібно згадати компоненти Delphi, які вміють працювати з файлами. Вони читають і зберігають свій вміст, рядки типу String , в файл текстового формату. Це компоненти ListBox ,ComboBox і Мемо, розташовані на першій же вкладці палітри компонентів. 

       Кожен рядок компонентів 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.

        Перевірку на існування файлу можна виконати також за допомогою контролю виняткових ситуацій (Урок 10). Якщо файл не існує, то відбудеться виняткова ситуація. Перехопивши її за допомогою спеціального оператора, ми зможемо уникнути помилок в програмі.

      Звичайно, професійні програми зберігають своє положення в Реєстрі Windows . Але всьому свій час.

        А поки "ліричний" вступ закінчено.

    Продовження. Пряма робота з файлами.

    Закінчення. Діалоги відкриття і збереження файлів.