Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 705

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!Подскажите пожалуйста как можно удалить все записи (секции) в ini-файле.

GAZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 18 июня 2008, 17:31
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Мережников Андрей

Здравствуйте, GAZ!
Можно сделать,например, так.
При успешном удалении всех секций функция вернет true.

Приложение:
  1. function DelSectionIni(const FN:string):boolean;
  2. var InFil:TIniFile;
  3. i:integer;
  4. ts:TStrings;
  5. begin
  6. Result:=true;
  7. try
  8. InFil:=TIniFile.Create(FN);
  9. ts:=TStrings.create;
  10. try
  11. try
  12. ReadSections(ts);
  13. for i:=0 to ts.count-1
  14. do EraseSection(ts.Strings[i]);
  15. except
  16. Result:=false;
  17. end;
  18. finally
  19. InFil.free;
  20. ts.free;
  21. end;
  22. except
  23. Result:=false;
  24. end;
  25. end;


Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 18 июня 2008, 18:08
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 18 июня 2008, 23:04; участников в обсуждении: 5.
GAZ

GAZ (статус: Посетитель), 18 июня 2008, 18:24 [#1]:

странно я думал что есть что то стандартное
Dron

Dron (статус: Студент), 18 июня 2008, 18:51 [#2]:

А вы файл удалите, да и всё. Результат-то один и тот же. Зато по времени - явно быстрее.
С уважением.
GAZ

GAZ (статус: Посетитель), 18 июня 2008, 18:55 [#3]:

А он так же как обычный удаляется
Dron

Dron (статус: Студент), 18 июня 2008, 19:02 [#4]:

А он что, не файл что ли? За что вы его так обидели?
Все файлы, вообще-то, одинаковы и подход ко всем один :-)
С уважением.
iPharaon

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

iPharaon (статус: 1-ый класс), 18 июня 2008, 19:34 [#7]:

Не знаю =) Главное работает... Я таким методом редко пользуюсь.
Вадим К

Вадим К (статус: Академик), 18 июня 2008, 23:04 [#8]:

Мда, удалять содержимое файл таким образом...
Для ини файла можно просто удалить его вообще. Никакой ошибки потом при открытии не будет. А по попытке записать что то в него, он будет создан.
А удалить файл, как не странно, можно функцией DeleteFile(имя)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.02 сек.