Fórum UDF, erro ao passar parametro. #51450
01/07/2005
0
boa tarde senhoras e senhores,
estou adaptando uma rotina de encriptação para ser utilizada em uma UDF, mas quando vou chamar a rotina ocorre o seguinte erro:
[u:85dcd8494f]Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.[/u:85dcd8494f]
a rotina é a seguinte:
A declaração desta função no banco de dados estou fazendo da seguinte forma:
a chamada a ela é a seguinte:
Como ainda estou adaptando a função os dados estão sem encriptação e seram encriptados apenas quando forem mostrados no select.
Acontece que se eu comentar a linha:
e descomentar a linha:
ai da certo, mas todas as linhas na coluna em que estou usando a função vai logicamente aparecer a palavra funciona. Então acredito que seja um erro de passagem de parametros, se alguem puder me ajudar ficarei muito agradecido.
estou adaptando uma rotina de encriptação para ser utilizada em uma UDF, mas quando vou chamar a rotina ocorre o seguinte erro:
[u:85dcd8494f]Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.[/u:85dcd8494f]
a rotina é a seguinte:
function encripta(Src: PChar): PChar; cdecl; export; var KeyLen: Integer; KeyPos: Integer; OffSet: Integer; Dest: string; Key: string; SrcPos: Integer; SrcAsc: Integer; Range: Integer; temp : string; begin result := Src; if (Src = ´´) then begin Result := ´´; exit; end else temp := Src; Key := ´TLCK 9Y´; Dest := ´´; KeyLen := Length(Key); KeyPos := 0; Range := 256; Randomize; OffSet := Random(Range); Dest := Format(´¬1.2x´, [OffSet]); for SrcPos := 1 to Length(temp) do begin SrcAsc := (Ord(temp[SrcPos]) + OffSet) mod 255; if KeyPos < KeyLen then KeyPos := KeyPos + 1 else KeyPos := 1; SrcAsc := SrcAsc xor Ord(Key[KeyPos]); Dest := Dest + Format(´¬1.2x´, [SrcAsc]); OffSet := SrcAsc; end; StrPCopy(Src, Dest); // StrPCopy(Src, ´AB1017´); end; exports encripta; end.
A declaração desta função no banco de dados estou fazendo da seguinte forma:
DECLARE EXTERNAL FUNCTION encripta CSTRING(50) RETURNS CSTRING(50) ENTRY_POINT ´encripta´ MODULE_NAME ´UDFDIV´;
a chamada a ela é a seguinte:
select encripta(modulo) from seguranca;
Como ainda estou adaptando a função os dados estão sem encriptação e seram encriptados apenas quando forem mostrados no select.
Acontece que se eu comentar a linha:
StrPCopy(Src, Dest);
e descomentar a linha:
StrPCopy(Src, ´FUNCIONA´);
ai da certo, mas todas as linhas na coluna em que estou usando a função vai logicamente aparecer a palavra funciona. Então acredito que seja um erro de passagem de parametros, se alguem puder me ajudar ficarei muito agradecido.
Tronbr
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)