Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > io error 1784


Автор: KasheyBro 26.11.2009, 04:36
Код

type
  TMyData = Array[0..100]of Real;

//======================

type
  TMyClass = class(TObject)
  _data:TMyData;
  procedure SaveToFile();
end;

procedure TMyClass.SaveToFile();
   var f:File of TMyData;
   begin
     AssignFile(f, 'Test.dat');
     Reset(f);
     write(f,self._data);
     CloseFile(f);
end;



Вылезает IO error 1784, где косяк?

Автор: Frees 26.11.2009, 08:35
описание ошибки, может поможет
http://support.microsoft.com/kb/186553

Автор: KasheyBro 26.11.2009, 23:12
Frees: да я это уже видел, чет мыслей по этому поводу нет
Проблема в self._data:
Код

procedure TMyClass.SaveToFile();
var f:File of TMyData;
    d:TMyData;
    i:Integer;

begin
  for i:=0 to 63 do
  begin
    d[i]:=i;
  end;
  AssignFile(f, 'Test.dat');
  Reset(f);
  write(f,d);
  CloseFile(f);
end;

- так прекрасно пишет/читает файл

Код

var f:File of Real;
    d:TMyData;
    i:Integer;
begin
  AssignFile(f, 'Test.dat');
  Reset(f);
  for i:=0 to 63 do
  begin
    write(f,self._data[i]);
  end;
  CloseFile(f);
end;


- io error 1784. На self._data[i] ругается.
Почему я не могу в Write передавать собственные поля?


Или может свой тип данных можно как-то по другому записать?

Автор: Keeper89 27.11.2009, 00:15
KasheyBro, попробуйте убрать self..

Как вариант, можно сделать файл типизированным.

Автор: Teleport 27.11.2009, 00:19
Не уверен, в ответе - но все же я просто убрал перед data знак подчеркивания, что он меня смутил, потому как вначале стоит. Может в нем дело?? Или я не в ту степь ушел?
Код

type
  TMyData = Array[0..100]of Real;

type
  TMyClass = class(TObject)
  data:TMyData;
  procedure SaveToFile();
end;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TMyClass.SaveToFile();
var f:File of Real;
    d:TMyData;
    i:Integer;
begin
  AssignFile(f, 'Test.dat');
  Reset(f);
  for i:=0 to 63 do
  begin
    write(f,self.data[i]);
  end;
  CloseFile(f);
end;

end.



Этот код откомпилировался без проблем. 

Автор: pei7a 8.5.2011, 12:55
это ошибка возникает когда пишешь данные не соответствующих типов в буфер

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)