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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 09:27   #1
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию Запись в ИНИ файл

ПРИВЕТСТВУЮ уважаемый читатель!!!))).
У меня такая проблема нужно сделать чтоб из ини файла выставлялись значения минимум и максимум для массива логического типа вот листинг:
Код:
DCB   : TDCB;
  CT:  TCommTimeouts;
  hPort : THandle;
  i:integer;
  ReadThread:TReadThread;
  Value:array[1..9] of real;
  Logic:array[1..7] of Logikal;
  sravnenie:array[1..3] of Logikal;
  tick:integer=0;
  tck_reg:Integer=0;
  Period_Reg:integer=100;
  Form1: TForm1;
  NamePatch:String;
  RegFileName:string;
  RegFile:TFileStream;
  str,st_file:string;
...

begin
for i:=1 To 7 do
 begin
  Logic[i].Value_V:=Value[i];
  If   (Logic[i].Value_V>=-0.5) and (Logic[i].Value_V<=0.5) Then Logic[i].Value_Log:=0;
  If   (Logic[i].Value_V>=4.5) and (Logic[i].Value_V<=5.5) Then Logic[i].Value_Log:=1;
  If    Logic[i].Value_Log=0 Then Logic[i].Indikator.Brush.Color:=clLime;
  If    Logic[i].Value_Log=1 Then Logic[i].Indikator.Brush.Color:=clRed;
 end;
 end;
...
procedure TForm1.FormCreate(Sender: TObject);
var
Ini: Tinifile;
begin

Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'NetronPow.ini');
???
Ini.Free;
end;
...
procedure TForm1.FormDestroy(Sender: TObject);
var
  Ini: Tinifile;
begin
  //создали файл в директории программы
  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'NetronPow.ini');
  Ini.WriteBool('Диапазон дрейфа нуля','Мин',???);
  Ini.WriteBool('Диапазон дрейфа нуля','Макс',???);
  Ini.WriteBool('Диапазон','Мин',???);
  Ini.WriteBool('Диапазон','Макс',???);
  Ini.Free;
end;

Нужно сделать чтоб Logic[i].Value_V выставлялось в ИНИ файле

Нужно сделать чтоб Logic[i].Value_V выставлялось в ИНИ файле
СПС за ранее
С ув. КуевПрогер)))

Последний раз редактировалось KuevProger; 16.04.2009 в 09:56.
KuevProger вне форума Ответить с цитированием
Старый 16.04.2009, 10:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: of Logikal; - нет такого типа.
Во-вторых: Ini.WriteBool('Диапазон дрейфа нуля','Мин', Logic[i].Value_V);
В-третьих: В следующий раз тему с подобним названием удалю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.04.2009, 12:08   #3
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Во-первых: of Logikal; - нет такого типа.
Во-вторых: Ini.WriteBool('Диапазон дрейфа нуля','Мин', Logic[i].Value_V);
В-третьих: В следующий раз тему с подобним названием удалю.
Код:
type
Logikal=record
Value_V:real;
Value_Log:byte;
Indikator:TShape;
Ind_Name:TLabel;
shape:TShape;
sravn_Name:TLabel;
Цитата:
Сообщение от Stilet Посмотреть сообщение
Во-вторых: Ini.WriteBool('Диапазон дрейфа нуля','Мин', Logic[i].Value_V);
так не канает...

Последний раз редактировалось Stilet; 16.04.2009 в 12:31.
KuevProger вне форума Ответить с цитированием
Старый 16.04.2009, 12:30   #4
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Цитата:
так не канает...
Код:
    Ini.WriteFloat('Диапазон дрейфа нуля','Мин', Logic[i].Value_V);
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 16.04.2009, 12:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так не канает...
Ха. Естественно. И не будет канать, у тебя ни одного нет типа BOOLEAN.
Цитата:
массива логического типа
Логический - это Булевский.
Либо записывай запись как набор байт, либо каждое поле по отдельности.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 09:19   #6
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию

