IF não funciona

12/01/2022

11

Saudações a todos! Estou com um problema estranho. Vejam a estrutura a seguir:
 for a := 0 to StringGPerfil.RowCount -1 do
     begin
//      if (StringGPerfil.Cells[1, a + 1] = ComboTurma.Items[ComboTurma.ItemIndex]) then
      if AnsiCompareText(StringGPerfil.Cells[1, a + 1], ComboTurma.Text) = 0 then
       begin
        StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a + 1];
        StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a + 1];
        b := b + 1;
       end;
     end;


Estou brigando com essa estrutura a várias dias. A principio, ela não tem nada de errado, mas não passa na verificação do IF. Já fiz vários teste, dando ShowMessage para ver os valores e tudo está em ordem, mas não funciona de maneira nenhuma.

Só pra contextualizar, estou usando um StringGrid pra exibir alguns dados, mas preciso filtrar algumas informações baseadas em um Combobox e como sei que o StringGrid não tem essa função, estou utilizando um segundo que fica oculto na inicialização do sistema e só aparece quando eu clico no botão Filtrar. Então a intenção é ele aparecer sobre o StringGPerfil somente com as informações filtradas. Lembrando que é uma aplicação simples, que não tem banco de dados. Ela lê as informações de uma planilha do Excel, realiza alguns cálculos e joga a informação em outro StringGrid.

Ahh, a linha do IF com comentário foi apenas mais um teste.

Qualquer ajuda, ficarei muito grato. Abraços

At.te,
Rogério
Responder

Post mais votado

12/01/2022

tente assim (adicionei a função trim)
for a := 1 to StringGPerfil.RowCount do
   if AnsiCompareText(trim(StringGPerfil.Cells[1, a]), trim(ComboTurma.Text)) = 0 then
   begin
      StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a];
      StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a];
      inc(b);
   end;

Responder

Mais Posts

13/01/2022

Rogerio Ms

tente assim (adicionei a função trim)
for a := 1 to StringGPerfil.RowCount do
   if AnsiCompareText(trim(StringGPerfil.Cells[1, a]), trim(ComboTurma.Text)) = 0 then
   begin
      StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a];
      StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a];
      inc(b);
   end;



Hey amigo Emerson, obrigado pela ajuda, mas infelizmente não deu certo. Continua sem executar a ação.
Responder

13/01/2022

Rogerio Ms

Saudações a todos! Estou com um problema estranho. Vejam a estrutura a seguir:
 for a := 0 to StringGPerfil.RowCount -1 do
     begin
//      if (StringGPerfil.Cells[1, a + 1] = ComboTurma.Items[ComboTurma.ItemIndex]) then
      if AnsiCompareText(StringGPerfil.Cells[1, a + 1], ComboTurma.Text) = 0 then
       begin
        StringGFiltro.Cells[0, b] := StringGPerfil.Cells[0, a + 1];
        StringGFiltro.Cells[1, b] := StringGPerfil.Cells[1, a + 1];
        b := b + 1;
       end;
     end;


Estou brigando com essa estrutura a várias dias. A principio, ela não tem nada de errado, mas não passa na verificação do IF. Já fiz vários teste, dando ShowMessage para ver os valores e tudo está em ordem, mas não funciona de maneira nenhuma.

Só pra contextualizar, estou usando um StringGrid pra exibir alguns dados, mas preciso filtrar algumas informações baseadas em um Combobox e como sei que o StringGrid não tem essa função, estou utilizando um segundo que fica oculto na inicialização do sistema e só aparece quando eu clico no botão Filtrar. Então a intenção é ele aparecer sobre o StringGPerfil somente com as informações filtradas. Lembrando que é uma aplicação simples, que não tem banco de dados. Ela lê as informações de uma planilha do Excel, realiza alguns cálculos e joga a informação em outro StringGrid.

Ahh, a linha do IF com comentário foi apenas mais um teste.

Qualquer ajuda, ficarei muito grato. Abraços

At.te,
Rogério



Pessoal, consegui resolver da forma mais bizarra possível. Apenas acrescentei a seguinte linha na estrutura de repetição:

StringGFiltro.RowCount := StringGFiltro.RowCount + 1;


Tenho 2 outros StringGrids que não pedem essa criação de linhas para inserção de dados, mas esse está pedindo, então ficou muito doido..rs.

Enfim, tópico fechado. Obrigado pela ajuda Emerson.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar