TCkFileAccess Delphi ActiveX Reference Documentation
TCkFileAccess
Current Version: 10.0.0
API for reading and writing files, creating and deleting directories, deleting directory trees, splitting and re-joining large files, etc. This is a freeware class. The reason for its existence is that in some programming languages, file I/O API's are limited or difficult to understand/use. This API provides an identical FILE I/O API across all programming languages supported by Chilkat.
Importing the Chilkat ActiveX into Delphi
Important: When upgrading to a new version of Chilkat, make sure to re-imported ActiveX DLL into Delphi to regenerate the files described below.
Chilkat v9.5.*: If using Chilkat v9.5.*, then use "Chilkat_v9_5_0_TLB" instead of "Chilkat_TLB", and the DLLs are named ChilkatAx-9.5.0-win32.dll (or ChilkatAx-9.5.0-x64.dll).
Two things are required to use an ActiveX in Delphi:
- The ActiveX DLL needs to be registered via regsvr32 on the system where the Delphi application runs. See How To Register ActiveX DLLs for detailed information.
- See also: ActiveX Registration Tutorial
- The ActiveX component needs to be "imported". Use the Delphi Import Component Wizard to import the Chilkat type library. This creates the following files: Chilkat_TLB.pas and Chilkat_TLB.dcr. The Chilkat_TLB.pas should be added to your project.
To import the Chilkat type library, do the following:
- In the Delphi RAD Studio, select the menu item "Component" --> "Import a Type Library".
- Find "Chilkat ActiveX" in the list and select it. This will only appear in the list if the ChilkatAx-win32.dll (or ChilkatAx-x64.dll) has been registered w/ regsvr32.
- Check the "Generate Component Wrappers" checkbox.
- Select a directory where the unit files (.pas and .dcr) should be generated.
- Select "Create Unit" and then "Finish".
- Add the .pas to your Delphi project.
To use a Chilkat ActiveX object in your Delphi code, add "Chilkat_TLB" to the "uses" statement. For example:
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
Object Creation
var obj: TCkFileAccess; ... begin obj := TCkFileAccess.Create(Self); ... // When finished, free the object instance. obj.Free();
Properties
CurrentDir
The current working directory of the calling process.
topDebugLogFilePath
If set to a file path, causes each Chilkat method or property call to automatically append it's LastErrorText to the specified log file. The information is appended such that if a hang or crash occurs, it is possible to see the context in which the problem occurred, as well as a history of all Chilkat calls up to the point of the problem. The VerboseLogging property can be set to provide more detailed information.
This property is typically used for debugging the rare cases where a Chilkat method call hangs or generates an exception that halts program execution (i.e. crashes). A hang or crash should generally never happen. The typical causes of a hang are:
- a timeout related property was set to 0 to explicitly indicate that an infinite timeout is desired,
- the hang is actually a hang within an event callback (i.e. it is a hang within the application code), or
- there is an internal problem (bug) in the Chilkat code that causes the hang.
EndOfFile
Returns 1 if the current open file is at the end-of-file.
topFileOpenError
This property is set by the following methods: FileOpen, OpenForRead, OpenForWrite, OpenForReadWrite, and OpenForAppend. It provides an error code indicating the failure reason. Possible values are:
- Success (No error)
- Access denied.
- File not found.
- General (non-specific) open error.
- File aleady exists.
- Path refers to a directory and the access requested involves writing.
- Too many symbolic links were encountered in resolving path.
- The process already has the maximum number of files open.
- Pathname is too long.
- The system limit on the total number of open files has been reached.
- Pathname refers to a device special file and no corresponding device exists.
- Insufficient kernel memory was available.
- Pathname was to be created but the device containing pathname has no room for the new file.
- A component used as a directory in pathname is not, in fact, a directory.
- Pathname refers to a regular file, too large to be opened (this would be a limitation of the underlying operating system, not a limitation imposed by Chilkat).
- Pathname refers to a file on a read-only filesystem and write access was requested.
FileOpenErrorMsg
The error message text associated with the FileOpenError code.
topLastBinaryResult
The binary data returned by the last (binary data returning) method called. Only available if Chilkat.Global.KeepBinaryResult is set to 1. This provides a means for obtaining large varbinary results in the SQL Server environment (where limitations exist in getting large amounts of data returned by method calls, but where temp tables can be used for binary properties).
topLastErrorHtml
Provides information in HTML format about the last method/property called. If a method call returns a value indicating failure, or behaves unexpectedly, examine this property to get more information.
topLastErrorText
Provides information in plain-text format about the last method/property called. If a method call returns a value indicating failure, or behaves unexpectedly, examine this property to get more information.
LastErrorXml
Provides information in XML format about the last method/property called. If a method call returns a value indicating failure, or behaves unexpectedly, examine this property to get more information.
topLastMethodSuccess
Indicate whether the last method call succeeded or failed. A value of 1 indicates success, a value of 0 indicates failure. This property is automatically set for method calls. It is not modified by property accesses. The property is automatically set to indicate success for the following types of method calls:
- Any method that returns a string.
- Any method returning a Chilkat object, binary bytes, or a date/time.
- Any method returning a standard boolean status value where success = 1 and failure = 0.
- Any method returning an integer where failure is defined by a return value less than zero.
Note: Methods that do not fit the above requirements will always set this property equal to 1. For example, a method that returns no value (such as a "void" in C++) will technically always succeed.
topLastStringResult
The string return value of the last (string returning) method called. Only available if Chilkat.Global.KeepStringResult is set to 1. This provides a means for obtaining large string results in the SQL Server environment (where limitations exist in getting long strings returned by method calls, but where temp tables can be used for string properties).
LastStringResultLen
The length, in characters, of the string contained in the LastStringResult property.
topLockFileOnOpen
Note: This property only applies for applications running on Windows.
If 1, then the following methods open files for exclusive-access: OpenForAppend, OpenForRead, OpenForReadWrite, OpenForWrite. When a file is opened for exclusive access, it is locked so that no other process may open the file. When the file is closed, the lock is released.
The default value of this property is 0.
topVerboseLogging
If set to 1, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. The default value is 0. Verbose logging should only be used for debugging. The potentially large quantity of logged information may adversely affect peformance.
topVersion
Methods
AppendAnsi
Appends a string using the ANSI character encoding to the currently open file.
Returns 1 for success, 0 for failure.
topAppendBd
AppendSb
Appends the contents of sb using the character encoding (such as "utf-8") specified by charset to the currently open file.
Returns 1 for success, 0 for failure.
topAppendText
Appends a string using the character encoding specified by str to the currently open file.
Returns 1 for success, 0 for failure.
topAppendUnicodeBOM
Appends the 2-byte Unicode BOM (little endian) to the currently open file.
Returns 1 for success, 0 for failure.
topAppendUtf8BOM
DirAutoCreate
Same as DirEnsureExists, except the argument is a file path (the last part of the path is a filename and not a directory). Creates all missing directories such that filePath may be created.
Returns 1 for success, 0 for failure.
topDirCreate
DirDelete
Deletes the directory specified by dirPath. It is only possible to delete a directory if it contains no files or subdirectories.
Returns 1 for success, 0 for failure.
topDirEnsureExists
Creates all directories necessary such that the entire dirPath exists.
Returns 1 for success, 0 for failure.
topDirExists
Returns 1 if the dirPath exists.
topFileClose
Closes the currently open file.
topFileContentsEqual
Compares the contents of two files and returns 1 if they are equal and otherwise returns 0. The actual contents of the files are only compared if the sizes are equal. The files are not entirely loaded into memory. Instead, they are compared chunk by chunk. This allows for any size files to be compared, regardless of the memory capacity of the computer.
topFileCopy
Copys existingFilepath to newFilepath. If failIfExists is 1 and newFilepath already exists, then an error is returned.
Returns 1 for success, 0 for failure.
topFileDelete
FileExists
Returns 1 if filePath exists, otherwise returns 0.
topFileExists3
Returns 1 if the file exists, 0 if the file does not exist, and -1 if unable to check because of directory permissions or some other error that prevents the ability to obtain the information.
topFileOpen
This method should only be called on Windows operating systems. It's arguments are similar to the Windows Platform SDK function named CreateFile. For Linux, MAC OS X, and other operating system, use the OpenForRead, OpenForWrite, OpenForReadWrite, and OpenForAppend methods.
Opens a file for reading or writing. The arguments mirror the Windows CreateFile function:
Access Modes: GENERIC_READ (0x80000000) GENERIC_WRITE (0x40000000) Share Modes: FILE_SHARE_READ(0x00000001) FILE_SHARE_WRITE(0x00000002) Create Dispositions CREATE_NEW 1 CREATE_ALWAYS 2 OPEN_EXISTING 3 OPEN_ALWAYS 4 TRUNCATE_EXISTING 5 // Attributes: FILE_ATTRIBUTE_READONLY 0x00000001 FILE_ATTRIBUTE_HIDDEN 0x00000002 FILE_ATTRIBUTE_SYSTEM 0x00000004 FILE_ATTRIBUTE_DIRECTORY 0x00000010 FILE_ATTRIBUTE_ARCHIVE 0x00000020 FILE_ATTRIBUTE_NORMAL 0x00000080 FILE_ATTRIBUTE_TEMPORARY 0x00000100
Returns 1 for success, 0 for failure.
topFileRead
Reads bytes from the currently open file. maxNumBytes specifies the maximum number of bytes to read. Returns an empty byte array on error.
Returns a zero-length byte array (as an OleVariant) on failure.
An empty array will have a VarArrayHighBound of -1 meaning 0 elements.
FileReadBd
Reads bytes from the currently open file. maxNumBytes specifies the maximum number of bytes to read. Appends the bytes to the binData.
Returns 1 for success, 0 for failure.
FileRename
FileSeek
Sets the file pointer for the currently open file. The offset is an offset in bytes from the origin. The origin can be one of the following:
0 = Offset is from beginning of file. 1 = Offset is from current position of file pointer. 2 = Offset is from the end-of-file (offset may be negative).
Returns 1 for success, 0 for failure.
topFileSize
Returns the size, in bytes, of a file. Returns -1 for failure.
Note: This method returns a signed 32-bit integer, which is not large enough to handle files greater than 2GB in size. To handle larger files, call FileSizeStr instead, or call FileSize64. The FileSize64 method was added in Chilkat v9.5.0.88.
Returns 1 for success, 0 for failure.
topFileSize64
Returns the size, in bytes, of a file. Returns -1 for failure.
topFileSizeStr
Returns the size of the file in decimal string format.
Returns a zero-length WideString on failure
topFileType
Examines the file at path and returns one of the following values:
-1 = Unable to check because of directory permissions or some error preventing the ability to obtain the information.
0 = File does not exist.
1 = Regular file.
2 = Directory.
3 = Symbolic link.
4 = Windows Shortcut.
99 = Something else.
Additional file types may be added in the future as needed.
FileWrite
FileWriteBd
Writes the contents of binData to the currently open file. To specify the entire contents of binData, set both offset and numBytes equal to 0. To write all remaining data starting at offset, then set numBytes equal to 0.
Returns 1 for success, 0 for failure.
GenBlockId
This is purely a utility/convenience method -- initially created to help with block file uploads to Azure Blob storage. It generates a block ID string that is the decimal representation of the index in length chars, and then encoded according to encoding (which can be an encoding such as "base64", "hex", "ascii", etc.) For example, if index = 8, length = 12, and encoding = "base64", then the string "00000012" is returned base64 encoded.
Returns a zero-length WideString on failure
topGetDirectoryName
Returns the directory information for the specified path string.
GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir\' GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir\' GetDirectoryName('C:\MyDir\') returns 'C:\MyDir\' GetDirectoryName('C:\MyDir') returns 'C:\' GetDirectoryName('C:\') returns 'C:\'
Returns a zero-length WideString on failure
GetExtension
Returns the extension of the specified path string.
GetExtension('C:\mydir.old\myfile.ext') returns '.ext' GetExtension('C:\mydir.old\') returns ''
Returns a zero-length WideString on failure
GetFileName
Returns the file name and extension of the specified path string.
GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' GetFileName('C:\mydir\') returns ''
Returns a zero-length WideString on failure
GetFileNameWithoutExtension
Returns the file name of the specified path string without the extension.
GetFileNameWithoutExtension('C:\mydir\myfile.ext') returns 'myfile' GetFileNameWithoutExtension('C:\mydir\') returns ''
Returns a zero-length WideString on failure
GetFileTime
Gets one of the following date/times for a file:
0: Last-modified 1: Last-access 2: CreationThe "path" argument indicates which time to return. The values can be 0, 1, or 2.
Note: Linux filesystems do not keep a file's creation date/time. In such a case, this method will return the last-modified time.
Returns nil on failure
topGetLastModified
Gets the last-modified date/time for a file. The accuracy of the last-modified data is to the number of seconds.
Returns nil on failure
topGetNumBlocks
Returns the number of blocks in the currently open file. The number of bytes per block is specified by blockSize. The number of blocks is the file size divided by the blockSize, plus 1 if the file size is not evenly divisible by blockSize. For example, if the currently open file is 60500 bytes, and if the blockSize is 1000 bytes, then this method returns a count of 61 blocks.
Returns -1 if no file is open. Return 0 if the file is completely empty (0 bytes).
GetTempFilename
Creates a temporary filepath of the form dirPath\prefix_xxxx.TMP Where "xxxx" are random alpha-numeric chars. The returned filepath is guaranteed to not already exist.
Returns a zero-length WideString on failure
topOpenForAppend
Opens a file for appending. If filePath did not already exists, it is created. When an existing file is opened with this method, the contents will not be overwritten and the file pointer is positioned at the end of the file.
If the open/create failed, then error information will be available in the FileOpenError and FileOpenErrorMsg properties.
Returns 1 for success, 0 for failure.
topOpenForRead
Opens a file for reading. The file may contain any type of data (binary or text) and it must already exist. If the open failed, then error information will be available in the FileOpenError and FileOpenErrorMsg properties.
Returns 1 for success, 0 for failure.
OpenForReadWrite
Opens a file for reading/writing. If filePath did not already exists, it is created. When an existing file is opened with this method, the contents will not be overwritten, but the file pointer is positioned at the beginning of the file.
If the open/create failed, then error information will be available in the FileOpenError and FileOpenErrorMsg properties.
Returns 1 for success, 0 for failure.
topOpenForWrite
Opens a file for writing. If filePath did not already exists, it is created. When an existing file is opened with this method, the contents will be overwritten. (For example, calling OpenForWrite on an existing file and then immediately closing the file will result in an empty file.) If the open/create failed, then error information will be available in the FileOpenError and FileOpenErrorMsg properties.
Returns 1 for success, 0 for failure.
topReadBinaryToEncoded
Reads the entire contents of a binary file and returns it as an encoded string (using an encoding such as Base64, Hex, etc.) The encoding may be one of the following strings: base64, hex, qp, or url.
Returns a zero-length WideString on failure
ReadBlock
Reads the Nth block of a file, where the size of each block is specified by blockSize. The first block is at blockIndex 0. If the block to be read is the last in the file and there is not enough data to fill an entire block, then the partial block is returned.
Returns a zero-length byte array (as an OleVariant) on failure.
An empty array will have a VarArrayHighBound of -1 meaning 0 elements.
ReadBlockBd
Reads the Nth block of a file, where the size of each block is specified by blockSize. The first block is at blockIndex 0. If the block to be read is the last in the file and there is not enough data to fill an entire block, then the partial block is returned. The file data is appended to the contents of bd.
ReadEntireFile
Reads the entire contents of a binary file and returns the data.
Returns a zero-length byte array (as an OleVariant) on failure.
An empty array will have a VarArrayHighBound of -1 meaning 0 elements.
ReadEntireTextFile
Reads the entire contents of a text file, interprets the bytes according to the character encoding specified by charset, and returns the text file as a string.
Returns a zero-length WideString on failure
topReadNextFragment
Scans the currently open file (opened by calling OpenForRead) for the next chunk of text delimited by beginMarker and endMarker. The matched text, including the beginMarker and endMarker are appended to sb. The bytes of the text file are interpreted according to charset. If startAtBeginning equals 1, then scanning begins at the start of the file. Otherwise scanning begins starting at the byte following the last matched fragment.
The return value of this function is:
0: No match was found.
1: Found the next matching fragment and appended to sb.
-1: Error reading the file.
To support a common need for use with XML files, the beginMarker is "XML tag aware". If the beginMarker is a string such as "
ReassembleFile
Reassembles a file previously split by the SplitFile method.
Returns 1 for success, 0 for failure.
ReplaceStrings
Replaces all occurrences of existingString with replacementString in a file. The character encoding, such as utf-8, ansi, etc. is specified by charset.
topSetCurrentDir
Sets the current working directory for the calling process to dirPath.
Returns 1 for success, 0 for failure.
topSetFileTimes
Sets the create date/time, the last-access date/time, and the last-modified date/time for a file. For non-Windows filesystems where create times are not implemented, the createTime is ignored.
topSetLastModified
Sets the last-modified date/time for a file.
topSplitFile
Splits a file into chunks. To reassemble a split file, see the ReassembleFile method. Please refer to the example below:
Returns 1 for success, 0 for failure.
SymlinkCreate
Creates a symbolic link.
Note: On Windows systems, this is not the same as creating a shortcut. A Windows symbolic link and a Windows shortcut are two different things. Shortcut files are common on Windows, but not symbolic links. Creating a symbolic link requires a special privilege, unless running as administrator. To be able to create symbolic links, your user account or group needs to be listed in secpol.msc → Security Settings → Local Policies → User Rights Assignment → Create symbolic links. However the special setting is not needed when running within the development environment, such as from Visual Studio.
Returns 1 for success, 0 for failure.
SymlinkTarget
Returns the full pathname of the file at the end of the linkPath. Also handles Windows shortcut files by returning the absolute path of the target.
Returns a zero-length WideString on failure
TreeDelete
Deletes an entire directory tree (all files and sub-directories).
Returns 1 for success, 0 for failure.
topTruncate
Truncates the currently open file at the current file position.
Returns 1 for success, 0 for failure.
topWriteEntireFile
Opens/creates filePath, writes fileData, and closes the file.
Returns 1 for success, 0 for failure.
topWriteEntireTextFile
Opens filePath, writes textData using the character encoding specified by charset, and closes the file. If includedPreamble is 1 and the charset is Unicode or utf-8, then the BOM is included at the beginning of the file.
Returns 1 for success, 0 for failure.