PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

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:

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

Tronbr

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar