---
product: Chilkat
product_version: 11.7.0
language: tcl
language_label: Tcl
class: StringTable
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/tclStringTableRef.html
---
# Chilkat StringTable — Tcl — v11.7.0

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

## Purpose

**Store, load, search, sort, split, retrieve, and save ordered lists of strings.**

`Chilkat.StringTable` is a simple ordered collection of strings. It can append strings directly, load one string per line from files or `StringBuilder`, search for substrings or wildcard matches, sort the collection, split strings into entries, retrieve strings by index, export the table as line-delimited text, and save the result to a file.

**Ordered string collection**

Store a list of strings in insertion order and retrieve individual entries by zero-based index.

**Append and import**

Add strings directly, append strings from a file, or load line-delimited text from a `StringBuilder`.

**Search strings**

Find entries containing a substring or matching a wildcard pattern when filtering or locating text values.

**Sort entries**

Sort the string collection when deterministic ordering or user-facing display order is needed.

**Split into entries**

Split delimited text into separate string-table entries for easier indexing, searching, sorting, or saving.

**Export and save**

Convert the table back to line-delimited text, copy it to a `StringBuilder`, or save the collection to a file.

**Common pattern:** Use `StringTable` when application code needs a lightweight ordered list of text values. Append or load the strings, search or sort as needed, retrieve entries by index with `StringAt` or `StringAtSb`, then export the final list as line-delimited text or save it to a file.

For an extended overview, see [StringTable Class Overview](https://www.chilkatsoft.com/stringtable_class_overview.asp).

## Object creation, unlocking and error handling

**Object Creation**

```tcl
# 'this' is not a keyword in Tcl. It can freely be used as a variable name.
set this [new CkStringTable]
```

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 Tcl.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## 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` | `string # ckStr is a CkString CkStringTable_get_DebugLogFilePath $this $ckStr set strVal [CkStringTable_get_debugLogFilePath $this] CkStringTable_put_DebugLogFilePath $this $strVal` | 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` | `string # ckStr is a CkString CkStringTable_get_LastErrorHtml $this $ckStr set strVal [CkStringTable_get_lastErrorHtml $this]` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `string # ckStr is a CkString CkStringTable_get_LastErrorText $this $ckStr set strVal [CkStringTable_get_lastErrorText $this]` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `string # ckStr is a CkString CkStringTable_get_LastErrorXml $this $ckStr set strVal [CkStringTable_get_lastErrorXml $this]` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `boolean 1/0 set boolVal [CkStringTable_get_LastMethodSuccess $this] CkStringTable_put_LastMethodSuccess $this $boolVal` | read/write | Indicates the success or failure of the most recent method call: `1` means success, `0` means failure. |
| `Utf8` | `boolean 1/0 set boolVal [CkStringTable_get_Utf8 $this] CkStringTable_put_Utf8 $this $boolVal` | read/write | When set to `1`, all `string` arguments and return values are interpreted as UTF-8 strings. |
| `VerboseLogging` | `boolean 1/0 set boolVal [CkStringTable_get_VerboseLogging $this] CkStringTable_put_VerboseLogging $this $boolVal` | read/write | If set to `1`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `string # ckStr is a CkString CkStringTable_get_Version $this $ckStr set strVal [CkStringTable_get_version $this]` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Count` | property, read-only | `integer set intVal [CkStringTable_get_Count $this]` |
| `Append` | method | `# value is a string set status [CkStringTable_Append $this $value]` |
| `AppendFromFile` | method | `# maxLineLen is an integer # charset is a string # path is a string set status [CkStringTable_AppendFromFile $this $maxLineLen $charset $path]` |
| `AppendFromSb` | method | `# sb is a CkStringBuilder set status [CkStringTable_AppendFromSb $this $sb]` |
| `Clear` | method | `CkStringTable_Clear $this` |
| `FindMatch` | method | `# sb is a CkStringBuilder # caseSensitive is a boolean set retInt [CkStringTable_FindMatch $this $sb $caseSensitive]` |
| `FindSubstring` | method | `# startIndex is an integer # substr is a string # caseSensitive is a boolean set retInt [CkStringTable_FindSubstring $this $startIndex $substr $caseSensitive]` |
| `GetStrings` | method | `# startIdx is an integer # count is an integer # crlf is a boolean # outStr is a CkString (output) set status [CkStringTable_GetStrings $this $startIdx $count $crlf $outStr] set retStr [CkStringTable_getStrings $this $startIdx $count $crlf]` |
| `IntAt` | method | `# index is an integer set retInt [CkStringTable_IntAt $this $index]` |
| `SaveToFile` | method | `# charset is a string # bCrlf is a boolean # path is a string set status [CkStringTable_SaveToFile $this $charset $bCrlf $path]` |
| `Sort` | method | `# ascending is a boolean # caseSensitive is a boolean set status [CkStringTable_Sort $this $ascending $caseSensitive]` |
| `SplitAndAppend` | method | `# inStr is a string # delimiterChar is a string # exceptDoubleQuoted is a boolean # exceptEscaped is a boolean set status [CkStringTable_SplitAndAppend $this $inStr $delimiterChar $exceptDoubleQuoted $exceptEscaped]` |
| `StringAt` | method | `# index is an integer # outStr is a CkString (output) set status [CkStringTable_StringAt $this $index $outStr] set retStr [CkStringTable_stringAt $this $index]` |
| `StringAtSb` | method | `# index is an integer # sb is a CkStringBuilder set status [CkStringTable_StringAtSb $this $index $sb]` |
| `ToSb` | method | `# sb is a CkStringBuilder set status [CkStringTable_ToSb $this $sb]` |
| `WordFollowing` | method | `# sb is a CkStringBuilder # captureEmailAddr is a boolean # sbWord is a CkStringBuilder set retInt [CkStringTable_WordFollowing $this $sb $captureEmailAddr $sbWord]` |

## Properties

### StringTable.Count

`Chilkat 11.7.0 · tcl · StringTable · Count · property · read-only · since 9.5.0.62`

```tcl
integer
set intVal [CkStringTable_get_Count $this]
```

The number of strings in the table.

## Methods

### StringTable.Append

`Chilkat 11.7.0 · tcl · StringTable · Append · method · since 9.5.0.62`

```tcl
# value is a string

set status [CkStringTable_Append $this $value]
```

Appends a string to the table.

Returns 1 for success, 0 for failure.

### StringTable.AppendFromFile

`Chilkat 11.7.0 · tcl · StringTable · AppendFromFile · method · since 9.5.0.62`

```tcl
# maxLineLen is an integer

# charset is a string

# path is a string

set status [CkStringTable_AppendFromFile $this $maxLineLen  $charset  $path]
```

Appends strings, one per line, from a file. Each line in the `path` should be no longer than the length specified in `maxLineLen`. The `charset` indicates the character encoding of the contents of the file, such as `utf-8`, `iso-8859-1`, `Shift_JIS`, etc.

Returns 1 for success, 0 for failure.

### StringTable.AppendFromSb

`Chilkat 11.7.0 · tcl · StringTable · AppendFromSb · method · since 9.5.0.62`

```tcl
# sb is a CkStringBuilder

set status [CkStringTable_AppendFromSb $this $sb]
```

Appends strings, one per line, from the contents of a StringBuilder object.

Returns 1 for success, 0 for failure.

### StringTable.Clear

`Chilkat 11.7.0 · tcl · StringTable · Clear · method · since 9.5.0.62`

```tcl
CkStringTable_Clear $this
```

Removes all the strings from the table.

### StringTable.FindMatch

`Chilkat 11.7.0 · tcl · StringTable · FindMatch · method · since 11.1.0`

```tcl
# sb is a CkStringBuilder

# caseSensitive is a boolean

set retInt [CkStringTable_FindMatch $this $sb  $caseSensitive]
```

This string table object holds strings with wildcards. The method returns the index of the wildcarded string that matches the text in `sb`, or -1 if no match is found. `caseSensitive` specifies whether the matching should be case-sensitive.

### StringTable.FindSubstring

`Chilkat 11.7.0 · tcl · StringTable · FindSubstring · method · since 9.5.0.77`

```tcl
# startIndex is an integer

# substr is a string

# caseSensitive is a boolean

set retInt [CkStringTable_FindSubstring $this $startIndex  $substr  $caseSensitive]
```

Return the index of the first string in the table containing `substr`. Begins searching strings starting at `startIndex`. If `caseSensitive` is `1`, then the search is case sensitive. If `caseSensitive` is `0` then the search is case insensitive. Returns -1 if the `substr` is not found.

### StringTable.GetStrings

`Chilkat 11.7.0 · tcl · StringTable · GetStrings · method · since 9.5.0.87`

```tcl
# startIdx is an integer

# count is an integer

# crlf is a boolean

# outStr is a CkString (output)

set status [CkStringTable_GetStrings $this $startIdx  $count  $crlf $outStr]

set retStr [CkStringTable_getStrings $this $startIdx $count $crlf]
```

Return the number of strings specified by `count`, one per line, starting at `startIdx`. To return the entire table, pass 0 values for both `startIdx` and `count`. Set `crlf` equal to `1` to emit with CRLF line endings, or `0` to emit LF-only line endings. The last string is emitted includes the line ending.

Returns 1 for success, 0 for failure.

### StringTable.IntAt

`Chilkat 11.7.0 · tcl · StringTable · IntAt · method · since 9.5.0.63`

```tcl
# index is an integer

set retInt [CkStringTable_IntAt $this $index]
```

Returns the Nth string in the table, converted to an integer value. The `index` is 0-based. (The first string is at index 0.) Returns -1 if no string is found at the specified index. Returns 0 if the string at the specified index exist, but is not an integer.

### StringTable.SaveToFile

`Chilkat 11.7.0 · tcl · StringTable · SaveToFile · method · since 9.5.0.62`

```tcl
# charset is a string

# bCrlf is a boolean

# path is a string

set status [CkStringTable_SaveToFile $this $charset  $bCrlf  $path]
```

Saves the string table to a file. The `charset` is the character encoding to use, such as `utf-8`, `iso-8859-1`, `windows-1252`, `Shift_JIS`, `gb2312`, etc. If `bCrlf` is `1`, then CRLF line endings are used, otherwise LF-only line endings are used.

Returns 1 for success, 0 for failure.

### StringTable.Sort

`Chilkat 11.7.0 · tcl · StringTable · Sort · method · since 9.5.0.87`

```tcl
# ascending is a boolean

# caseSensitive is a boolean

set status [CkStringTable_Sort $this $ascending  $caseSensitive]
```

Sorts the strings in the collection in ascending or descending order. To sort in ascending order, set `ascending` to `1`, otherwise set `ascending` equal to `0`.

Returns 1 for success, 0 for failure.

### StringTable.SplitAndAppend

`Chilkat 11.7.0 · tcl · StringTable · SplitAndAppend · method · since 9.5.0.62`

```tcl
# inStr is a string

# delimiterChar is a string

# exceptDoubleQuoted is a boolean

# exceptEscaped is a boolean

set status [CkStringTable_SplitAndAppend $this $inStr  $delimiterChar  $exceptDoubleQuoted  $exceptEscaped]
```

Splits a string into parts based on a single character `delimiterChar`. If `exceptDoubleQuoted` is `1`, then the delimiter char found between double quotes is not treated as a delimiter. If `exceptEscaped` is `1`, then an escaped (with a backslash) delimiter char is not treated as a delimiter.

Returns 1 for success, 0 for failure.

### StringTable.StringAt

`Chilkat 11.7.0 · tcl · StringTable · StringAt · method · since 9.5.0.62`

```tcl
# index is an integer

# outStr is a CkString (output)

set status [CkStringTable_StringAt $this $index $outStr]

set retStr [CkStringTable_stringAt $this $index]
```

Returns the Nth string in the table. The `index` is 0-based. (The first string is at index 0.)

Returns 1 for success, 0 for failure.

### StringTable.StringAtSb

`Chilkat 11.7.0 · tcl · StringTable · StringAtSb · method · since 11.2.0`

```tcl
# index is an integer

# sb is a CkStringBuilder

set status [CkStringTable_StringAtSb $this $index  $sb]
```

Appends the Nth string in the table to `sb`. The `index` is 0-based. (The first string is at index 0.)

Returns 1 for success, 0 for failure.

### StringTable.ToSb

`Chilkat 11.7.0 · tcl · StringTable · ToSb · method · since 11.3.0`

```tcl
# sb is a CkStringBuilder

set status [CkStringTable_ToSb $this $sb]
```

Appends the entire string table to `sb` using CRLF line endings.

Returns 1 for success, 0 for failure.

### StringTable.WordFollowing

`Chilkat 11.7.0 · tcl · StringTable · WordFollowing · method · since 11.1.0`

```tcl
# sb is a CkStringBuilder

# captureEmailAddr is a boolean

# sbWord is a CkStringBuilder

set retInt [CkStringTable_WordFollowing $this $sb  $captureEmailAddr  $sbWord]
```

The method performs a case-insensitive search to return the index of a table entry matching `sb`, or -1 if there is no match. Set `captureEmailAddr` to `1` if the target word is expected to be an email address, otherwise set `captureEmailAddr` to `0`. `sbWord` will receive the word (email address) following the matched text. This method helps replace the outdated Chilkat Bounce class, which was used for identifying and categorizing bounced email types.

## Related classes

[`StringBuilder`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/tcl/classes/StringBuilder.md)

