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

Вниз

Запись в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.048 c
3-1311236769
yurikon
2011-07-21 12:26
2017.01.15
Метод TADODataSet.Seek


15-1449526144
Kerk
2015-12-08 01:09
2017.01.15
Презентация Delphi в Питере


15-1453757404
Юрий
2016-01-26 00:30
2017.01.15
С днем рождения ! 26 января 2016 вторник


15-1456781401
Юрий
2016-03-01 00:30
2017.01.15
С днем рождения ! 1 марта 2016 вторник


15-1447436787
data
2015-11-13 20:46
2017.01.15
подскажите по my sql





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский