Dicas - Implementando a função SubString

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Abordaremos nesta dica, a criação de uma função que retorne uma parte específica de uma string.

Implementando a função SubString

 

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: 1o.) a string original; 2o.) qual parte se deseja retirar da string original, por exemplo, parte 1, parte 2, etc e 3o.) 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.

Exemplo: SubString('PRIMEIRO SEGUNDO TERCEIRO', 1, ' ') = 'SEGUNDO'

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).

Etapa

1) 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:

 

 

Etapa 2) 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.

 

por Edison Costa

webmaster@clubedelphi.com.br

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?