15738 - Access violation at address - Regra por processo
Problema: Ao alterar a Ficha Básica, ocorre o seguinte erro:
Não foi possível alterar colaborador. Acces violation at address 43D34AFD in module svcl02.bpl. Read of address 0DCEF010.
O problema ocorre ao final de uma regra que era chamada por outra. Também pode ocorrer em outros processos que utilizam regras especiais.
Quando ocorre / onde se aplica: Quando utilizar regra especial que tenha definido uma função e alguma variável da função estiver também definida em outra regra.
Solução: Identificamos que havia uma regra onde foi definida uma função e algumas outras regras possuíam a mesma variável desta função.
Exemplo:
=> Regra 01
Definir Funcao AltSituacao (Numero vSitOri, Numero vSitDes);
Funcao AltSituacao (Numero vSitOri, Numero vSitDes);
Inicio
HorSit[vSitDes] = HorSit[vSitOri];
HorSit[vSitOri] = 0;
Fim;
=> Regra 02
Existir uma segunda regra utilizando uma das variáveis mencionadas acima, como por exemplo: vSitOri e vSitDes.
Neste caso, ocorrerá access violation.
Conforme o help:
Ao se definir uma função dentro das regras com passagem de parâmetros, deve-se cuidar para que os nomes destes parâmetros não sejam iguais ao nome de nenhuma variável que possa estar empregada em qualquer outra regra, pois ao se fazer isso, quando esta variável for usada, irá corromper algum conteúdo em memória.
Não foi possível alterar colaborador. Acces violation at address 43D34AFD in module svcl02.bpl. Read of address 0DCEF010.
O problema ocorre ao final de uma regra que era chamada por outra. Também pode ocorrer em outros processos que utilizam regras especiais.
Quando ocorre / onde se aplica: Quando utilizar regra especial que tenha definido uma função e alguma variável da função estiver também definida em outra regra.
Solução: Identificamos que havia uma regra onde foi definida uma função e algumas outras regras possuíam a mesma variável desta função.
Exemplo:
=> Regra 01
Definir Funcao AltSituacao (Numero vSitOri, Numero vSitDes);
Funcao AltSituacao (Numero vSitOri, Numero vSitDes);
Inicio
HorSit[vSitDes] = HorSit[vSitOri];
HorSit[vSitOri] = 0;
Fim;
=> Regra 02
Existir uma segunda regra utilizando uma das variáveis mencionadas acima, como por exemplo: vSitOri e vSitDes.
Neste caso, ocorrerá access violation.
Conforme o help:
Ao se definir uma função dentro das regras com passagem de parâmetros, deve-se cuidar para que os nomes destes parâmetros não sejam iguais ao nome de nenhuma variável que possa estar empregada em qualquer outra regra, pois ao se fazer isso, quando esta variável for usada, irá corromper algum conteúdo em memória.