Incrementando parametros automaticamente em uma função antes dela ser executada

Delphi

31/05/2013

Estou criando uma função que captura parâmetros de um arquivo TXT. Então, basicamente eu encontro o cabeçalho no arquivo, e capturo as informações nas linhas abaixo: Exemplo do código:


function TForm1.GetNome(linha: string): string;
begin
linha:= Copy (linha, Pos('"', linha) +1, Length(linha));
Delete(linha, Pos('"', linha), Length(linha));
result:= linha;
end;

function TForm1.GetTelefone(linha: string): string;
begin
linha:= Copy (linha, Pos('Tel', linha) +5, Length(linha));
Delete(linha, Pos(' Cpf', linha), Length(linha));
result:= linha;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Arquivotxt: TStringList; I: Integer;
begin
Arquivotxt := TStringList.Create;
Arquivotxt.LoadFromFile('clientes');
try
for I := 0 to Arquivotxt.count do
begin
if Arquivotxt[I] = 'cliente (' then
Begin
Edit1.Text:= GetNome(Arquivotxt[I +1]);
Edit2.Text:= GetTelefone (Arquivotxt[I +3]);
End;
end;
finally
FreeAndNil(Arquivotxt);
end;

A grande questão é a seguinte. Para eu capturar os dados, eu preciso incrementar manualmente a numeração da linha, após a identificação da marca que inicia a função. Como existem muitas linhas (GetNome(Arquivotxt[I +1]), GetTelefone (Arquivotxt[I +3] dentre muitos outros, a chance de acontecer um erro utilizando estas funções é muito grande.

Existiria uma forma de incrementar automaticamente o índice do TStringList no próprio parâmetro da função:
Exemplo primitivo da ideia:

function TForm1.GetNome( (linha[x +1]): string): string;

Minha ideia é passar o parâmetro primitivo na função "Arquivotxt[I]" e automaticamente a função entenda que ele deve capturar a string Arquivotxt[I+1]...
Isso é possível??

Obs. Eu não gostaria de passar a TStringList inteira para função, pois o arquivo é muito extenso, e ocorreria problemas de performance e péssimo gerenciamento de memória, pois o loop consequentemente é longo, ultrapassando 15000 linhas.


Agradeço a atenção...


Cesar Peixoto

Cesar Peixoto

Curtidas 0

Respostas

Lorival Filho

Lorival Filho

31/05/2013

envia exemplo do arquivo txt
GOSTEI 0
POSTAR