Sample code for 30+ languages & platforms
Delphi DLL

StringBuilder GetBefore

Demonstrates the StringBuilder.GetBefore method.

The GetBefore method was added in Chilkat v9.5.0.77

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
success: Boolean;
sb: HCkStringBuilder;
removeFlag: Boolean;
marker: PWideChar;
substr: PWideChar;

begin
success := False;

sb := CkStringBuilder_Create();
success := CkStringBuilder_Append(sb,'www.chilkatsoft.com');

// The GetBefore method returns the contents of the string up to but not including
// the marker string.  If the remove flag is True, then both the returned string AND
// the marker are removed.
removeFlag := False;
marker := '.';
substr := CkStringBuilder__getBefore(sb,marker,removeFlag);
Memo1.Lines.Add('substr = ' + substr);
Memo1.Lines.Add('sb contains: ' + CkStringBuilder__getAsString(sb));

// Output:
// substr = www
// sb contains: www.chilkatsoft.com

removeFlag := True;
substr := CkStringBuilder__getBefore(sb,marker,removeFlag);
Memo1.Lines.Add('substr = ' + substr);
Memo1.Lines.Add('sb contains: ' + CkStringBuilder__getAsString(sb));

// Output:
// substr = www
// sb contains: chilkatsoft.com

// If the marker is not found, and the removeFlag is True,
// then the entire string is returned and the sb is cleared.
// For example:
CkStringBuilder_Clear(sb);
CkStringBuilder_Append(sb,'111--222--333--444');
marker := '--';
removeFlag := True;
while (CkStringBuilder_getLength(sb) > 0) do
  begin
    substr := CkStringBuilder__getBefore(sb,marker,removeFlag);
    Memo1.Lines.Add('substr = ' + substr + ', sb contains: ' + CkStringBuilder__getAsString(sb));
  end;

// Output is:
// substr = 111, sb contains: 222--333--444
// substr = 222, sb contains: 333--444
// substr = 333, sb contains: 444
// substr = 444, sb contains: 

CkStringBuilder_Dispose(sb);

end;