Просмотр кода
Идентификатор: 98668008 Описание: Код загружен: 28 февраля 2011, 08:18 (min@y™)
program pXXXX; {$APPTYPE CONSOLE} uses SysUtils, Classes; type TMatrix = array of array of Integer; procedure FillMatrix(var X: TMatrix; const M, N: Cardinal); var Row, Col: Integer; begin SetLength(X, M, N); for Row:= 0 to M - 1 do for Col:= 0 to N - 1 do X[Row, Col]:= Random(10); end; procedure PrintMatrix(const X: TMatrix); var Row, Col: Integer; begin for Row:= 0 to High(X) do begin for Col:= 0 to High(X[0]) do Write(X[Row, Col]: 4); WriteLn; end; end; // Сохранение матрицы X в файл FileName function SaveMatrixToFile(const X: TMatrix; const FileName: string): Boolean; var Stream: TFileStream; RowCount, ColCount, xSize: Cardinal; begin RowCount:= Length(X); // Кол-во строк ColCount:= Length(X[0]); // Кол-во стролбцов xSize:= RowCount * ColCount * SizeOf(Integer); // Размер матрицы в байтах try Stream:= TFileStream.Create(FileName, fmCreate or fmShareExclusive); try Stream.Write(RowCount, SizeOf(Cardinal)); // Запись кол-ва строк Stream.Write(ColCount, SizeOf(Cardinal)); // Запись кол-ва столбцов Stream.Write(X[0, 0], xSize); // Запись матрицы finally Stream.Free(); end; Result:= True; except Result:= False; end; end; // Загрузка матрицы X из файла FileName function LoadMatrixFromFile(var X: TMatrix; const FileName: string): Boolean; var Stream: TFileStream; RowCount, ColCount, xSize: Cardinal; begin try Stream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try Stream.Read(RowCount, SizeOf(Cardinal)); // Чтение кол-ва строк Stream.Read(ColCount, SizeOf(Cardinal)); // Чтение кол-ва столбцов xSize:= RowCount * ColCount * SizeOf(Integer); // Размер матрицы в байтах SetLength(X, RowCount, ColCount); // Выделение памяти Stream.Read(X[0, 0], xSize); // Чтение матрицы finally Stream.Free(); end; Result:= True; except Result:= False; end; end; var X: TMatrix; const FileName = 'D:\Temp\Matrix.bin'; begin Randomize(); FillMatrix(X, 5, 6); WriteLn(' Source matrix:'#13#10); PrintMatrix(X); if SaveMatrixToFile(X, FileName) then WriteLn(#13#10' Saving to file ', FileName, ' - SUCCESS.') else begin WriteLn(#13#10' Saving to file ', FileName, ' - FAIL.'); ReadLn; Exit; end; if LoadMatrixFromFile(X, FileName) then begin WriteLn(#13#10' Loading form file ', FileName, ' - SUCCESS.'); WriteLn(#13#10' Loaded matrix:'#13#10); PrintMatrix(X); end else begin WriteLn(#13#10' Loading form file ', FileName, ' - FAIL.'); ReadLn; Exit; end; ReadLn; end.