Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) File Read BlocksDemonstrates how to read a file in fixed-size blocks (except for the very last block).
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, CkByteData, FileAccess; ... procedure TForm1.Button1Click(Sender: TObject); var dataBlock: HCkByteData; facSrc: HCkFileAccess; facDest: HCkFileAccess; srcPath: PWideChar; destPath: PWideChar; success: Boolean; numBlocks: Integer; i: Integer; bEqual: Boolean; begin // Demonstrates how to read a file in blocks, // which can be useful when uploading to cloud storage // services such as Azure, S3, Google, etc. // For this example, we're simply writing the blocks // to an output file, and then checking to see if the // resulting file contents equals the original file contents. dataBlock := CkByteData_Create(); facSrc := CkFileAccess_Create(); facDest := CkFileAccess_Create(); srcPath := 'qa_data/xml/hamlet.xml'; destPath := 'qa_output/hamletOut.xml'; success := CkFileAccess_OpenForRead(facSrc,srcPath); success := CkFileAccess_OpenForWrite(facDest,destPath); // Assuming success for the example.. // How many 1024-byte blocks? (Including 1 for the last partial block) numBlocks := CkFileAccess_GetNumBlocks(facSrc,1024); i := 0; while (i < numBlocks) do begin success := CkFileAccess_ReadBlock(facSrc,i,1024,dataBlock); if (CkFileAccess_getLastMethodSuccess(facSrc) <> True) then begin Memo1.Lines.Add(CkFileAccess__lastErrorText(facSrc)); Exit; end; success := CkFileAccess_FileWrite(facDest,dataBlock); if (success <> True) then begin Memo1.Lines.Add(CkFileAccess__lastErrorText(facDest)); Exit; end; i := i + 1; end; CkFileAccess_FileClose(facSrc); CkFileAccess_FileClose(facDest); bEqual := CkFileAccess_FileContentsEqual(facSrc,srcPath,destPath); if (bEqual <> True) then begin Memo1.Lines.Add('Something went wrong!'); Exit; end; Memo1.Lines.Add('File successfully copied by blocks.'); CkByteData_Dispose(dataBlock); CkFileAccess_Dispose(facSrc); CkFileAccess_Dispose(facDest); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.