Сохранение и загрузка настроек в Delphi
Запись от Olga28 размещена 17.06.2022 в 20:39
|
Всего комментариев 6
Комментарии
-
Если нужно сохранять в файл, то есть же готовый TIniFile в модуле IniFiles. И использовать его легко. Пример сохранения и загрузки размеров и состояния формы:
Delphi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } procedure LoadConfig; procedure SaveConfig; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin LoadConfig; end; procedure TForm1.FormDestroy(Sender: TObject); begin SaveConfig; end; procedure TForm1.LoadConfig; const wmax: array[boolean] of TWindowState = (wsNormal, wsMaximized); var ini: TIniFile; begin ini := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); if WindowState = wsNormal then begin Left := ini.ReadInteger('Main', 'MainLeft' , Left ); Top := ini.ReadInteger('Main', 'MainTop' , Top ); Width := ini.ReadInteger('Main', 'MainWidth' , Width ); Height := ini.ReadInteger('Main', 'MainHeight', Height); end; WindowState := wmax[ini.ReadBool('Main', 'MainMaximized', WindowState = wsMaximized)]; ini.Free; end; procedure TForm1.SaveConfig; var ini: TIniFile; begin ini := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); ini.WriteBool('Main', 'MainMaximized', WindowState = wsMaximized); if WindowState = wsNormal then begin ini.WriteInteger('Main', 'MainLeft' , Left ); ini.WriteInteger('Main', 'MainTop' , Top ); ini.WriteInteger('Main', 'MainWidth' , Width ); ini.WriteInteger('Main', 'MainHeight', Height); end; ini.Free; end; end.
Запись от AzAtom размещена 18.06.2022 в 00:47 -
AzAtom, Правильно я все поняла, работа со строками:
Delphi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } procedure LoadConfig; procedure SaveConfig; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.LoadConfig; const wmax: array[boolean] of TWindowState = (wsNormal, wsMaximized); var ini: TIniFile; path, par1,par2:String; begin //ChangeFileExt(Application.ExeName, '.ini') ini := TIniFile.Create(GetCurrentDir + '\config.ini'); if WindowState = wsNormal then begin path := ini.ReadString('Main', 'MainPath' , 'Ошибка при чтении!' ); par1 := ini.ReadString('Main', 'MainParam1', 'Ошибка при чтении!' ); par2 := ini.ReadString('Main', 'MainParam2' , 'Ошибка при чтении!' ); Edit1.Text:=path; Edit2.Text:=par1; Edit3.Text:=par2; end; WindowState := wmax[ini.ReadBool('Main', 'MainMaximized', WindowState = wsMaximized)]; ini.Free; end; procedure TForm1.SaveConfig; var ini: TIniFile; begin //ChangeFileExt(Application.ExeName, '.ini') ini := TIniFile.Create(GetCurrentDir + '\config.ini'); ini.WriteBool('Main', 'MainMaximized', WindowState = wsMaximized); if WindowState = wsNormal then begin ini.WriteString('Main', 'MainPath' , Edit1.Text ); ini.WriteString('Main', 'MainParam1' , Edit2.Text ); ini.WriteString('Main', 'MainParam2' , Edit3.Text ); end; ini.Free; end; procedure TForm1.FormDestroy(Sender: TObject); begin SaveConfig; end; procedure TForm1.FormCreate(Sender: TObject); begin LoadConfig; end; end.
Запись от Olga28 размещена 18.06.2022 в 16:32 -
ini файлы были ещё в том веке.
https://www.cyberforum.ru/delphi/thread492230.html
https://www.cyberforum.ru/wind... 16848.html
Потом xml.
Потом json.
Где-то в то же время настройки писали в базы данных.Запись от Rius размещена 18.06.2022 в 21:58 -
Rius, и что использовать для хранения настроек?
Запись от Olga28 размещена 18.06.2022 в 23:45 -
Запись от Rius размещена 18.06.2022 в 23:49 -
А что за это время придумали люди кроме ini файлов, xml, json и баз данных? Просто самому интересно взять на вооружение. Быть в струе времени, так сказать.
Запись от CoderHuligan размещена 19.06.2022 в 18:31