[firebase-br] Problema com Firebird 2.1

Rodrigo dominio em engeplus.com.br
Qui Nov 20 20:30:33 -03 2008


Boa Noite a Todos...
Estou com o seguinte problema,
Migrei o Firebird 1.5 para o 2.1 e algumas procedures que funcionavam bem
antes agora estao com problemas:
Ex.  tenho um Cast(VTotal as Numeric(8,2))

onde VTotal é um Varchar(20) com a string 20,00.

Quando vai converter exibe erro.
Overflow occurred during data type conversion.conversion error from string
"20,00".

Dae se mudar para 20.00 funciona.

Entao resolvi fazer uma UDF pra fazer a conversão, fiz do seguinte modo:

na unit Func:

unit Func;

interface

function TrocaVirgPonto(Valor: string): string; cdecl; export;

implementation

function TrocaVirgPonto(Valor: string): string;
var  i: integer;
begin
     try
     for i := 1 to Length(Valor) do
     if Valor[i] = ',' then
     Valor[i] := '.';
     except
     //
     end;
     Result := valor;
end;

end.

e no projeto:

library Funcoes;
uses
  SysUtils,
  Classes,
  IB_Utils,
  Func in 'Func.pas';

{$R *.res}

exports
TrocaVirgPonto;

begin
end.

no registro fiz assim:
declare external function Func
cstring(64)
returns cstring(64) free_it
entry_point 'TrocaVirPonto' module_name 'Funcoes.dll"';


Só que sempre que vou usar a função cai o servidor Firebird...

Se alguem puder dar uma ajuda...

Atenciosamente,
Rodrigo






Mais detalhes sobre a lista de discussão lista