Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro de Morais Nunes

"Explode" em Delphi

Recommended Posts

estava desenvolvendo umas rotinas para um softwarezinho e apareceu a necessidade de ler uma lista de palavras, separadas por um campo delimitador e mostrar o conteúdo em um ListBox.

 

como não tenho muita experiência em delphi (sou mais PHP!), então resolvi este problema com uma procedure simples que fiz aqui rapidinho, e divido com o pessoal aqui do fórum

 

a sintaxe é...

Explode(LINHA_A_SER_EXPLODIDA , CAMPO_DELIMITADOR , NAME_DO_LISTBOX );
ficando assim...

 

Explode('Linha_que_desejo_explodir','_','ListBox1');
a procedure é essa:

 

procedure TForm1.Explode(linha: String;Spr:String;Comp:String);var  c,i,a:integer;  StrAux:String;begin  a:=0;  c:=1;  linha:=linha+' '+Spr;  TListBox( FindComponent( Comp ) ).Clear;  for i:=1 to Length(linha) do  begin	if(linha[i]<>Spr)then	 begin	  Straux := copy(linha,i-c+1,c);	  c:=c+1;	 end	else	 begin	  TListBox( FindComponent( Comp ) ).Items.Add(Trim(StrAux));	  a:=a+1;	  c:=1;	 end;  endend;

Obs: devem existir outras centenas de milhares de formas de implementar essa funcionalidade, apresento a minha solução até para discutir o tema...

 

valeu

 

*esse é meu primeiro post

Compartilhar este post


Link para o post
Compartilhar em outros sites

estava desenvolvendo umas rotinas para um softwarezinho e apareceu a necessidade de ler uma lista de palavras, separadas por um campo delimitador e mostrar o conteúdo em um ListBox.

 

como não tenho muita experiência em delphi (sou mais PHP!), então resolvi este problema com uma procedure simples que fiz aqui rapidinho, e divido com o pessoal aqui do fórum

 

a sintaxe é...

Explode(LINHA_A_SER_EXPLODIDA , CAMPO_DELIMITADOR , NAME_DO_LISTBOX );
ficando assim...

 

Explode('Linha_que_desejo_explodir','_','ListBox1');
a procedure é essa:

 

procedure TForm1.Explode(linha: String;Spr:String;Comp:String);var  c,i,a:integer;  StrAux:String;begin  a:=0;  c:=1;  linha:=linha+' '+Spr;  TListBox( FindComponent( Comp ) ).Clear;  for i:=1 to Length(linha) do  begin	if(linha[i]<>Spr)then	 begin	  Straux := copy(linha,i-c+1,c);	  c:=c+1;	 end	else	 begin	  TListBox( FindComponent( Comp ) ).Items.Add(Trim(StrAux));	  a:=a+1;	  c:=1;	 end;  endend;

Obs: devem existir outras centenas de milhares de formas de implementar essa funcionalidade, apresento a minha solução até para discutir o tema...

 

valeu

 

*esse é meu primeiro post

procedimentos e funções use este link para posta-los fica melhor para ajudar os usuários

 

http://forum.imasters.com.br/index.php?showforum=160

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Delphi possui uma função chamada ExtractStrings na unit Classes com a mesma funcionalidade do Explode do PHP.

 

Declaração

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

 

Exemplo de uso:

ExtractStrings([';'], [' '],'valor1;valor2;valor3', Memo1.Lines);

 

Achei interessante comentar já que é uma função do próprio Delphi... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.