Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2018, 23:12   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Как реализовать задуманное

Доброго времени суток!
Есть ini-файл со следующим содержимым:
PHP код:
[Pos0]
Nomer=6835
Priem
=9:00
Vydacha
=-
[
Pos1]
Nomer=3891
Priem
=9:00
Vydacha
=11:00
[Pos2]
Nomer=0258
Priem
=9:00
Vydacha
=12:00 
Эти данные нужно загрузить, отредактировать, сохранить.

Реализация:
Создать динамически GroupBox равное количеству секций. В каждом GroupBox создать динамически три Edit, в которые будут загружены данные из полей секций (Nomer, Priem, Vydacha). Далее редактирую данные в Edit и сохраняю обратно всё в ini.

Код:
var
  FormMain: TFormMain;
  GBArr: Array of TGroupBox;

implementation

{$R *.dfm}

procedure TFormMain.Button1Click(Sender: TObject);
begin
  LoadStaff('test');
end;

procedure TFormMain.LoadStaff(FName: String);
var
  IniFile: TIniFile;
  SL: TStringList;
  I: Integer;
  MyLabel: TLabel;
  MyEdit: TEdit;
begin
  try
    IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'staffs\' + FName + '.ini');
    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.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.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.Text := IniFile.ReadString(SL.Strings[I], 'Vydacha', '');
      end;
    except
    end;
  finally
    FreeAndNil(IniFile);
    FreeAndNil(SL);
  end;
end;

end.
Как теперь загруженное дело сохранить обратно и как удалить всё, что создал динамически?

Последний раз редактировалось Shouldercannon; 09.05.2018 в 07:42.
Shouldercannon вне форума Ответить с цитированием
Старый 09.05.2018, 01:22   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

За такую реализацию надо руки отрывать и в засовывать их писателю в анальное очко. Немедленно выбрось этот говнокод, а потом бери TTreeView и делай по-человечески.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.05.2018, 02:28   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Есть ini-файл со следующим содержимым:
Он вам с неба упал?
Или этот файл был создан некоей программой, которая реально работает с чем-то реальным?
northener вне форума Ответить с цитированием
Старый 09.05.2018, 07:38   #4
v258
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 25
По умолчанию

Методы TIniFile:

Чтение из файла - ReadString, ReadInteger, ReadBool
Запись в файл - WriteString, WriteInteger, WriteBool
Сохранение файла - UpdateFile
v258 вне форума Ответить с цитированием
Старый 09.05.2018, 07:46   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
За такую реализацию надо руки отрывать и в засовывать их писателю в анальное очко. Немедленно выбрось этот говнокод, а потом бери TTreeView и делай по-человечески.
Как грубо. Хотя бы на пример какой направили
Цитата:
Сообщение от northener Посмотреть сообщение
Он вам с неба упал?
Или этот файл был создан некоей программой, которая реально работает с чем-то реальным?
Задуманная программа и должна создавать такой ini-файл, а другая программа, которая уже есть получает из него данные и выводит в таблицу, созданную в RichView.
Shouldercannon вне форума Ответить с цитированием
Старый 09.05.2018, 10:11   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Задуманная программа и должна создавать такой ini-файл, а другая программа, которая уже есть получает из него данные и выводит в таблицу, созданную в RichView.
Так это меняет дело. Достаточно и TDrawGrid.
Только не говори, что программа, принимающая сформированный ini-файл, тоже твоя.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.05.2018, 13:03   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Так это меняет дело. Достаточно и TDrawGrid.
Только не говори, что программа, принимающая сформированный ini-файл, тоже твоя.
Моя. Там нет такой дичи в коде
Shouldercannon вне форума Ответить с цитированием
Старый 09.05.2018, 13:40   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Моя. Там нет такой дичи в коде
Тогда в двух программах и смысла нет.
А данные такого вида очень красиво и удобно хранить в XML. Куча моих боевых проектов юзают именно XML.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.05.2018, 15:09   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Всё не так просто. К одному ПК подключены два монитора. Первый монитор рабочий, на втором мониторе чисто таблица и больше там ничего не делают.
Чел в конфигураторе правит данные ini-файла, а таблица на втором мониторе через определённый промежуток времени берёт данные из того ini-файла. Потому и надобность в двух прогах.
Shouldercannon вне форума Ответить с цитированием
Старый 09.05.2018, 15:16   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Бть, ну и глупость! Какого хрена не сделать отдельное окно для правки данных в таблице и не расположить его (окно) в каком хочешь мониторе? Ну что за бред?!

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как такое вот, реализовать как на картине HellMercenariess Общие вопросы Delphi 4 28.01.2017 10:12
как реализовать такое же меню как и здесь KWNlnc Общие вопросы Delphi 7 08.06.2010 22:46
Как реализовать на с++ Xnet Общие вопросы C/C++ 1 27.05.2010 22:20
Кнопки как RadioButton'ы в GroupBox'e. Как реализовать? Casper-SC Общие вопросы .NET 9 06.03.2010 20:07
Игра,угадай задуманное число,Ошибка деления на ноль!!! Rid Помощь студентам 4 22.10.2009 21:12