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

Вниз

Запись в ini файл   Найти похожие ветки 

 
Pavelnk ©   (2015-05-21 15:05) [0]

У меня в программе пользовательские настройки записываются в 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;


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

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


 
Pavelnk ©   (2015-05-21 15:30) [2]

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


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

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


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

StringList вроде free.

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


 
Pavelnk ©   (2015-05-21 15:37) [5]

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


 
Pavelnk ©   (2015-05-21 15:40) [6]

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


 
Pavelnk ©   (2015-05-21 15:44) [7]

Почитал кое что, нашёл такой странный совет -
можно просто закрыть хэндл (если он более не нужен)
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;


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

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

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


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

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


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

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


 
Pavelnk ©   (2015-05-21 15:58) [11]

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

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;


 
Pavelnk ©   (2015-05-21 16:11) [12]

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


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

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

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

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


 
Pavelnk ©   (2015-05-21 16:41) [14]

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


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

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

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


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

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


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

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



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

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

Наверх




Память: 0.5 MB
Время: 0.023 c
15-1454051466
KSergey
2016-01-29 10:11
2017.01.15
Тормоза с EnterCriticalSection в 32-х битном приложении на x64 ОС


15-1457472602
Юрий
2016-03-09 00:30
2017.01.15
С днем рождения ! 9 марта 2016 среда


3-1308531630
Дмитрий С
2011-06-20 05:00
2017.01.15
Mysql, большой blob. как лучше?


2-1420270918
Drowsy
2015-01-03 10:41
2017.01.15
IDE Object Inspector Font , Explorer


2-1432218936
Пауло Сержио
2015-05-21 17:35
2017.01.15
поиск по подчинённой таблице