TABPACK() Converts spaces in tabs ------------------------------------------------------------------------------ Syntax TABPACK(<cString>,[<nTabWidth>], [<cCharacter|nCharacter>]) --> cString Arguments <cString> Designates a character string that is packed with tab characters. <nTabWidth> Designates the tab width. The default value is 8. <cCharacter|nCharacter> Designates which characters are replaced by a tab. The default value is a space, CHR(32). Returns TABPACK() returns the modified character string. Description This function does not simply exchange a simple sequence of the same characters for a tab; instead, it takes into account the true tab positions. If a space (or the <cCharacter|nCharacter>) is found at a tab position, and immediately preceding it there is at least one identical character, the function replaces this sequence (maximum <nTabWidth>) with a CHR(9). With tab characters, text can be packed by individual tab widths. As with every good text editor, there is no replacement with a tab within single or double leading characters. Notes . For the beginning of a line, the function takes into account the "normal" carriage return (CHR(13)/CHR(10)) as well as the high bit return (CHR(141)) used by MEMOEDIT(). Previously existing tab characters are also taken into account. . If another tab already exists, this tab can be removed with TABEXPAND(). The new tab can then be inserted using TABPACK(). Example We have avoided replacing spaces with tabs in the following examples to keep the example legible. Tab width is 8 (default). "*" is exchanged for tab characters. ? TABPACK("AAAAAAA*", "*") // "AAAAAAA*" ? TABPACK("AAAAA***", "*") // "AAAAA" + CHR(9) ? TABPACK("AAAAA*****", "*") // "AAAAA" + CHR(9) + "**" crlf := CHR(13) + CHR(10) cText := "ABCD+" + crlf + "++---+++++" ? TABPACK(cText, 4, "+") // "ABCD+" + crlf + // "++---" + CHR(9) + "++"
See Also: TABEXPAND()