[firebase-br] PROBLEMAS COM UDF - URGENTE!!!!

Evandro Paloschi epaloschi em yahoo.com.br
Qui Jun 30 15:45:08 -03 2005


Olá Amigos,
 
    Criamos uma UDF que recebe 3 parametros PChar e devolve a concatenação dos mesmos. O problema é que quando passamos valores nulos para a UDF está derrubando a conexão com o FIREBIRD.
 
    Alguém saberia o porque que a UDF está derrubando a conexão??? Tem algo a ver com os valores nulos Se for isto como posso codificar minha UDF, pois ela foi criada com o proposito de devolver os parametros concatenados, mesmo que algum deles fosse nulo.
 
    Abaixo segue o codigo da UDF em delphi e a sua declaração no banco.
 
function Udf_DescrItem( DescrItem, DescrLin, DescrCol: PChar ): PChar;
var
  StrRet: string;
begin
  StrRet := '';
  if  ( DescrItem <> nil ) and ( StrLen(DescrItem) > 0 ) then
      StrRet := ( StrRet + DescrItem + ' ' )
  {endif};
  if  ( DescrLin <> nil ) and ( StrLen(DescrLin) > 0 ) then
      StrRet := ( StrRet + DescrLin + ' ' )
  {endif};
  if  ( DescrCol <> nil ) and ( StrLen(DescrCol) > 0 ) then
      StrRet := ( StrRet + Trim(DescrCol) )
  {endif};
  Result := RetornaString( PChar( StrRet ) );
end;
function RetornaString( Texto: PChar ): PChar;
var
  Tamanho: DWord;
begin
  Tamanho := StrLen( Texto ) + 1;
  Result := GetMemory( Tamanho );
  if  Tamanho = 1 then
      Result[0] := #0
  else
      Move( Texto^, Result^, Tamanho )
  {endif};
end;

/*  External Function declarations */
DECLARE EXTERNAL FUNCTION UDF_DESCRITEM
CSTRING(50) CHARACTER SET WIN1252, CSTRING(30) CHARACTER SET WIN1252, CSTRING(30) CHARACTER SET WIN1252
RETURNS CSTRING(112) CHARACTER SET WIN1252 FREE_IT
ENTRY_POINT 'Udf_DescrItem' MODULE_NAME 'RGLibUdf';
 
 
Desde já,
 
Agradeço.

__________________________________________________
Converse com seus amigos em tempo real com o Yahoo! Messenger 
http://br.download.yahoo.com/messenger/ 


Mais detalhes sobre a lista de discussão lista