BlockRead (Delphi)
From RAD Studio XE2 Code Examples
Language:
Description
This example reads an entire file into a buffer with one command and then writes it into a saved file. Validate the saved file contents.
Note: System.BlockRead and System.BlockWrite should be used with great care because untyped parameters can be the source of memory corruption. It is preferable to use newer functionality such as streams.
Code
procedure TForm1.Button1Click(Sender: TObject); var FromF, ToF: file; NumRead, NumWritten: Integer; Buf: array[1..2048] of Char; begin if OpenDialog1.Execute then { Display Open dialog box. } begin AssignFile(FromF, OpenDialog1.FileName); Reset(FromF, 1); { Record size = 1 } if SaveDialog1.Execute then { Display Save dialog box. } begin AssignFile(ToF, SaveDialog1.FileName); { Open output file. } Rewrite(ToF, 1); { Record size = 1 } Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF)) + ' bytes...'); repeat System.BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); until (NumRead = 0) or (NumWritten <> NumRead); // Use CloseFile rather than Close; Close is provided for backward compatibility. CloseFile(FromF); CloseFile(ToF); Canvas.TextOut(120, 10, ' done.'); end; end; end;
Uses
- System.BlockRead ( fr | de | ja )
- System.BlockWrite ( fr | de | ja )
- System.Close ( fr | de | ja )
- System.CloseFile ( fr | de | ja )
- Vcl.Dialogs.TSaveDialog ( fr | de | ja )
- System.Rewrite ( fr | de | ja )