| 
| 
 | Вопрос # 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(), но тоже работает.
 Приложение:Переключить в обычный режим 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       end      else begin       end;end;
|  | Ответ отправил: Ilia Ermakov (статус: 1-ый класс)Время отправки: 4 ноября 2007, 02:33
 Оценка за ответ: 5
 Комментарий к оценке: спасибо |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 4 ноября 2007, 18:18; участников в обсуждении: 1. 
|   | 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |