После запуска программы есть окно с полем Memo и 2-е кнопки. Изначально текстовые данные берутся из файла №1 и помещаются в поле Memo, 1 кнопка читает по строкам содержимое файла №1, а 2-я соответственно из файла №2 и замещает предыдущие данные в поле Memo новыми. Чтобы на лету можно было сохранять изменённые данные в Memo я добавил функцию сохранения в файлы по каждому нажатию на кнопки.
Но проблема в том, что первом же нажатии выскакивает ошибка "I/O Error 105" в коде строки: Rewrite(f);
Вот небольшой фрагмент текста кода:
Код:
unit MySecondProject;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile;
fName: String[80]
buf: String[80];
i: Integer;
zzz: String[20];
begin
AssignFile(f, zzz); // - Почему переменная zzz не запомнила значения
Rewrite(f); // Вот здесь выскакивает ошибка
for i:=0 to Memo1.Lines.Count-1 do
writeln(f, Memo1.Lines[i]);
CloseFile(f);
AssignFile(f, 'test\1.txt');
{$I-}
Reset(f);
{$I+}
if IOResult <> 0 then
begin
MessageDlg('Ошибка доступа к файлу ' + fName,
mtError,[mbOk],0);
exit;
end;
Memo1.Text:= '';
while not EOF(f) do
begin
readln(f, buf);
Memo1.Lines.Add(buf);
end;
Memo1.Lines.Add(zzz);
CloseFile(f); // закрыть файл
zzz := 'test\1.txt';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
f: TextFile;
fName: String[80]
buf: String[80];
i: Integer;
zzz: String[20];
begin
AssignFile(f, zzz);
Rewrite(f);
for i:=0 to Memo1.Lines.Count-1 do
writeln(f, Memo1.Lines[i]);
CloseFile(f);
AssignFile(f, 'test\1.txt');
{$I-}
Reset(f);
{$I+}
if IOResult <> 0 then
begin
MessageDlg('Ошибка доступа к файлу ' + fName,
mtError,[mbOk],0);
exit;
end;
Memo1.Text:= '';
while not EOF(f) do
begin
readln(f, buf);
Memo1.Lines.Add(buf);
end;
Memo1.Lines.Add(zzz);
CloseFile(f); // закрыть файл
zzz := 'test\2.txt';
end;
procedure TForm1.FormCreate(Sender: TObject);
var
f: TextFile;
fName: String[80];
buf: String[80];
zzz: String[20];
begin
fName:= 'test\1.txt';
AssignFile(f, fName);
{$I-}
Reset(f);
{$I+}
if IOResult <> 0 then
begin
MessageDlg('Ошибка доступа к файлу ' + fName,
mtError,[mbOk],0);
exit;
end;
// чтение из файла
memo1.Text:= '';
while not EOF(f) do
begin
readln(f, buf);
Memo1.Lines.Add(buf);
end;
CloseFile(f);
zzz := 'test\1.txt';
end;
end.
Admin: Пользуемся тегами!
Помогите разобраться новичку.