Sample code for 30+ languages & platforms
Delphi DLL

StringBuilder SetNth

Demonstrates the SetNth method.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, StringBuilder;

...

procedure TForm1.Button1Click(Sender: TObject);
var
sb: HCkStringBuilder;
delimiterChar: PWideChar;
exceptDoubleQuoted: Boolean;
exceptEscaped: Boolean;

begin
// The SetNth method is handy for setting a part of a delimited string.
// For example:

sb := CkStringBuilder_Create();
CkStringBuilder_Append(sb,'red,blue,"green,purple",,yellow');

delimiterChar := ',';
exceptDoubleQuoted := True;
exceptEscaped := True;

CkStringBuilder_SetNth(sb,2,'magenta',delimiterChar,exceptDoubleQuoted,exceptEscaped);
// Prints "red,blue,magenta,,yellow"
Memo1.Lines.Add(CkStringBuilder__getAsString(sb));

CkStringBuilder_SetNth(sb,3,'orange',delimiterChar,exceptDoubleQuoted,exceptEscaped);
// Prints "red,blue,magenta,orange,yellow"
Memo1.Lines.Add(CkStringBuilder__getAsString(sb));

// What happens if we start with an empty string?
CkStringBuilder_Clear(sb);

CkStringBuilder_SetNth(sb,2,'apple',delimiterChar,exceptDoubleQuoted,exceptEscaped);
// Prints ",,apple"
Memo1.Lines.Add(CkStringBuilder__getAsString(sb));

CkStringBuilder_SetNth(sb,0,'orange',delimiterChar,exceptDoubleQuoted,exceptEscaped);
// Prints "orange,,apple"
Memo1.Lines.Add(CkStringBuilder__getAsString(sb));

CkStringBuilder_SetNth(sb,1,'banana',delimiterChar,exceptDoubleQuoted,exceptEscaped);
// Prints "orange,banana,apple"
Memo1.Lines.Add(CkStringBuilder__getAsString(sb));

CkStringBuilder_Dispose(sb);

end;