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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2007, 20:12   #1
grey
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.10.2007
Сообщений: 36
По умолчанию Вывод некоторых параметров из *.ini (или *.txt) файлов в поля Label

Всем привет.
У меня такая проблема.
Необходимо осуществить вывод некоторых параметров из *.ini файла в Label(n).
С созданием формы и диалогом для открытия файла я разобрался. Не могу осуществить вывод параметров.
Приму любую помощь, как конкретную, так и ссылки.

За ранее благодарен.

PS
Зачем мне это нужно? На работе программа обслуживающая оборудование сохраняет свои настройки в *.ini файлы (объёмом 38~96 kB и примерно в 4500 строк). Понятно, что просмотреть это вручную глобально. Мне необходимо визуализировать только особо важные параметры.

Отрывок из *.ini:
---
...
aoLAuxMovDelay=0
aoLAuxMovDuration=0
[frmHeatersCompact]
txtMaterial=Mat.1
PROZone_0=35
DNEGZone_0=10
DPOSZone_0=10
PREZone_1=140
PROZone_1=165
DNEGZone_1=15
DPOSZone_1=15
PREZone_2=140
PROZone_2=170
DNEGZone_2=15
...
---
grey вне форума Ответить с цитированием
Старый 24.10.2007, 20:35   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
//создаешь переменную
var
IniF: TIniFile;
//..............
//создать объект-файл
IniF:=TIniFile.Create('путь к ini файлу');
//читать из файла
X:=IniF.ReadInteger('секция','параметр',значение по умолчанию если параметр не найден);
S:=IniF.ReadString('секция','параметр','значение по умолчанию если параметр не найден');
//писать в файл
IniF.WriteInteger('секция','параметр',значение);
IniF.WriteString('секция','параметр','значение');
//удалить объект-файл
IniF.Free;
Ну, а с Label думаю разберешься

-----------------------------------
еще там есть
ReadSection('секция',Str); //записывает в Str имена всех параметров из секции
ReadSections(Str); //записывает в Str имена всех секций
здесь Str: TStrings, список строк

Последний раз редактировалось _Dmitry; 24.10.2007 в 20:48.
_Dmitry вне форума Ответить с цитированием
Старый 24.10.2007, 21:02   #3
grey
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.10.2007
Сообщений: 36
По умолчанию

Не понимаю :(
Сразу спотыкаюсь об TIniFile

procedure TForm1.Button1Click(Sender: TObject);

var
IniF: TIniFile;


При компиляции выдаёт ошибку:
[Ошибка] Unit1.pas(85): Undeclared identifier: 'TIniFile'
Хотя если заменить TIniFile на TextFile, то эта стока проходит.

Последний раз редактировалось grey; 24.10.2007 в 22:07.
grey вне форума Ответить с цитированием
Старый 24.10.2007, 23:08   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от grey Посмотреть сообщение
Не понимаю
Сразу спотыкаюсь об TIniFile

procedure TForm1.Button1Click(Sender: TObject);

var
IniF: TIniFile;


При компиляции выдаёт ошибку:
[Ошибка] Unit1.pas(85): Undeclared identifier: 'TIniFile'
Хотя если заменить TIniFile на TextFile, то эта стока проходит.
Не надо пугаться...
Просто нужно ручками прописать в разделе USES модуля еще один - INIFILES...
И все будет оки...
mihali4 вне форума Ответить с цитированием
Старый 25.10.2007, 20:29   #5
grey
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.10.2007
Сообщений: 36
По умолчанию

Спасибо, помогло :)
Но дальше опять застрял, не могу сам разобраться, сколько ни бьюсь, и в имеющейся инфе ни чего подходящего не нашёл.
Я хотел использовать станд. диалоговое окно выбора файла. Пример взял из книги и переделал под себя:
Код:
// щелчок на кнопке Открыть
procedure TForm1.Button1Click(Sender: TObject);

var
   IniF: TIniFile;       // Создал переменную IniF файл
   fName: String[80]; // имя файла
   buf: String[80];


begin
   if not OpenDialog1.Execute
    then { пользователь закрыл диалог
           щелчком на кнопе Отмена }
         exit;

   // пользователь выбрал файл
   fName := OpenDialog1.FileName;
   Form1.Caption := fName;
   AssignFile(IniF, fName);
[Ошибка] Unit1.pas(99): Incompatible types (Несовместимые типы)

Если оставить
Код:
AssignFile(f, fName);
как в книге
то [Ошибка] Unit1.pas(99): Undeclared identifier: 'f' (Необъявленный идентификатор: 'f')

PS
Окно выбора необходимо, т.к. *.ini файлы имеют разные имена (при сохранении настроек наладчик сам задаёт произвольное имя "рецепта") и могут находиться в разных местах.
grey вне форума Ответить с цитированием
Старый 25.10.2007, 20:36   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

IniF это не файловая переменная, это объект класса TIniFile для работы с ini файлами, он создается следующим образом IniF:=TIniFile.Create('путь к ini файлу'); это вместо AssignFile
У вас будет:
IniF:=TIniFile.Create(fName);
после создания этого объекта можете читать и писать в этот файл, например, читать значение параметра PROZone_1 из секции frmHeatersCompact
X:=IniF.ReadInteger('frmHeatersComp act','PROZone_1',100);
после выполнения X=165, как вы написали выше, если по каким-то причинам этого параметра нет в файле X=100.
Если для работы использовать обычный текстовый файл, как вы пытаетесь делать, то вам самому придеться писать функции для поиска строк в файле, анализа этих строк, чтобы взять значение параметра и т.п.

Последний раз редактировалось _Dmitry; 25.10.2007 в 21:01.
_Dmitry вне форума Ответить с цитированием
Старый 25.10.2007, 20:57   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Пример взял из книги и переделал под себя:
Любезный, вы уж не мельчите так...
У вас что, разрешение экрана 640х480?
Ни черта же не видно!
mihali4 вне форума Ответить с цитированием
Старый 25.10.2007, 21:47   #8
grey
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.10.2007
Сообщений: 36
По умолчанию

Цитата:
IniF это не файловая переменная, это объект класса...
То есть в моём случае наверное лучше работать с этими файлами как с тектовыми ? Просто программа управления машиной сохраняет "рецепты" в эти файлы, а в именах присутствуют такие условности как дата, сырьё, производительность и т.п. В папке может лежать несколько десятков таких *.ini. Хотя та программа (написана на VBasic) может загружать настройки из любого файла используя собственный диалог.
Вариант с прописыванием адреса мне ни как не подходит.
Придётся как с текстовым париться...

Цитата:
Любезный, вы уж не мельчите так...
У вас что, разрешение экрана 640х480?
Ни черта же не видно!
Извините, я в Opera сижу. Увеличение 150%. У меня всё так громоздко. Я из экономии места :) На этом форуме я новичёк. Спасибо за замечание: мельчить больше не буду.

PS
Opera
Версия 9.21
Сборка 641
Платформа Linux
Система i686, 2.6.17-13mdv
Прошу сильно не смеяться :)
grey вне форума Ответить с цитированием
Старый 26.10.2007, 14:16   #9
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Придётся как с текстовым париться...
Зачем писать то, что за нас уже написали программисты из Borland-а?
Держи, в качестве примера, работающую программу. Файл test.ini создан по вашим данным (post #1).
Вложения
Тип файла: zip ini_test.zip (214.1 Кб, 66 просмотров)
_Dmitry вне форума Ответить с цитированием
Старый 26.10.2007, 20:09   #10
grey
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.10.2007
Сообщений: 36
По умолчанию

Цитата:
Держи, в качестве примера, работающую программу...
_Dmitry, боооольшое тебе (Вам) спасибо:)
Я честно говоря со всей серьёзностью взялся за изучение незнакомого (до этого баловался только скриптами в Линуксе и скриптами InqSoft Sign 0f Misery под Виндовс), а тут уже за меня всё написано. Осталось только форму расписать под хохлому :)
Сегодня пока на работе был, строил планы: приду домой, заставлю программу сначала скопировать любой файл в C:\\temp_\1.ini , а потом читать его по заранее заданному адресу.

Ещё раз огромное спасибо и тебе и этому форуму :)
grey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт и удаление некоторых строк Alex2008 Microsoft Office Excel 3 06.05.2008 18:26
Вывод в label forumu Помощь студентам 9 19.11.2007 21:36
нужна помошь новичку. не могу получить вывод в label. Cor88 Общие вопросы Delphi 12 30.09.2007 20:19
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23
Вывод графики с использованием отображаемых файлов Евгения Общие вопросы Delphi 1 20.02.2007 20:37