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
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009