IF não funciona

Delphi

12/01/2022

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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;

GOSTEI 1

Mais Respostas

Rogerio Ms

Rogerio Ms

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;



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

Rogerio Ms

12/01/2022

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.
GOSTEI 0
POSTAR