|
Вопрос # 1 705/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!Подскажите пожалуйста как можно удалить все записи (секции) в ini-файле.
 |
Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 18 июня 2008, 17:31
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, GAZ!
Можно сделать,например, так.
При успешном удалении всех секций функция вернет true.
Приложение: Переключить в обычный режим- function DelSectionIni(const FN:string):boolean;
- var InFil:TIniFile;
- i:integer;
- ts:TStrings;
- begin
- Result:=true;
- try
- InFil:=TIniFile.Create(FN);
- ts:=TStrings.create;
- try
- try
- ReadSections(ts);
- for i:=0 to ts.count-1
- do EraseSection(ts.Strings[i]);
- except
- Result:=false;
- end;
- finally
- InFil.free;
- ts.free;
- end;
- except
- Result:=false;
- end;
- end;
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 18 июня 2008, 18:08
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 18 июня 2008, 23:04; участников в обсуждении: 5.
|
GAZ (статус: Посетитель), 18 июня 2008, 18:24 [#1]:
странно я думал что есть что то стандартное
|
|
Dron (статус: Студент), 18 июня 2008, 18:51 [#2]:
А вы файл удалите, да и всё. Результат-то один и тот же. Зато по времени - явно быстрее.
С уважением.
|
|
GAZ (статус: Посетитель), 18 июня 2008, 18:55 [#3]:
А он так же как обычный удаляется
|
|
Dron (статус: Студент), 18 июня 2008, 19:02 [#4]:
А он что, не файл что ли? За что вы его так обидели?
Все файлы, вообще-то, одинаковы и подход ко всем один
С уважением.
|
|
iPharaon (статус: 1-ый класс), 18 июня 2008, 19:11 [#5]:
Можно так:
procedure TForm1.Button1Click(Sender: TObject);
var
ini:TInifile;
str:TStringList;
i:integer;
begin
ini:=TIniFile.Create('C:\123.ini');
Str:=TStringList.create;
ini.ReadSections(Str);
for i:=0 to str.count-1 do
ini.EraseSection(str.Strings[i]);
str.free;
ini.free;
end;
Можно так:
procedure TForm1.Button1Click(Sender: TObject);
var
f:textfile;
begin
AssignFile(f,'C:\123.ini');
rewrite(f);
writeln(f,'');
closefile(f);
end;
Можно так:
DeleteFile('C:\123.ini');
|
|
Мережников Андрей (статус: Абитуриент), 18 июня 2008, 19:26 [#6]:
действительно, можно по разному. я потому и написал в своем ответе - например. iPharaon, а для чего во втором, приведенном Вами варианте строка writeln(f,''); можно ведь и без нее.
|
|
iPharaon (статус: 1-ый класс), 18 июня 2008, 19:34 [#7]:
Не знаю =) Главное работает... Я таким методом редко пользуюсь.
|
|
Вадим К (статус: Академик), 18 июня 2008, 23:04 [#8]:
Мда, удалять содержимое файл таким образом...
Для ини файла можно просто удалить его вообще. Никакой ошибки потом при открытии не будет. А по попытке записать что то в него, он будет создан.
А удалить файл, как не странно, можно функцией DeleteFile(имя)
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|