---
product: Chilkat
product_version: 11.7.0
language: delphidll
language_label: Delphi DLL
class: SFtpDir
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/dd_CkSFtpDirRef.html
---
# Chilkat SFtpDir — Delphi DLL — v11.7.0

> Chilkat 11.7.0 · language=delphidll · class=SFtpDir
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/SFtpDir.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/delphidll/guide.md`.

## Purpose

**Inspect, sort, and iterate an SFTP directory listing.**

`Chilkat.SFtpDir` represents a directory listing returned by an SFTP operation. It provides the original path used to fetch the listing, the number of files and subdirectories found, methods for retrieving filenames or full `SFtpFile` entry details by index, sorting support, and a way to load a completed asynchronous directory-listing result.

**Directory listing object**

Holds the files and subdirectories returned from an SFTP directory-read operation.

**Original path tracking**

Use `OriginalPath` to see the remote path that was requested when the directory listing was created.

**Entry count**

Read `NumFilesAndDirs` to determine how many directory entries are available for iteration.

**Filename access**

Use `GetFilename` to retrieve the name of an entry by zero-based index.

**Full entry details**

Use `FileAt` to populate an `SFtpFile` object with metadata for a selected file or subdirectory.

**Sorting and async results**

Sort entries by filename, timestamps, or size, and load directory listings returned from completed async tasks.

**Common pattern:** Use a `Chilkat.SFtp` object to open or read a remote directory, then use the returned `SFtpDir` object to inspect `NumFilesAndDirs`, optionally call `Sort`, and loop from index `0` through the final entry. Use `GetFilename` when only names are needed, or `FileAt` when the application needs the full `SFtpFile` metadata for each entry.

## Object creation, unlocking and error handling

**Create/Dispose**

```pascal
var
myObject: HCkSFtpDir;

begin
myObject := CkSFtpDir_Create();

// ...

CkSFtpDir_Dispose(myObject);
end;
```

`function CkSFtpDir_Create: HCkSFtpDir; stdcall;`

Creates an instance of the HCkSFtpDir object and returns a handle (i.e. a Pointer). The handle is passed in the 1st argument for the functions listed on this page.

`procedure CkSFtpDir_Dispose(handle: HCkSFtpDir); stdcall;`

Objects created by calling CkSFtpDir_Create must be freed by calling this method. A memory leak occurs if a handle is not disposed by calling this function.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Delphi DLL.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `procedure CkSFtpDir_getDebugLogFilePath(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall; procedure CkSFtpDir_putDebugLogFilePath(objHandle: HCkSFtpDir; newPropVal: PWideChar); stdcall; function CkSFtpDir__debugLogFilePath(objHandle: HCkSFtpDir): PWideChar; stdcall;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `procedure CkSFtpDir_getLastErrorHtml(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall; function CkSFtpDir__lastErrorHtml(objHandle: HCkSFtpDir): PWideChar; stdcall;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `procedure CkSFtpDir_getLastErrorText(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall; function CkSFtpDir__lastErrorText(objHandle: HCkSFtpDir): PWideChar; stdcall;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `procedure CkSFtpDir_getLastErrorXml(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall; function CkSFtpDir__lastErrorXml(objHandle: HCkSFtpDir): PWideChar; stdcall;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `function CkSFtpDir_getLastMethodSuccess(objHandle: HCkSFtpDir): wordbool; stdcall; procedure CkSFtpDir_putLastMethodSuccess(objHandle: HCkSFtpDir; newPropVal: wordbool); stdcall;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `function CkSFtpDir_getVerboseLogging(objHandle: HCkSFtpDir): wordbool; stdcall; procedure CkSFtpDir_putVerboseLogging(objHandle: HCkSFtpDir; newPropVal: wordbool); stdcall;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `procedure CkSFtpDir_getVersion(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall; function CkSFtpDir__version(objHandle: HCkSFtpDir): PWideChar; stdcall;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `NumFilesAndDirs` | property, read-only | `function CkSFtpDir_getNumFilesAndDirs(objHandle: HCkSFtpDir): Integer; stdcall;` |
| `OriginalPath` | property, read-only | `procedure CkSFtpDir_getOriginalPath(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall; function CkSFtpDir__originalPath(objHandle: HCkSFtpDir): PWideChar; stdcall;` |
| `FileAt` | method | `function CkSFtpDir_FileAt(objHandle: HCkSFtpDir;     index: Integer;     fileObj: HCkSFtpFile): wordbool; stdcall;` |
| `GetFilename` | method | `function CkSFtpDir_GetFilename(objHandle: HCkSFtpDir;     index: Integer;     outStr: HCkString): wordbool; stdcall; function CkSFtpDir__getFilename(objHandle: HCkSFtpDir;     index: Integer): PWideChar; stdcall;` |
| `LoadTaskResult` | method | `function CkSFtpDir_LoadTaskResult(objHandle: HCkSFtpDir;     task: HCkTask): wordbool; stdcall;` |
| `Sort` | method | `procedure CkSFtpDir_Sort(objHandle: HCkSFtpDir;     field: PWideChar;     ascending: wordbool) stdcall;` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### SFtpDir.NumFilesAndDirs

`Chilkat 11.7.0 · delphidll · SFtpDir · NumFilesAndDirs · property · read-only`

```pascal
function CkSFtpDir_getNumFilesAndDirs(objHandle: HCkSFtpDir): Integer; stdcall;
```

Returns the number of entries in this directory listing.

The count includes every item returned by the server, such as regular files, directories, symbolic links, and special entries. Valid zero-based indexes range from `0` through `NumFilesAndDirs - 1`.

### SFtpDir.OriginalPath

`Chilkat 11.7.0 · delphidll · SFtpDir · OriginalPath · property · read-only`

```pascal
procedure CkSFtpDir_getOriginalPath(objHandle: HCkSFtpDir; outPropVal: HCkString); stdcall;
function CkSFtpDir__originalPath(objHandle: HCkSFtpDir): PWideChar; stdcall;
```

Returns the original remote path used to create this directory listing.

This is the same path string that was supplied to the SFTP directory-open operation. It identifies the requested directory and is retained with the listing for later reference.

## Methods

### SFtpDir.FileAt

`Chilkat 11.7.0 · delphidll · SFtpDir · FileAt · method · since 11.0.0`

```pascal
function CkSFtpDir_FileAt(objHandle: HCkSFtpDir;
    index: Integer;
    fileObj: HCkSFtpFile): wordbool; stdcall;
```

Copies the metadata for the directory entry at the zero-based `index` into `fileObj`.

The first entry is at index `0`. Use `NumFilesAndDirs` to determine the number of available entries.

The populated `SFtpFile` object provides the entry name, type, size, timestamps, ownership, permissions, and any additional attributes supplied by the SFTP server.

Use `GetFilename` when only the entry name is needed.

Returns True for success, False for failure.

### SFtpDir.GetFilename

`Chilkat 11.7.0 · delphidll · SFtpDir · GetFilename · method`

```pascal
function CkSFtpDir_GetFilename(objHandle: HCkSFtpDir;
    index: Integer;
    outStr: HCkString): wordbool; stdcall;
function CkSFtpDir__getFilename(objHandle: HCkSFtpDir;
    index: Integer): PWideChar; stdcall;
```

Returns the filename of the directory entry at the zero-based `index`.

The first entry is at index `0`. Use `NumFilesAndDirs` to determine the number of available entries.

Use `FileAt` when the application needs the full `SFtpFile` metadata rather than only the entry name.

Returns True for success, False for failure.

See the notes about [PWideChar memory ownership and validity](https://www.chilkatsoft.com/delphi_pwidechar.asp).

### SFtpDir.LoadTaskResult

`Chilkat 11.7.0 · delphidll · SFtpDir · LoadTaskResult · method · since 9.5.0.52`

```pascal
function CkSFtpDir_LoadTaskResult(objHandle: HCkSFtpDir;
    task: HCkTask): wordbool; stdcall;
```

Loads this `SFtpDir` object from the result of a completed asynchronous `Task`.

The task must represent an asynchronous SFTP operation whose result is a directory listing. Call this method after the task has finished to transfer the listing data into the current object.

Returns True for success, False for failure.

### SFtpDir.Sort

`Chilkat 11.7.0 · delphidll · SFtpDir · Sort · method · since 9.5.0.79`

```pascal
procedure CkSFtpDir_Sort(objHandle: HCkSFtpDir;
    field: PWideChar;
    ascending: wordbool) stdcall;
```

Reorders the files and subdirectories in this listing according to `field`.

Set `ascending` to `True` for ascending order or `False` for descending order. The new order is used by index-based methods such as `GetFilename` and `FileAt`.

| field | Sort key |
| :--- | :--- |
| `filename` | Filename using the normal case-sensitive comparison. |
| `filenameNoCase` | Filename using a case-insensitive comparison. |
| `lastModifiedTime` | Last-modified date and time. |
| `lastAccessTime` | Last-access date and time. |
| `lastCreateTime` | Creation date and time. |
| `size` | Entry size in bytes. |

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `GetFileObject` | method | before 11.6.1 | `FileAt` |

## Related classes

[`SFtpFile`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/delphidll/classes/SFtpFile.md), [`Task`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/delphidll/classes/Task.md)

