Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

Delphi: Как загрузить настройки программы из файла?

Июль 3, 2013

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

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

Открываем Delphi и создаем новый проект;
Далее используются события OnShow и OnClose;
Создаем событие OnShow. В данном примере программа загружает свои настройки из файла sett.ini, который находится в папке с программой. Код события выглядит следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.FormShow(Sender: TObject); 
 Var j:file of Integer; // файловая переменная, тип integer 
 k:Integer; // целочисленная переменная 
begin 
 AssignFile(j,'sett.ini'); 
 {$I-} // Отключаем сообщения об ошибках 
 Reset(j); 
 {$I+} // Включаем сообщения об ошибках
 if IOResult<>0 then Exit; 
 Read(j,k); //считываем из файла значение 
 Form1.Top:=k; // верхняя граница окна 
 Read(j,k); 
 Form1.Left:=k; // левая граница окна 
 Read(j,k); 
 Form1.Width:=k; // ширина окна 
 Read(j,k); 
 Form1.Height:=k; // высота окна 
 CloseFile(j); 
end;

Событие OnClose будет сохранять необходимые настройки в файл при закрытии программы. Его код выглядит следующим образом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
Var j:file of Integer; // файловая переменная, тип integer
begin 
AssignFile(j,'sett.ini'); // Привязываем файл к файловой переменной
{$I-} // Отключаем сообщения об ошибках  
Rewrite(j); // Открываем файл
{$I+} // Включаем сообщения об ошибках
if IOResult<>0 then Exit; // Если возникала ошибка то экстренно завершаем работу программы
Write(j,Form1.Top); // Записываем координаты окна по верикали 
Write(j,Form1.Left); // Записываем координаты окна по горизонтали 
Write(j,Form1.Width); // Записываем ширину
Write(j,Form1.Height); // Записываем высоту
CloseFile(j); // Закрываем файл
end;

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



8 Комментариев к записи Delphi: Как загрузить настройки программы из файла?

  1. Alex on 03.07.2013 at 14:46

    А что специально созданные для этого классы и годами отлаженные уже не в моде?

    • Артём Кашеваров on 04.07.2013 at 00:49

      Я не хочу грузить новичков новыми классами и пр. Сделали по простому)

      • Alex on 04.07.2013 at 13:10

        И это не правильно. Лучше не грузить тогда в таком разрезе. Для статьи о работе с файлами годится. Если тема сохранение настроек — так и надо говорить о правильном подходе. В крайнем случае стоит упомянуть, что этот способ годится только для учебных целей и упомянуть про специально созданные классы. Чтоб те кому нужны реальные способы сохранения могли сами уже найти информацию в доке по названию классов.
        (Но самое лучшее либо сменить название темы либо содержание привести в соответствие с заголовком )

      • Alex on 04.07.2013 at 13:57

        Кстати, нужно проверять, но, возможно, при таком подходе нельзя копировать полученный ini файл с 64 битной системы на 32 битную, и наоборот.

        • Артём Кашеваров on 04.07.2013 at 19:35

          Можно и все норм будет =)

          • Артём Кашеваров on 04.07.2013 at 19:37

            значение integer в delphi 32 битное. для более длинных есть int64

          • Alex on 05.07.2013 at 13:13

            Уверен? Размерность integer в Delphi (и, кстати, во многих языках, платформозависимая), а int64 действительно имеет постоянный размер в памяти.

            32 бита занимают LongInt и LongWord.

            Я могу. конечно, ошибаться (в плане размера int в Delphi), но уверен в правоте на 90%.

          • Артём Кашеваров on 05.07.2013 at 18:27

            Он может в будущем измениться но пока что 32. источник — www.delphibasics.ru/Integer.php и www.delphibasics.co.uk/Article.asp?Name=Numbers

Добавить комментарий для Alex Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.