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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 1 083

/ вопрос решён /

Здрасти, Как проверить существует ли фаил (*txt) и если нет - то создать его?

Аксион Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Аксион (статус: 4-ый класс)
Вопрос отправлен: 3 ноября 2007, 18:26
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: ANBsoft

Здрав будь, Блазер!
Процедура дописывает строку в файл если он есть, и создает файл если его нет.
Procedure SaveToMyFile(s:String);
Var f:TextFile;
Begin
AssignFile(f,'Debug.txt');
if FileExists('Debug.txt') then Append(f)
else Rewrite(f);
writeln(f,s);
CloseFile(f);
End;

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 3 ноября 2007, 18:50
Оценка за ответ: 5

Комментарий к оценке: спс

Ответ #2. Отвечает эксперт: Николай Рубан

Здравствуйте, Блазер!

Можно воспользоваться стандартной функцией проверки на существование файла - FileExists(), которая возвращает значени TRUE, если файл существует и FALSE в противном случае.


Например так:
var FileName:string;
f:TextFile;
begin
...
FileName:='c:\temp1.txt'; //имя необходимого файла
if not FileExists(FileName) then
begin
AssignFile(f,FileName);
Rewrite(f);
CloseFile(f);
end;
...
end;
...


Good Luck!!!

Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 3 ноября 2007, 18:52
Оценка за ответ: 5

Комментарий к оценке: спасибки

Ответ #3. Отвечает эксперт: Ilia Ermakov

Здравствуйте, Блазер!
А можно сделать как в приложении, это конечно больший изврат, чем FileExists(), но тоже работает.

Приложение:
  1. var
  2. ChechHFile: THandle;
  3. begin
  4. ChechHFile:=CreateFile(pchar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
  5. if ChechHFile=INVALID_HANDLE_VALUE then begin
  6.  
  7. end
  8. else begin
  9.  
  10. end;
  11. end;


Ответ отправил: Ilia Ermakov (статус: 1-ый класс)
Время отправки: 4 ноября 2007, 02:33
Оценка за ответ: 5

Комментарий к оценке: спасибо

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

Всего сообщений: 1; последнее сообщение — 4 ноября 2007, 18:18; участников в обсуждении: 1.
Ilia Ermakov

Ilia Ermakov (статус: 1-ый класс), 4 ноября 2007, 18:18 [#1]:

" если нет - то создать его? "
Да, Насчет как создать, можно воспользоваться той же функцией, но с другими параметрами: GENERIC_WRITE и CREATE_ALWAYS.

var
ChechHFile: THandle;
begin
ChechHFile:=CreateFile(pchar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
if ChechHFile=INVALID_HANDLE_VALUE then begin
// Файла нет
ChechHFile:=CreateFile(pchar(FileName),GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_ALWAYS,0,0);
end
else begin
// Файл есть
end;
end;

//В конце не забудь закрыть хэндл
CloseHandle(ChechHFile);

31 января 2011, 19:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

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

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