Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
3-48860
Def
2002-12-23 17:04
2003.01.16
TADOTable


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


14-49234
hatchy
2002-12-26 12:58
2003.01.16
Label................................................


14-49281
volph7777
2002-12-27 10:42
2003.01.16
Hash-функция


14-49297
VID
2002-12-26 02:05
2003.01.16
В помощь....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский