![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Есть элементарная программа которая записывает в текстовый файл набор случайных символов. Выдаёт ошибку 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
|
||||
|
||||
|
Потому что файл открыт на чтение, а не на запись. В ошибке это и написано.
|
|
#3
|
|||
|
|||
|
чем можно заменить строку Reset(Tx1); чтобы файл был открыт на запись в него. Append не подходит поскольку записывает всё в конец файла, Rewrite тоже поскольку уничтожает файл переданный ему в параметрах?
|
|
#4
|
||||
|
||||
|
CreateFile с OPEN_ALWAYS
|
|
#5
|
||||
|
||||
|
Если я правильно понял задумку, то имелось в виду переписать все байты, не меняя размера. Тогда можно сначала получить размер файла, потом rewrite и писать циклом нужное количество байт.
|
|
#6
|
|||
|
|||
|
Rewrite сначала уничтожает файл если такой имеется на диске, а потом создает файл с таким же именем, но пустой. Это не подходит.
CreateFile создаёт новый файл, а нужно переписывать уже существующий. Последний раз редактировалось Pavel1988, 05.10.2014 в 17:21. |
|
#7
|
||||
|
||||
|
Цитата:
Цитата:
|