Fórum TSTRINGLIST ESTA LLENDO SOMENTE O ULTIMO INDICE A ULTIMA LINHA O QUE FAZER #489220

18/08/2014

0

ESTOU USANDO TSTRING LISTA E O VALOR QUE ESTOU RECEBENDO E SOMENTE DA ULTIMA LINHA O QUE FAZER ?
Pedro Fernandes

Pedro Fernandes

Responder

Post mais votado

18/08/2014

Cria uma variável no private.

Coloca a validação num timer com o tempo necessário para a página carregar.

Põe um botão, seta o valor inicial da variável e ativa o timer.

  private
    iPosList: integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;

  // Validação
  if iPosList >= 0 then
  begin
    if ----  sua validação se passou sai do timer ---- then
    begin
      showmessage('Índice: ' + IntToStr(iPosList));
      exit;
    end;
  end;

  // Se chegou nesse ponto, não passou na validação. Incrementa e tenta novamente.
  Inc(iPosList);

  // Se estourou a lista, sai do timer
  if iPosList > Length(arquivo) - 1 then
    exit;

  WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtLogin').value := arquivo[i];
  WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtSenha').value := arquivo1[i];
  WebBrowser1.OleObject.document.all.item('ctl00$conteudo$btnAcessar',0).Click;

  Timer1.Enabled := True;
end;

procedure TForm1.Button1(Sender: TObject);
begin
  arquivo.LoadFromFile('c:\usuarios.txt');

  arquivo1.LoadFromFile('c:\senhas.txt');

  iPosList := -1;
  Timer1Timer(Timer1);
end;

Renato Rubinho

Renato Rubinho
Responder

Gostei + 1

Mais Posts

18/08/2014

Renato Rubinho

Buenas,

Para pegar o conteúdo todo do TStringList, use a propriedade .text

ShowMessage( tsList.Text );


Para ler linha a linha, passe o índice que deseja. Se já está fazendo desta forma, veja se a variável passada está com o valor do índice desejado.

for i:=0 to tsList.Count-1 do
  ShowMessage( tsList[i] );


Abraççç,
Renato
Responder

Gostei + 0

18/08/2014

Pedro Fernandes

Já se encontra desse jeito , o que acontece é o seguinte , estou importando um arquivo .txt e estou lendo todo o arquivo e atribuindo a uma variável tstringlist, porem quando uso essa variável me retorna somente o ultimo índice a ultima linha , o que quero e pegar o valor do índice atribuir a variável e vou fazer uma condição caso a condição seja aceita vai salvar a linha atual se não passa para a próxima linha e assim por diante.

aguardo contato Obrigado.
Responder

Gostei + 0

18/08/2014

Renato Rubinho

Após ler os dados, usando o SaveToFile() o conteúdo fica correto no arquivo gerado ?

Põe o código de como você está lendo o arquivo. Se usar o LoadFromFile() tem que trazer os dados corretamente, automaticamente.
Responder

Gostei + 0

18/08/2014

Pedro Fernandes

Quando testo a variável no Showmessage(arquivo); ele me retorna os valor certinho na ordem certa do começo ao final certinho mais quando jogo em uma variável pra poder usar em um Tbrowser ele insere somente o ultimo valor da lista o que pode ser ?
Responder

Gostei + 0

18/08/2014

Renato Rubinho

O que é a variável arquivo ? Como você passa para o TString ? Como está abrindo no TWebBrowser ?
Põe o código para ter como analisar.
Responder

Gostei + 0

18/08/2014

Pedro Fernandes

Esse link do webbrowser seria somente um exemplo mais no caso o certo e outro link mais o código segue abaixo.

private
{ Private declarations }
public
arquivo,arquivo1 : TStringList; { Public declarations }
i,j: integer;
linha,linha2 : string;
end;

var
Form1: TForm1;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.btnCarregarClick(Sender: TObject);
var
i: integer;
data : string;
begin
arquivo := TStringList.Create;
try
arquivo.LoadFromFile('c:\usuarios.txt');
Memo1.Lines.Add(arquivo.Text);

for i := 0 to arquivo.Count-1 do
begin
linha := arquivo[i];
lblTeste.Caption := linha;
end;

finally
FreeAndNil(arquivo);
end;
end;
procedure TForm1.btnNavegarClick(Sender: TObject);
begin
WebBrowser1.Navigate('http://centralaluno.favi.br/?instituto=uniplan');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
application.ProcessMessages;
WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtLogin').value := linha;
WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtSenha').value := linha2;
WebBrowser1.OleObject.document.all.item('ctl00$conteudo$btnAcessar',0).Click;
end;

procedure TForm1.btnSenhasClick(Sender: TObject);
var
i: integer;
begin
arquivo1 := TStringList.Create;
try
arquivo1.LoadFromFile('c:\senhas.txt');
Memo2.Lines.Add(arquivo1.Text);

for i := 0 to arquivo1.Count -1 do
begin
linha2 := arquivo1[i];
lblPalavras.Caption := linha2;
end;

finally
FreeAndNil(arquivo1);
end;
end;
Responder

Gostei + 0

18/08/2014

Pedro Fernandes

private
    { Private declarations }
  public
arquivo,arquivo1 : TStringList;    { Public declarations }
i,j: integer;
linha,linha2 : string;
  end;

var
  Form1: TForm1;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.btnCarregarClick(Sender: TObject);
var
i: integer;
data : string;
begin
arquivo := TStringList.Create;
try
arquivo.LoadFromFile('c:\usuarios.txt');
Memo1.Lines.Add(arquivo.Text);

for i := 0 to arquivo.Count-1 do
begin
linha := arquivo[i];
lblTeste.Caption := linha;
end;

finally
FreeAndNil(arquivo);
end;
end;
procedure TForm1.btnNavegarClick(Sender: TObject);
begin
WebBrowser1.Navigate('http://centralaluno.favi.br/?instituto=uniplan');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
application.ProcessMessages;
WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtLogin').value := linha;
WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtSenha').value := linha2;
WebBrowser1.OleObject.document.all.item('ctl00$conteudo$btnAcessar',0).Click;
end;

procedure TForm1.btnSenhasClick(Sender: TObject);
var
i: integer;
begin
arquivo1 := TStringList.Create;
try
arquivo1.LoadFromFile('c:\senhas.txt');
Memo2.Lines.Add(arquivo1.Text);

for i := 0 to arquivo1.Count -1 do
begin
linha2 := arquivo1[i];
lblPalavras.Caption := linha2;
end;

finally
FreeAndNil(arquivo1);
end;
end;
Responder

Gostei + 0

18/08/2014

Pedro Fernandes

alguem ?
Responder

Gostei + 0

18/08/2014

Renato Rubinho

Do jeito que está fazendo, a cada passo do loop a variável é sobreposta pelo último valor, ficando sempre na "linha" e na "linha2", o valor do último registro.


Você pode jogar o valor direto do tstringlist, sabendo q

arquivo.LoadFromFile('c:\usuarios.txt');

arquivo1.LoadFromFile('c:\senhas.txt');

// exemplo abaixo, pega o usuário e senha do índice 5;

WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtLogin').value := arquivo[5];
WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtSenha').value := arquivo1[5];
WebBrowser1.OleObject.document.all.item('ctl00$conteudo$btnAcessar',0).Click;

Responder

Gostei + 0

18/08/2014

Renato Rubinho

Dei enter sem querer... rsrs, finalizando:

Do jeito que está fazendo, a cada passo do loop a variável é sobreposta pelo último valor, ficando sempre na "linha" e na "linha2", o valor do último registro.

Você pode jogar o valor direto do tstringlist, sabendo qual a posição que deseja.

arquivo.LoadFromFile('c:\usuarios.txt');

arquivo1.LoadFromFile('c:\senhas.txt');

// exemplo abaixo, pega o usuário e senha do índice 5;

WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtLogin').value := arquivo[5];
WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtSenha').value := arquivo1[5];
WebBrowser1.OleObject.document.all.item('ctl00$conteudo$btnAcessar',0).Click;

Responder

Gostei + 0

18/08/2014

Pedro Fernandes

mais ai que ta dessa forma eu ja tinha ideia , o negocio é que quero fazer de forma automatizada ou seja , vou pega o valor indice um joga no .value:= arquivo; ai iria cria uma condição que pegasse a primeira linha dos loguins e jogasse no loguin pegasse a primeira linha da senha jogasse na senha, depois iria da um SUBMIT no botao entrar e depois iria criar uma condiçao que seria no caso , se achar "palavra" no site no html iria salvar a linha do loguin e salvar a linha da senha , e pulasse pra próxima linha tudo automático.
Responder

Gostei + 0

18/08/2014

Renato Rubinho

põe isso dentro do loop.

for i:=0 to Length(arquivo)-1 do
begin
  WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtLogin').value := arquivo[i]; 
  WebBrowser1.OleObject.document.all.tags('input').item('ctl00$conteudo$txtSenha').value := arquivo1[i]; 
  WebBrowser1.OleObject.document.all.item('ctl00$conteudo$btnAcessar',0).Click;


  // aguarda o retorno do webbrowser e testa


  // ############
end;
Responder

Gostei + 0

18/08/2014

Pedro Fernandes

Nao da certo infelizmente!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar