Buscar

Usando stringlist para retornar várias strings em uma função

nome

Edimar Cardoso

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Usando StringList para Retornar Várias Strings em uma Função

 

Esses dias precisei criar uma função que me retornasse uma array de string. Porém não consegui achar em nenhum lugar um meio de fazer isso em delphi. Apenas vi que muitos outros programadores também estavam com o mesmo problema. Por isso resolvi postar algo que talvez ajude a contornar essa situação. O artigo é algo bem simples.

 

Código da função

 

function Tform1.arraystring(S : String; separador : char): TStringList; // entrada de dados //para função “S” recebe string, “separador” recebe caracter de separação da string.

  var

  conta : integer; // variáveis auxiliares

  resultado : TStringList; // variáveis auxiliares

  Saux : string; // variáveis auxiliares

begin

    resultado := TStringList.Create; // inicializa variavel

    conta := pos(separador,S); //pega posição do separador

    if conta <> 0 then begin  // verifica se existe o separador caso contrario trata apenas //como uma única linha

        while trim(S) <> '' do begin // enquanto S não for nulo executa

            Saux := copy(S,1,conta-1); // Variável Saux recebe primeiro valor

            delete(S,1,conta); //deleta primeiro valor

            if conta = 0 then begin //se não ouver mais separador Saux equivale ao resto da //linha

                Saux := S;

                S := '';

            end;

        resultado.Add(Saux); // adiciona linhas na string lista

        conta := pos(separador,S); //pega posição do separador

        end;

        end

    else begin

        Saux := S;

        resultado.Add(Saux);

    end;

    Result := resultado; // retorna resultado como uma lista indexada

end;

 

 

Abaixo código fonte de um exemplo, com memo,button e um edit;

 

unit uMain;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

 

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    Button1: TButton;

    Label1: TLabel;

    Memo1: TMemo;

    function arraystring(S : String; separador : char): TStringList;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

function Tform1.arraystring(S : String; separador : char): TStringList;

  var

  conta : integer;

  resultado : TStringList;

  Saux : string;

begin

    resultado := TStringList.Create;

    conta := pos(separador,S);

    if conta <> 0 then begin

        while trim(S) <> '' do begin

            Saux := copy(S,1,conta-1);

            delete(S,1,conta);

            if conta = 0 then begin

                Saux := S;

                S := '';

            end;

        resultado.Add(Saux);

        conta := pos(separador,S);

        end;

        end

    else begin

        Saux := S;

        resultado.Add(Saux);

    end;

    Result := resultado;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

str : TStringList;

y, sconta : integer;

begin

    str := arraystring(Edit1.Text,';');

    sconta := str.Count;

    for y := 0 to sconta-1 do

    Memo1.Lines.Add(str[y]);

end;

 

end.

 

 

O exemplo pode ser baixado no site na área de arquivos

Pelo nome:

“Usando StringList como retorno de função como array.”

 

Essa função se assemelha a função “explode“ do PHP

 

Edimar Cardoso

Dúvidas

edimarlnx@gmail.com

 

Publicidade

Vote no artigo




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes do artigo

Categoria: Outros
Adicionado dia: 16/10/05
Por: Edimar Cardoso
Visualizado: 61259 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009