Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: INI-файл, открыть, отредактировать, сохранить  (Прочитано 4341 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shouldercannon
Помогающий

ru
Offline Offline

« : 09-05-2018 05:03 » 

Доброго времени суток!
Есть INI-файл, в котором может быть сколько угодно секций. Хочу для каждой секции создавать динамически GroupBox и стремя Edit, куда будут загружаться значения полей (Nomer, Priem, Vydacha) для последующего редактирования и сохранения обратно в INI-файл.
Код: (INI)
[Pos0]
Nomer=0101
Priem=9:00
Vydacha=9:30
[Pos1]
Nomer=0102
Priem=10:00
Vydacha=10:30
[Pos2]
Nomer=0103
Priem=11:00
Vydacha=11:30
Реализация получилась наполовину, без сохранения и ущербная с точки зрения кода.
Код: (Delphi)
procedure TFormMain.LoadStaff(Path: String);
var
  IniFile: TIniFile;
  SL: TStringList;
  I: Integer;
  MyLabel: TLabel;
  MyEdit: TEdit;
begin
  try
    IniFile := TIniFile.Create(Path);
    SL := TStringList.Create;
    try
      IniFile.ReadSections(SL);
      SetLength(GBArr, SL.Count);
      for I := 0 to SL.Count - 1 do
      begin
        // GroupBox
        GBArr[I] := TGroupBox.Create(ScrollBox1);
        GBArr[I].Parent := ScrollBox1;
        GBArr[I].Height := 58;
        GBArr[I].Width := 408;
        GBArr[I].Left := 4;
        GBArr[I].Top := 4 + ((I) * 62);
        GBArr[I].Caption := SL.Strings[I];
        // Labels
        MyLabel := TLabel.Create(GBArr[I]);
        MyLabel.Parent := GBArr[I];
        MyLabel.Left := 8;
        MyLabel.Top := 16;
        MyLabel.Caption := 'Номер';

        MyLabel := TLabel.Create(GBArr[I]);
        MyLabel.Parent := GBArr[I];
        MyLabel.Left := 142;
        MyLabel.Top := 16;
        MyLabel.Caption := 'Приём';

        MyLabel := TLabel.Create(GBArr[I]);
        MyLabel.Parent := GBArr[I];
        MyLabel.Left := 276;
        MyLabel.Top := 16;
        MyLabel.Caption := 'Выдача';
        // Edits
        MyEdit := TEdit.Create(GBArr[I]);
        MyEdit.Parent := GBArr[I];
        MyEdit.Width := 130;
        MyEdit.Left := 4;
        MyEdit.Top := 33;
        MyEdit.TabOrder := 0;
        MyEdit.Text := IniFile.ReadString(SL.Strings[I], 'Nomer', '');

        MyEdit := TEdit.Create(GBArr[I]);
        MyEdit.Parent := GBArr[I];
        MyEdit.Width := 130;
        MyEdit.Left := 138;
        MyEdit.Top := 33;
        MyEdit.TabOrder := 1;
        MyEdit.Text := IniFile.ReadString(SL.Strings[I], 'Priem', '');

        MyEdit := TEdit.Create(GBArr[I]);
        MyEdit.Parent := GBArr[I];
        MyEdit.Width := 130;
        MyEdit.Left := 272;
        MyEdit.Top := 33;
        MyEdit.TabOrder := 2;
        MyEdit.Text := IniFile.ReadString(SL.Strings[I], 'Vydacha', '');
      end;
    except
    end;
  finally
    FreeAndNil(IniFile);
    FreeAndNil(SL);
  end;
end;
Может у кого есть какие варианты реализации лучше?

* Безымянный.png (8.18 Кб - загружено 622 раз.)
« Последнее редактирование: 09-05-2018 05:06 от Shouldercannon » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-05-2018 09:33 » new

Загрузка одноразовая?
Много лет борланд в руках не держал, не помню, нужно ли там удалять подобные объекты.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines