unit uMainForm;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm1 = class(TForm)
btnUsinSPLIT_function: TButton;
ListBox1: TListBox;
btnUsingListBox: TButton;
ListBox2: TListBox;
Memo1: TMemo;
btnMyNewSplitStrings: TButton;
procedure btnUsinSPLIT_functionClick(Sender: TObject);
procedure btnUsingListBoxClick(Sender: TObject);
procedure btnMyNewSplitStringsClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnUsinSPLIT_functionClick(Sender: TObject);
var
lMyArraySpplited: TArray<string>;
lMyRegKey : string;
lNewRegKey : string;
i : Integer;
lLastDelimiter : integer;
begin
memo1.Lines.Clear;
//
// if lMyRegKey = '' or '\' -> it's necessary verify too!
// But DONT problem if lLastDelimiter <= 0
// on the end, your "string" resulted can be EMPTY!
// None exception will be raised!
//
lMyRegKey := 'part1\part2\part3\value';
//
lMyArraySpplited := lMyRegKey.Split(['\']);
//
lLastDelimiter := lMyRegKey.LastDelimiter('\') + 1; // +1 here or below (Rigth substring)
//
memo1.Lines.Add('SubString Left = ' + lMyRegKey.Substring(-lLastDelimiter, lLastDelimiter));
memo1.Lines.Add('SubString Right = ' + lMyRegKey.Substring(lLastDelimiter));
//
memo1.Lines.Add('LastDelimiter = ' + lMyRegKey.LastDelimiter('\').ToString);
//
memo1.Lines.Add('');
//
lNewRegKey := lMyRegKey.Join('\', lMyArraySpplited, 0, 2); // "part1\part2"
//
memo1.Lines.Add('Join 0 to 2 = ' + lNewRegKey);
//
lNewRegKey := lMyRegKey.Join('\', lMyArraySpplited, 3, 4); // "value"
//
memo1.Lines.Add('Join 3 to 4 = ' + lNewRegKey);
//
memo1.Lines.Add('');
//
for i := 0 to high(lMyArraySpplited) do
begin
if lMyArraySpplited[i] <> '' then
memo1.Lines.Add(lMyArraySpplited[i]);
end;
end;
procedure TForm1.btnMyNewSplitStringsClick(Sender: TObject);
var
lMyRegKey : string;
lMyArraySpplited: TArray<string>;
begin
Memo1.Lines.Clear;
//
lMyRegKey := 'part1\part2\part3\value';
//
// start from "1" and ending on "3" chars!
// using "\" like my "Delimiter" to split my string!
//
lMyArraySpplited := lMyRegKey.Split(['\'], '1', '3', Length(lMyRegKey));
//
Memo1.Lines.Add('How many items SPLITTED = ' + Length(lMyArraySpplited).ToString);
Memo1.Lines.Add('');
Memo1.Lines.Add('my items:');
//
Memo1.Lines.AddStrings(lMyArraySpplited); // working with my items splitted (my array)
end;
procedure TForm1.btnUsingListBoxClick(Sender: TObject);
var
lMyRegKey: string;
begin
lMyRegKey := 'part1\part2\part3\value';
//
ListBox1.Items.Delimiter := '\';
ListBox1.Items.DelimitedText := lMyRegKey;
//
ListBox2.Items.Clear;
ListBox2.Items.Add(ListBox1.Items[3]);
//
// another ways can help too, when using a "List"
//
// ListBox1.Items.IndexOf('first position to start')
// ListBox1.Items.IndexOf('last position to end')
// ShowMessage(ListBox1.Items.KeyNames[2]);
end;
end.