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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2012, 14:29   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
Счастье Проблема с InI

Привет. Пишу к программе открытие и сохранение настроек из ini. Пишу на Delphi 7. Вот код сохранения:
Код:
procedure TForm1.SaveSet(D, E: integer; Dir: String);
var
s, t, i: Integer;
begin
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'Volume.ini') then
begin
DeleteFile(ExtractFilePath(Application.ExeName) + Dir + 'Volume.ini');
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Volume.ini');
Rewrite(f1);
Write(f1, D);
CloseFile(f1);
end
else
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Volume.ini');
Rewrite(f1);
Write(f1, D);
CloseFile(f1);
end;
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'Atribute.ini') then
begin
DeleteFile(ExtractFilePath(Application.ExeName) + Dir + 'Atribute.ini');
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Atribute.ini');
Rewrite(f1);
Write(f1, E);
CloseFile(f1);
end
else
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Atribute.ini');
Rewrite(f1);
Write(f1, E);
CloseFile(f1);
end;
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'FormLeft.ini') then
begin
s:=Form1.Left;
DeleteFile(ExtractFilePath(Application.ExeName) + Dir + 'FormLeft.ini');
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'FormLeft.ini');
Rewrite(f1);
Write(f1, s);
CloseFile(f1);
end
else
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'FormLeft.ini');
Rewrite(f1);
Write(f1, s);
CloseFile(f1);
end;
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'FormTop.ini') then
begin
t:=Form1.Top;
DeleteFile(ExtractFilePath(Application.ExeName) + Dir + 'FormTop.ini');
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'FormTop.ini');
Rewrite(f1);
Write(f1, t);
CloseFile(f1);
end
else
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'FormTop.ini');
Rewrite(f1);
Write(f1, t);
CloseFile(f1);
end;
Eqws[1]:=trackbar3.Position;
Eqws[2]:=trackbar4.Position;
Eqws[3]:=trackbar5.Position;
Eqws[4]:=trackbar6.Position;
Eqws[5]:=trackbar7.Position;
Eqws[6]:=trackbar8.Position;
Eqws[7]:=trackbar9.Position;
Eqws[8]:=trackbar10.Position;
Eqws[9]:=trackbar11.Position;
Eqws[10]:=trackbar12.Position;
for i:=1 To 10 Do
begin
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'Eqwelizer' + inttostr(i)+ '.ini') then
begin
w:=Eqws[i];
DeleteFile(ExtractFilePath(Application.ExeName) + Dir + 'Eqwelizer' + inttostr(i)+ '.ini');
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Eqwelizer' + inttostr(i)+ '.ini');
Rewrite(f1);
Write(f1, w);
CloseFile(f1);
end
else
begin
w:=Eqws[i];
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Eqwelizer' + inttostr(i)+ '.ini');
Rewrite(f1);
Write(f1, w);
CloseFile(f1);
end;
end;
end;
Массив глобальный вот он:
Код:
Eqws: array [1..10] of  Integer;
w: integer;
И открытие:
Код:
procedure TForm1.OpenSet(Dir: String);
var
D, E, s, t, i: integer;
begin
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'Volume.ini') then
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Volume.ini');
Reset(f1);
read(f1, D);
trackbar1.Position:=D;
CloseFile(f1);
end;
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'Atribute.ini') then
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Atribute.ini');
Reset(f1);
read(f1, E);
trackbar2.Position:=E;
CloseFile(f1);
end;
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'FormLeft.ini') then
begin
AssignFile(f1,ExtractFilePath(Application.ExeName) + Dir + 'FormLeft.ini');
Reset(f1);
read(f1, s);
Form1.Left:=s;
CloseFile(f1);
end;

if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'FormTop.ini') then
begin
AssignFile(f1,ExtractFilePath(Application.ExeName) + Dir + 'FormTop.ini');
Reset(f1);
read(f1, t);
Form1.Top:=t;
CloseFile(f1);
end;
for i:=1 To 10 Do begin
if FileExists(ExtractFilePath(Application.ExeName) + Dir + 'Eqwelizer1.ini') then
begin
AssignFile(f1, ExtractFilePath(Application.ExeName) + Dir + 'Eqwelizer1.ini');
Reset(f1);
read(f1, w);
Eqws[i]:=w;
CloseFile(f1);
end;
end;
trackbar3.Position:=Eqws[1];
trackbar4.Position:=Eqws[2];
trackbar5.Position:=Eqws[3];
trackbar6.Position:=Eqws[4];
trackbar7.Position:=Eqws[5];
trackbar8.Position:=Eqws[6];
trackbar9.Position:=Eqws[7];
trackbar10.Position:=Eqws[8];
trackbar11.Position:=Eqws[9];
trackbar12.Position:=Eqws[10];
end;
Процедуру OpenSet применил в Form.Create, а SaveSet в Form.Close. Dir-это деректория, которая создается при старте формы. Проблема в том что сохраняются и загружаются правильно только первые две настройки, а остальные ставятся так: FormTop и FormLeft на 0, а с 3 по 12 трекбары на максимум. Как это исправить? Использовать только этот способ сохранения и открытия, можно сохранение и открытие настроек с 3 по 12 трекбары зацыклить. Прошу вас... Очень надо.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 23.09.2012, 14:33   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

конечно сори что это очень много кода. Кстати других методов сохранение не придлагать. Только этот:
Код:
AssigkFile(переменая обозначение, полный путь к файлу);
Rewrite(переменая обозначение);
Write(переменая обозначение, переменая обозначающая то что записывается);
СloseFile(переменая обозначение);
Метод с переменой типа iniFile мне не надо. Потому что она мне дает кучу ошибок и сбой иницилизации потока.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 23.09.2012, 15:10   #3
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

А я бы лучше советовал разобраться с ошибкой с TInifile, чем писать столько много кода...
Delphi_ProGer вне форума Ответить с цитированием
Старый 23.09.2012, 15:14   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Delphi_ProGer Посмотреть сообщение
А я бы лучше советовал разобраться с ошибкой с TInifile, чем писать столько много кода...
если я применю TiniFile, то у меня будут куча ошибок вылизать и не иницилизироватся паток.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 23.09.2012, 15:20   #5
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Покажи фрагмент кода считивания с ини -файла с помощью TIniFile.
Delphi_ProGer вне форума Ответить с цитированием
Старый 23.09.2012, 15:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то у меня будут куча ошибок вылизать и не иницилизироватся паток.
Тогда однозначно забудь о нем )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2012, 16:13   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
Счастье

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда однозначно забудь о нем )
Может проблема из-за того что с 3 по 12 трек-бары находятся на pagecontrol.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 23.09.2012, 16:45   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может проблема из-за того что с 3 по 12 трек-бары находятся на pagecontrol.
А может тебе всетки стоит научиться использовать отладчик и работать с трассировкой кода?
Данные в файле небось посторочно расположены?
Если да то не read а readln нужно использовать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2012, 16:51   #9
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

проблема в отсутствии тех самых "прямых рук" про ктороые Вы в подписи пишите. Для работы с ini-файлами в Delphi есть 2 класса TIniFile и TMemIniFile - вот их и используйте.
Написали бы какие ошибки у Вас возникали при использвании этих классов - проблема бы быстрее решилась.
Не хотите классы для работы с ini используйте TStringList.
astecenko вне форума Ответить с цитированием
Старый 23.09.2012, 17:13   #10
hacker_007
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 17
По умолчанию

Ну как можно не уметь работать с TIniFile???? КАК? там же три строки всего для чтения и записи......
hacker_007 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема со StringGrid и INI Zuba C++ Builder 9 03.05.2012 14:55
Проблема с ini Zuba C++ Builder 4 26.04.2012 10:28
Проблема с файлами ini WinMen Общие вопросы Delphi 3 08.11.2010 10:43
Проблема с чтением из INI файла JustKurt Общие вопросы Delphi 3 04.08.2009 20:47