Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в ini файл


Pavelnk ©   (2015-05-21 15:05:00) 

У меня в программе пользовательские настройки записываются в ini файл. Пишется всё нормально. Но потом программа мне пишет, что не моет получить доступ к ini файлу, так как он занят другим процессом. Что делать?

procedure TForm1.RadioButton4Click(Sender: TObject);
var
f:TStringList;
a:integer;
begin
f:=TStringList.Create();
f.LoadFromFile('nastr.ini');
a:=f.Count;
f.Strings[6]:='0';
f.SaveToFile('nastr.ini');
f.free;
end;


Pavelnk   (2015-05-21 17:15:00) [1]

Да, всё работает, всё ок) спасибо.


Pavelnk   (2015-05-21 16:58:00) [2]

> кгшзх ©   (21.05.15 16:53) [15]
> Прочитай при старте, сохрани при выходе.
о. идея)


кгшзх   (2015-05-21 16:53:00) [3]

Зачем дергать дисковый файл внутри RadioButton4 Click?

Прочитай при старте, сохрани при выходе.


Pavelnk   (2015-05-21 16:41:00) [4]

Тогда я по прежнему ничего не понимаю. Что за процесс держит nastr.ini после f.SaveToFile('nastr.ini').


кгшзх   (2015-05-21 16:34:00) [5]

Или нет, он то работает, то не работает.

Он не работает вообще. Достаточно заглянуть в исходники LoadFromFile и SaveToFile

С таким же успехом в промежутке между сохранением и чтением можно менять капшен какой-нибудь кнопки.
И тоже самое будет.
Иногда это будет помогать, а иногда нет. Потому что к проблеме ни то ни это никак не относится.


Pavelnk   (2015-05-21 16:11:00) [6]

Или нет, он то работает, то не работает.


Pavelnk   (2015-05-21 15:58:00) [7]

А совет сработал! -

procedure TForm1.RadioButton3Click(Sender: TObject);
var
f:TStringList;
a:integer; h: thandle;
begin

f:=TStringList.Create();
f.LoadFromFile('nastr.ini');
a:=f.Count;
f.Strings[6]:='1';

h := FileCreate(ExtractFilePath(Application.ExeName)+'/nastr.ini');
 if h <> INVALID_HANDLE_VALUE then closehandle(h);

f.SaveToFile('nastr.ini');
f.free;

end;


кгшзх   (2015-05-21 15:55:00) [8]

Почитал кое что, нашёл такой странный совет -
можно просто закрыть хэндл (если он более не нужен)
var h: thandle;
begin
h := FileCreate(ExtractFilePath(Application.ExeName)+'/base/admins.txt');


Pavelnk   (2015-05-21 15:53:00) [9]

> кгшзх ©   (21.05.15 15:47) [8]
> зачем тебе файлкриэйт,
Вот это особенно не понял, где там файлкриэйт?


кгшзх   (2015-05-21 15:47:00) [10]

привет, землянин.
зачем тебе файлкриэйт, если вызывается лоадфромфайл?

пишем программу путем случайных комбинаций знакомых слов?


Pavelnk   (2015-05-21 15:44:00) [11]

Почитал кое что, нашёл такой странный совет -
можно просто закрыть хэндл (если он более не нужен)
var h: thandle;
begin
 h := FileCreate(ExtractFilePath(Application.ExeName)+'/base/admins.txt');
 ...
 if h <> INVALID_HANDLE_VALUE then closehandle(h);
 ...
 richedit1.Lines.LoadFromFile(Application.ExeName)+'/base/admins.txt');
end;


Pavelnk   (2015-05-21 15:40:00) [12]

> Token   (21.05.15 15:30) [3]
> А TStringList это принципиально? А то есть TIniFile в модуле
> IniFiles,
Нет, вообщем не принципиально, но я что то не в курсе как этим TIniFile пользоваться.


Pavelnk   (2015-05-21 15:37:00) [13]

Вот именно, я не пойму что за процесс. Потом этот ини файл читается при запуске программы. И она сразу пишет что не может получить к нему доступ. Это значит какой то системный процесс? Я даже камп перезагрузил, всё равно пишет то же самое.


кгшзх   (2015-05-21 15:33:00) [14]

StringList вроде free.

Написано же по-русски " другимпроцессом занято"


Token   (2015-05-21 15:30:00) [15]

Кхм... А TStringList это принципиально? А то есть TIniFile в модуле IniFiles, поудобнее будет и формат будет соблюдаться. А так надо поскать, что за процесс блокирует.


Pavelnk   (2015-05-21 15:30:00) [16]

> кгшзх ©   (21.05.15 15:17) [1]
> а угадай что надо делать если файл занят другим процессом
Что? Что то я не в курсе. Вообще эту ситуацию не пойму. StringList вроде free.


кгшзх   (2015-05-21 15:17:00) [17]

а угадай что надо делать если файл занят другим процессом


Наверх

Титульная страница Поиск, карта сайта Написать письмо