Imprimi Página | Fechar janela

type mismatch on compare

Impresso de: Helpfacil - Portal do conhecimento
Nome do Forum: ADVPL
Descrição do Forum: Dúvidas sobre a programação em ADVPL
URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=44437
Data da Impressão: sábado, 24 de fevereiro de 2024 at 17:17


Topico: type mismatch on compare

Postado por: BEHRSP
Assunto: type mismatch on compare
Data Postagem: segunda-feira, 12 de fevereiro de 2024 at 09:26

Bom dia.

Tudo bem ?

Começando em programação, estou com uma dúvida.

Peguei um fonte com problema, este fonte faz a aglutinação das Ordens de Produção.

Porém, em determinada linha, ele faz um for
E tem uma comparação de pelo que eu entendi, um numero e um objeto.
Será que é por isso que está gerando o error quando executo.
É exatamente nesta linha que para e dá o erro.

Alguém tem uma dica de como posso corrigir?
Claro que fica meio complicado sem ver o fonte inteiro, mas o fonte tem 2000 linhas.



   // Existe OP selecionada
   Local lTemOPSelec := .F.

   // verificar se existem OPs selecionadas
   for nLin := 1 to Len(grdAux)
       if (grdAux[nLin,2] == oBmpOK)
          lTemOPSelec := .T.
          EXIT
       endif
   next nLin

Este é o trecho, e onde está é na linha do IF. a linha 870

type mismatch on compare on AGLUTINAROP(APCPA04.PRW) 07/08/2023 13:11:55 line : 870


Obrigado


Respostas:

Postado Por: ELTON93
Data Postagem: terça-feira, 13 de fevereiro de 2024 at 22:00

Coloca o Fonte aí, Irmão.



Postado Por: BEHRSP
Data Postagem: quarta-feira, 14 de fevereiro de 2024 at 05:45

Bom dia.
Segue anexo.

Obrigado



Postado Por: ROBERTOMEN
Data Postagem: quarta-feira, 14 de fevereiro de 2024 at 09:19

bom dia

Fazendo uma análise rápida em seu fonte vejo que se grdaux é uma cópia do acols então seu if deve ser assim:

if (grdAux[nLin][2] == oBmpOK)

mas para ter certeza, basta vc debugar criando um ponto de parada nesta linha e editando grdAux para ver a posição 2 dele.

sem pre vc tentar comparar uma variável ou vetor com conteúdos diferente o erro type mismatch será apresentado, por exemplo:

A = 10     // VARIÁVEL tipo N
B = ‘DEZ‘ // VARIÁVEL tipo Caracter

if A = B // vai dar erro


A = .T.        // VARIÁVEL tipo LÓGICA
B = ‘VERDADE‘ // VARIÁVEL tipo Caracter

if A = B // vai dar erro


A[1] = .T.        // vetor posição 1 tipo LÓGICo
B[2] = ‘VERDADE‘ // vetor posição 1 tipo Caracter

if A = B // vai dar erro

é isto que está acontecendo na sua rotina.



Procure sempre se atentar aos valores das variáveis ou vetores





Postado Por: BEHRSP
Data Postagem: quarta-feira, 14 de fevereiro de 2024 at 12:45

Show, mto obrigado vou fazer aqui posto em seguida.
Obrigado




Imprimir Página | Fechar Janela