Comparação de duas variáveis (inclusive objeto) usando Compare – Maratona AdvPL e TL++ 085

Nesse vídeo demonstraremos em como fazer a comparação de duas variáveis (inclusive array, objetos e blocos de código) usando a função Compare.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe085
Exemplo de como comparar duas variáveis (inclusive objetos, arrays e blocos de código)
@type Function
@author Atilio
@since 09/12/2022
@obs 
    Função Compare
    Parâmetros
        + Informa a variável que irá comparar (array, objeto, bloco de código, numérico, caractere, lógico e data)
        + Informa a variável que será comparada (array, objeto, bloco de código, numérico, caractere, lógico e data)
        + Caso seja um array e você quiser ver qual a posição que esta diferente passe esse atributo com o @
    Retorno
        + Retorna .F. se houver diferença e .T. se estiver igual

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe085()
    Local aArea     := FWGetArea()
    Local oFont1
    Local oFont2
    Local aArray1   := {}
    Local aArray2   := {}
    Local nPosDif   := 0

    //Instancia a classe TFont em dois objetos
    oFont1 := TFont():New("Tahoma", , -12)
    oFont2 := TFont():New("Tahoma", , -12)

    //Compara os dois objetos
    If Compare(oFont1, oFont2)
        FWAlertSuccess("Os dois objetos são iguais", "Teste Compare com Objetos")
    Else
        FWAlertError("Os dois objetos são diferentes", "Teste Compare com Objetos")
    EndIf



    //Monta os dois arrays
    aAdd(aArray1, "Daniel")
    aAdd(aArray1, "João")
    aAdd(aArray1, "Maria")
    
    aAdd(aArray2, "Daniel")
    aAdd(aArray2, "José")
    aAdd(aArray2, "Maria")
    
    //Compara os dois arrays
    If Compare(aArray1, aArray2, @nPosDif)
        FWAlertSuccess("Os dois arrays são iguais", "Teste Compare com Arrays")
    Else
        FWAlertError("Os dois arrays são diferentes, primeira diferença encontrada em " + cValToChar(nPosDif), "Teste Compare com Arrays")
    EndIf

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação