Mostrando postagens com marcador ExtractStrings. Mostrar todas as postagens
Mostrando postagens com marcador ExtractStrings. Mostrar todas as postagens

quarta-feira, 7 de novembro de 2007

6

ExtractStrings: Você conhece?

Pessoal, resolvi começar a postar aqui, funções do delphi que normalmente quebram muitos galhos, e, por desconhece-las, acabamos "rebolando" pra criar algo "parecido". E não pensem que não estou falando de mim! :)

Uma função muito interessante e que tem uma enorme utilidade é a função ExtracStrings. Essa função preenche uma lista (StringList), com substrings de uma string.

Imagine que você precise ler um arquivo CSV (separado por ponto-e-vírgula). Dai você pergunta: "Como vou separar as colunas?"; a primeira idéia é criar uma função para localizar (Pos) o primeiro ponto-e-vírgula e extrair o fragmento da string (Copy), e assim sucessivamente, atire a primeira pedra que nunca fez assim!

Pois é! Perdemos nosso precioso tempo reinventando a roda.

Veja a sintaxe da função ExtractString:

function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;

  • Separator - É um array onde você pode definir vários separadores
  • WhiteSpace - É um Array onde você define os caracteres que devem ser Ignorados quando ocorrerem no inicio da String.
  • Content - É a String de onde se deseja extrais as substrings
A Função retorna o número de Substrings extraídas.

Veja um pequeno exemplo de utilização:

procedure TForm1.Button1Click(Sender: TObject);
const

SDados = 'Cristiano Martins Alves; 28 Anos; Casado; São Paulo; SP';
var
Lista: TStringList;
iRetorno:Integer;

begin

Lista := TStringList.Create;

try

iRetorno :=
ExtractStrings([';'],[' '],PChar(sDados),Lista);
if
iRetorno > 0 then
ShowMessage(Lista.Text);

finally

FreeAndNil(Lista);

end
;

end
;

Veja o resultado:













Repare que na nossa constante existe um espaço entre o nome e a idade, mas ele foi ignorado conforme definido no segundo parâmetro.


É isso ai pessoal! Não deixem de comentar o blog!