|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
I/O error 105 File not open for output. Ошибка 105 файл не открыт на вывод. Delphi 7
Есть элементарная программа которая записывает в текстовый файл набор случайных символов. Выдаёт ошибку 105. На строке Write(Tx1, RndChar);
Код:
procedure TForm1.Button1Click(Sender: TObject); var Tx1: TextFile; LogFile: TextFile; Report: string; RndNumOfChar: Byte; RndChar: Char; begin Randomize; AssignFile(Tx1, 'wea_wea.txt'); Reset(Tx1); AssignFile(LogFile, 'LogFile.txt'); Rewrite(LogFile); while not Eof(Tx1) do begin RndNumOfChar := 126 + Random(126); RndChar := Chr(RndNumOfChar); Write(Tx1, RndChar); end; CloseFile(Tx1); CloseFile(LogFile); end; Последний раз редактировалось M.A.D.M.A.N., 04.10.2014 в 13:03. |
#2
|
||||
|
||||
Потому что файл открыт на чтение, а не на запись. В ошибке это и написано.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
2
чем можно заменить строку Reset(Tx1); чтобы файл был открыт на запись в него. Append не подходит поскольку записывает всё в конец файла, Rewrite тоже поскольку уничтожает файл переданный ему в параметрах?
|
#4
|
||||
|
||||
CreateFile с OPEN_ALWAYS
Пишу программы за еду. __________________ |
#5
|
||||
|
||||
Если я правильно понял задумку, то имелось в виду переписать все байты, не меняя размера. Тогда можно сначала получить размер файла, потом rewrite и писать циклом нужное количество байт.
jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
|||
|
|||
3
Rewrite сначала уничтожает файл если такой имеется на диске, а потом создает файл с таким же именем, но пустой. Это не подходит.
CreateFile создаёт новый файл, а нужно переписывать уже существующий. Последний раз редактировалось Pavel1988, 05.10.2014 в 17:21. |
#7
|
||||
|
||||
Цитата:
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#8
|
||||
|
||||
Я вот только не понял, а на кой в этом коде LogFile?
Ну а если хочется изменять данные имеющегося файла, то можно так сделать: Код:
Var CharFile: File of Char; Ch: Char; i: Integer; begin AssignFile(CharFile, 'wea_wea.txt'); Reset(CharFile); for i := 0 to FileSize(CharFile) - 1 do begin Seek(CharFile, i); Ch := Chr(126 + Random(126)); Write(CharFile, Ch); end; CloseFile(CharFile); end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |