Abordaremos nesta dica, a criação de uma função que retorne uma parte específica de uma string. A função, que chamaremos de SubString, deverá receber os seguintes parâmetros:

  1. a string original;
  2. qual parte se deseja retirar da string original, por exemplo, parte 1, parte 2, etc;
  3. o separador que será utilizado para dividir a string original. Este separador deverá constar na string original, caso contrário o resultado será a string original e não uma parte dela.

SubString('PRIMEIRO SEGUNDO TERCEIRO', 1, ' ') = 'SEGUNDO'			
Listagem 1. Exemplo

Observações

  1. Na função SubString, o índice do parâmetro 'Parte' é base-zero, ou seja, Parte = 0 retornará a primeira substring, Parte = 1 retornará a segunda, e assim sucessivamente;
  2. A função SubString é sensível ao texto, portanto certifique-se de digitar no parâmetro 'Separador', o caractere respeitando o formato da string original, caso contrário o resultado será a string original e não uma parte dela;
  3. No exemplo acima o separador utilizado é um espaço em branco (#32).

Etapas

Primeira Etapa

Crie um novo projeto e insira no formulário os seguintes componentes da palheta Standard: 4 Edits, 4 Labels e 1 Botão. Monte o Layout do formulário para que fique igual o desenho abaixo. Altere também os Captions dos Labels da seguinte forma:


Label1 = String Original: 
Label2 = Parte: 
Label3 = Separador: 
Label4 = Resultado:

Segunda Etapa

Escreva o código a seguir, de forma que a sua Unit se pareça com o texto abaixo:


unit untSubString; 

interface 

uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs, StdCtrls; 

type 
TForm1 = class(TForm) 
Button1: TButton; 
edtStringOriginal: TEdit; 
edtParte: TEdit; 
edtSeparador: TEdit; 
edtResultado: TEdit; 
Label1: TLabel; 
Label2: TLabel; 
Label3: TLabel; 
Label4: TLabel; 
procedure Button1Click(Sender: TObject); 
private 
{ Private declarations } 
public 
{ public declarations } 
end; 

var 
Form1: TForm1; 

implementation 

{$R *.dfm} 

function SubString(Str: string; Parte: integer; Separador: string): string; 
var 
lp0, sln, CurrN: integer; 
EmSep, PrimEncontrado: boolean; 
begin 
result := ''; 
CurrN := 0; 
EmSep := false; 
PrimEncontrado := false; 
sln := length(Str); 
for lp0 := 1 to sln do 
begin 
if Pos(Str[lp0],Separador) > 0 then 
begin 
if not EmSep then 
begin 
if PrimEncontrado then 
inc(CurrN); 
end; 
EmSep := true; 
if CurrN > Parte then 
break; 
end 
else 
begin 
EmSep := false; 
PrimEncontrado := true; 
if CurrN = Parte then 
result := result + Str[lp0]; 
end; 
end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
strOriginal, strSeparador, strResultado: string; 
intParte: Integer; 
begin 
strOriginal := edtStringOriginal.Text; 
intParte := StrToInt(edtParte.Text); 
strSeparador := edtSeparador.Text; 
strResultado := SubString(strOriginal, intParte, strSeparador); 
edtResultado.Text := strResultado 
end; 

end.