Нужно записать терхмерный динамический массив типа double. Пробую таким макаром:
Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TD3Array = array of array of array of Double;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var MyArray: TD3Array; MyFileStream: TFileStream; i: Integer; j: Integer; k: Integer; begin SetLength(MyArray,3,5,10); randomize;
for i := 0 to Length(MyArray) - 1 do for j := 0 to Length(MyArray[i]) - 1 do for k := 0 to Length(MyArray[i][j]) - 1 do MyArray[i][j][k] := Random(10)/100;
try MyFileStream := TFileStream.Create('c:\blabla.dat',fmOpenReadWrite); except MyFileStream := TFileStream.Create('c:\blabla.dat',fmCreate); end;
MyFileStream.WriteBuffer(MyArray,SizeOf(TD3Array)); MyFileStream.Free;
end;
procedure TForm1.Button2Click(Sender: TObject); var MyArray: TD3Array; MyFileStream: TFileStream; str: string;
begin // SetLength(MyArray,3,5,10); try MyFileStream := TFileStream.Create('c:\blabla.dat', fmOpenRead); except ShowMessage('Ошибка!'); Exit; end; str := 'Размер первого измерения: ' + IntToStr(Length(MyArray)); ShowMessage(str); MyFileStream.ReadBuffer(MyArray, SizeOf(TD3Array)); MyFileStream.Free; str := 'Размер первого измерения: ' + IntToStr(Length(MyArray)); ShowMessage(str); end;
end.
|
|