Главная страница
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.027 c
3-48932
qwerty2
2002-12-22 00:56
2003.01.16
Вопрос по SQL (заглавные/строчные буквы)


1-49032
Геннадий
2003-01-07 22:26
2003.01.16
Обработка OnMouseMove для TRadioGroup - КАК ?


3-48930
oleon
2002-12-20 12:27
2003.01.16
Шифрование пароля для доступа к БД.


1-49090
ScableR
2003-01-03 02:56
2003.01.16
Помогите разобраться в вопросе с Delphi & MySQL


1-48997
coder-lamer
2003-01-07 01:36
2003.01.16
Очень простой вопрос.