IF não funciona

12/01/2022

0

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
Rogerio Ms

Rogerio Ms

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;

Emerson Nascimento

Emerson Nascimento
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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar