Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.16;
Скачать: CL | DM;

Вниз

Проблема с ini файлом   Найти похожие ветки 

 
TAN   (2003-01-08 09:59) [0]

Не могу понять в чём дело, код программы примерно следующий.
При открытие формы

var
ini:TIniFile;
begin

ini:=TIniFile.Create(ExtractFilePath(Application.Exename) + "mbcl.ini");
Edit1.Text:=ini.ReadString("DataBase","HostName","localhost");
Edit2.Text:=ini.ReadString("DataBase","Database","msmeta");
Edit3.Text:=ini.ReadString("DataBase","User_Name","root");
Edit4.Text:=ini.ReadString("DataBase","Password","");
ini.Free;

При нажатие на кнопку сохранить

var
ini:TIniFile;
begin


ini:=TIniFile.Create(ExtractFilePath(Application.Exename) + "mbcl.ini");
ini.WriteString("DataBase","HostName",Edit1.text);
ini.WriteString("DataBase","Database",Edit2.text);
ini.WriteString("DataBase","User_Name",Edit3.text);
ini.WriteString("DataBase","Password",Edit4.text);
ini.Free;

А теперь сама проблема. Если изначально файла не существовало, он создаётся и всё работает нормально. Можно до потери пульса открывать и закрывать форму, нажимать на кнопку сохранить. Программа , как и надо, перезаписывает новые праметры в файл и выводит их на экран.

Но если файл уже существовал, то при нажатие на кнопку сохранить выводиться ошибка, немогу произвести запись в файл.
В чём дело понять не могу. Помогите плиз.


 
Song ©   (2003-01-08 10:06) [1]

Т.е. после запуска программы, если файл был записан ранее с помощью этого же куска кода, сразу же выдаётся ошибка?
Можно конечно сделать IF FileExists(ExtractFilePath(Application.Exename) + "mbcl.ini") then DeleteFile(ExtractFilePath(Application.Exename) + "mbcl.ini") а потом сохранять, но почему всё-таки проблема возникает не понятно.


 
gek ©   (2003-01-08 10:08) [2]

Вроде все правильно.А что за ошибка?


 
Anatoly Podgoretsky ©   (2003-01-08 10:12) [3]

Прямых ошибок в коде не наблюдается, за исключение полным пренебрежением возможными ошибками в рантайм, при первой же ошибке файл окажется открытым. Надо использовать защищенные блоки try finally end

Подобное обычно встречается у начинающих, они уверены, что у них программа будет работать без ошибок и они никак не защищают ресурсы.


 
Delirium^.Tremens ©   (2003-01-08 10:15) [4]


uses Registry;
...
var ini: TRegIniFile;
...
ini := TRegIniFile.Create("c:\windows\my.ini", KEY_ALL_ACCESS);

Во-первых, используй TRegIniFile - рекомендовано для win32, во-вторых, используй перезагруженный конструктор Create, который содержит параметр AAccess:LongWord, он определяет доступность для файла ini в системах "like NT".


 
TAN   (2003-01-08 10:35) [5]

Всем спасибо, сейчас буду пробывать реализовать ваши советы


 
Calm ©   (2003-01-08 13:01) [6]


> Во-первых, используй TRegIniFile - рекомендовано для win32

Кем рекомендавано???
Microsoft в рекомендациях по разработке ПО для win2k официально рекомендует использовать для созранения настроек приложения ini-файлы.


 
Delirium^.Tremens ©   (2003-01-08 13:19) [7]

Calm © (08.01.03 13:01)

> Кем рекомендавано???

Borland :-/



Страницы: 1 вся ветка

Текущий архив: 2003.01.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
3-48846
Maks
2002-12-23 14:04
2003.01.16
Winwows


1-49103
Makep
2002-12-31 03:08
2003.01.16
Цвет символов


3-48918
max1c
2002-12-18 04:30
2003.01.16
TTable без BDE


14-49251
Cr@sh
2002-12-24 19:19
2003.01.16
Меня загребают....2 - меня загребли...


14-49265
Свой
2002-12-25 11:20
2003.01.16
Какую ОС поставить