![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Цитата:
Цитата:
|
|
#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; |