sábado, 17 de março de 2007

Usando StringList para retornar várias Strings

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


// entrada de dados

//para função “S” recebe string, “separador” recebe caracter de separação da string.

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

var

conta : integer; // variáveis auxiliares

resultado : TStringList; // variáveis auxiliares

Saux : string; // variáveis auxiliares

begin

// inicializa variavel

resultado := TStringList.Create;

//pega posição do separador

conta := pos(separador,S);

// verifica se existe o separador caso contrario trata apenas

// como uma única linha

if conta <> 0 then

begin

// enquanto S não for nulo executa

while trim(S) <> '' do

begin

// Variável Saux recebe primeiro valor

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

//deleta primeiro valor

delete(S,1,conta);

//se não ouver mais separador Saux equivale ao resto da

//linha

if conta = 0 then

begin

Saux := S;

S := '';

end;

// adiciona linhas na string lista

resultado.Add(Saux);

//pega posição do separador

conta := pos(separador,S);

end;

end

else

begin

Saux := S;

resultado.Add(Saux);

end;

// retorna resultado como uma lista indexada

Result := resultado;

end;


Para ver a utilização do código acesse este site.


Um comentário:

Anônimo disse...

Meu amigo Erick, voce poderia usar Tstringlist.Delimiter e Tstringlist.DelimitedText. Automaticamente você teria como retorno um array de strings.

Abs,
Paulo Maluco (ex DSN-PACK)

Neobux