Код:
procedure Logical_indikator;
var
i:integer;
Ini: Tinifile;
begin
for i:=1 To 7 do
 begin
  Logic[i].Value_V:=Value[i];
  ini:=TiniFile.Create(extractfilepath(paramstr(0))+'NetronPow.ini');
>>>>>If   (Logic[i].Value_V>=Ini.ReadFloat('Diapazon','Dreyf_nill_min','')) and (Logic[i].Value_V<=Ini.ReadFloat('Diapazon','Dreyf_nill_max','')) Then Logic[i].Value_Log:=0;
  If   (Logic[i].Value_V>=4.5) and (Logic[i].Value_V<=5.5) Then Logic[i].Value_Log:=1;
  Ini.Free;
  If	Logic[i].Value_Log=0 Then Logic[i].Indikator.Brush.Color:=clLime;
  If	Logic[i].Value_Log=1 Then Logic[i].Indikator.Brush.Color:=clRed;
 end;
 end;
[Error] U_Main.pas(296): Incompatible types: 'Double' and 'String'
Я понимаю что идет несовместимость типов но что сделать хз...
Имеется ввиду ReadFloat на что надо заменить?

Последний раз редактировалось KuevProger; 17.04.2009 в 09:26.
KuevProger вне форума Ответить с цитированием
Старый 17.04.2009, 09:36   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А хелп кто читать будет?
Цитата:
function ReadFloat (const Section, Ident: String; Default: Double): Double;
А ты в этом параметре строку пустую поставил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 10:00   #8
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А хелп кто читать будет?

А ты в этом параметре строку пустую поставил.
а что мне туда писать надо если я хочу данные считать с ини???
Код:
rocedure TVisioThread.Execute;
var
i:integer;
Ini: Tinifile;
begin
For i:=1 To 9 Do
begin
ini:=TiniFile.Create(extractfilepath(paramstr(0))+'NetronPow.ini');
Form2.SG_Reistr.Cells[0,0]:=Ini.ReadString('names','chanell1','');
Form2.SG_Reistr.Cells[0,1]:=Ini.ReadString('names','chanell2','');
Form2.SG_Reistr.Cells[0,2]:=Ini.ReadString('names','chanell3','');
Form2.SG_Reistr.Cells[0,3]:=Ini.ReadString('names','chanell4','');
Form2.SG_Reistr.Cells[0,4]:=Ini.ReadString('names','chanell5','');
Form2.SG_Reistr.Cells[0,5]:=Ini.ReadString('names','chanell6','');
Form2.SG_Reistr.Cells[0,6]:=Ini.ReadString('names','chanell7','');
Form2.SG_Reistr.Cells[0,7]:=Ini.ReadString('names','chanell8','');
Form2.SG_Reistr.Cells[0,8]:=Ini.ReadString('names','chanell9','');
Ini.Free;
Form2.SG_Reistr.Cells[1,i-1]:=FloatToStr(value[i]);
end;
здесь вот работает...
KuevProger вне форума Ответить с цитированием
Старый 17.04.2009, 10:30   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
здесь вот работает...
Потому работает что для ReadString третий параметр строковый, и ты правильно его указал.
А для ReadFloat третим параметром число должно быть. Если тебе все равно то поставь туда 0, если функа не сможет считать из ИНИ тот параметр она вернет тебе этот 0.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 12:10   #10
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Потому работает что для ReadString третий параметр строковый, и ты правильно его указал.
А для ReadFloat третим параметром число должно быть. Если тебе все равно то поставь туда 0, если функа не сможет считать из ИНИ тот параметр она вернет тебе этот 0.
СПС вроде заработало)))
З.Ы хз че сам не догадался))
KuevProger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл soonner Общие вопросы Delphi 5 21.03.2009 01:12
Запись в файл Lemo Помощь студентам 3 01.03.2009 19:06
Ини файл ошибка(глюк или что?) dr.Chas Общие вопросы Delphi 10 18.06.2008 08:09
Запись в файл В_И_К_Т_О_Р Помощь студентам 9 30.01.2008 22:46
запись в файл Prisian Общие вопросы Delphi 6 24.07.2007 13:43