Fórum UDF´s migradas do firebird 2.5 para 3.0 #562676
21/09/2016
0
caros colegas, a uns tempos atras fiz algumas migrações de alguns bancos de dados para o firebird 3.0. Em meus sistemas utilizo funcoes externas com UDF´s porem nessa migração algumas apresentaram erros nos quais consegui arrumar, agora tem uma função que nao consigo de maneira alguma, segue abaixo a funcao que estou tentando utilizar
function udf_StrZero(Valor,Qtd: Integer): PAnsiChar; cdecl; export;
Var Zeros :Integer;
Aux,Numero :AnsiString;
I :Integer;
begin
Zeros := (Qtd - Length(InttoStr(Valor)));
Numero := '';
Aux := InttoStr(Valor);
For I := 1 to Zeros do
Numero := Numero + '0';
Numero := Numero + Aux;
Result := PAnsiChar(AnsiString(Numero));
End;
nas outras funcoes que estavam dando erro o problema era na variavel de retorno que estava PChar e retornava somente um caracteres mudei para PAnsiChar e resolveu agora nessa funcao mesmo fazendo a mesma mudança nao consigo, se eu pegar a variavel de entrada "VALOR" e retornar sem adicionar os zeros a esquerda nao da erro porem se se usar o loop para montar a string com os zeros me retorna a mensagem de erro firebird.msg not found e a conexao fecha. se alguem poder me ajudar criando uma funcao que de fato rode na udf para firebird 3.0 ficaria muito grato.
function udf_StrZero(Valor,Qtd: Integer): PAnsiChar; cdecl; export;
Var Zeros :Integer;
Aux,Numero :AnsiString;
I :Integer;
begin
Zeros := (Qtd - Length(InttoStr(Valor)));
Numero := '';
Aux := InttoStr(Valor);
For I := 1 to Zeros do
Numero := Numero + '0';
Numero := Numero + Aux;
Result := PAnsiChar(AnsiString(Numero));
End;
nas outras funcoes que estavam dando erro o problema era na variavel de retorno que estava PChar e retornava somente um caracteres mudei para PAnsiChar e resolveu agora nessa funcao mesmo fazendo a mesma mudança nao consigo, se eu pegar a variavel de entrada "VALOR" e retornar sem adicionar os zeros a esquerda nao da erro porem se se usar o loop para montar a string com os zeros me retorna a mensagem de erro firebird.msg not found e a conexao fecha. se alguem poder me ajudar criando uma funcao que de fato rode na udf para firebird 3.0 ficaria muito grato.
Sergio Back
Curtir tópico
+ 1
Responder
Clique aqui para fazer login e interagir na Comunidade :)