[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