Форум программистов, компьютерный форум, киберфорум
Olga28
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

Сохранение и загрузка настроек в Delphi

Запись от Olga28 размещена 17.06.2022 в 20:39

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
     procedure ReplaceString(st: String);
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
 f1:textfile;
 str1,str2,str3:String;
begin
 str1:=Edit1.Text;
 str2:=Edit2.Text;
 str3:=Edit3.Text;
 AssignFile(f1, 'settings.txt');
 Rewrite(f1);
 Writeln(f1, str1+'|'+str2+'|'+str3);
 CloseFile(f1);
end;
 
procedure TForm1.ReplaceString(st: String);
var t:TStringList;
begin
  t:=TStringList.create; //создаём класс 
  t.text:=stringReplace(st,'|',#13#10,[rfReplaceAll]);
//мы заменяем все символы(вертикальная черта) 
//на символы конца строки 
//теперь можно убедится, что строка разбита на элементы: 
 
   Edit1.Text:=t[0];
   Edit2.Text:=t[1];
   Edit3.Text:=t[2];
  //после работы надо уничтожить класс
  t.free; 
end;
 
procedure TForm1.FormShow(Sender: TObject);
var
  f  : TextFile;
  st : String;
begin
 AssignFile(f, 'settings.txt');
  Reset(f);
  while not eof(f) do
  begin
    ReadLn(f, st);
    ReplaceString(st);
  end;
  CloseFile(f);
end;
 
end.
Размещено в Без категории
Показов 545 Комментарии 6
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Если нужно сохранять в файл, то есть же готовый 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 на форуме
  2. Старый комментарий
    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 Olga28 вне форума
  3. Старый комментарий
    Аватар для Rius
    ini файлы были ещё в том веке.
    https://www.cyberforum.ru/delphi/thread492230.html
    https://www.cyberforum.ru/wind... 16848.html

    Потом xml.
    Потом json.
    Где-то в то же время настройки писали в базы данных.
    Запись от Rius размещена 18.06.2022 в 21:58 Rius вне форума
  4. Старый комментарий
    Rius, и что использовать для хранения настроек?
    Запись от Olga28 размещена 18.06.2022 в 23:45 Olga28 вне форума
  5. Старый комментарий
    Аватар для Rius
    Поизучать, что для этого за прошедшие года придумали люди.
    Всё опробовать.
    Потом выбирать сообразно ситуации.
    Запись от Rius размещена 18.06.2022 в 23:49 Rius вне форума
  6. Старый комментарий
    А что за это время придумали люди кроме ini файлов, xml, json и баз данных? Просто самому интересно взять на вооружение. Быть в струе времени, так сказать.
    Запись от CoderHuligan размещена 19.06.2022 в 18:31 CoderHuligan вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru