Главная страница
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.012 c
1-49069
Chainik
2003-01-08 13:07
2003.01.16
Variant does not reference an automation object


14-49310
Странник
2002-12-28 13:47
2003.01.16
И опять о лицензионности софта.


14-49221
Дмитрий К.К.
2002-12-29 07:46
2003.01.16
Именинники 29 декабря


3-48847
ВикторК
2002-12-09 15:24
2003.01.16
как вызвать запрос, сохраннный в файле Access ?


14-49254
Top Gun
2002-12-21 15:04
2003.01.16
Виснет ГТА3