[firebase-br] Nem o Google sabe: UDF com freepascal

Fábio Marques fmarques em nautilus.com.br
Qua Ago 20 10:51:15 -03 2008


    Realmente não! Isso não aconteceu comigo aqui! Nem de aparecer um 
nome 'lib' na frente e nem do erro (invalid request).

Atenciosamente,

-- 
F. Marques
Systems Analyst/IT Consultant
E-mail/MSN: fmarques em nautilus.com.br
Home Page: www.nautilus.com.br/~fmarques
Mobile: 91 8208-5996 / ICQ: 267-074-196
Linux Registred User #362204 (debian 4.0 "etch")
Brazilian Computer Society Member #18201

"The box said: Requires MS Windows or better, so I instaled Linux"


Sicnemelpor wrote:
> No FreePascal em Linux, ele coloca automaticamente o prefixo 'lib' no  
> começo do teu executável (.so) quanto você diz que é uma 'library'.
>
> []s
> Nelson Sicuro
>
>   
>> Quando fiz UDF para Linux, não precisei deixar o prefixo "lib" no nome do
>> arquivo. Afinal, é estranho isto por que o nome do arquivo nada tem a ver
>> com seu conteúdo.
>>
>> Atenciosamente.
>>
>> Daniel P. Guimarães
>> Tecnobyte Informática
>> www.tecnobyte.com.br
>>
>> ----- Original Message -----
>> From: "Paulo" <paulo em manfra.com.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Wednesday, August 20, 2008 8:46 AM
>> Subject: Re: [firebase-br] Nem o Google sabe: UDF com freepascal
>>
>>
>> Obrigado pelas respostas, Fábio e Daniel.
>>
>> Bom, primeiramente, estava comento bola: o arquivo da udf tem que
>> começar "lib", senão não rola. Feito isto, começei a ter um outro erro:
>>
>> Invalid token.
>> Invalid request BLR at offset 70.
>> Function SEM_ACENTO is not defined.
>> Module name or entrypoint could not be found.
>>
>> Aqui está a declaração da udf:
>>
>> DECLARE EXTERNAL FUNCTION SEM_ACENTO
>>   CSTRING(3000) CHARACTER SET NONE
>> RETURNS CSTRING(80) CHARACTER SET NONE FREE_IT
>> ENTRY_POINT 'tira_acento' MODULE_NAME 'udfs';
>>
>>
>> Este é a dpr que estou querendo converter para freepascal (já tentei
>> compilar com -Mdelphi e -Mobjfpc):
>>
>> library udfs;
>>
>> uses
>>    Interbase in 'Interbase.pas',
>>    ib_util in 'ib_util.pas';
>>
>> exports
>>    valor_atualizado,
>>    tira_acento,
>>    valor_nulo,
>>    existe_dados,
>>    existe_dados2,
>>    meio,
>>    retiranum,
>>    distancia;
>>
>> begin
>> end.
>>
>>
>> Em Interbase.pas há a definição e a implementação da função, dessa forma:
>>
>> function tira_acento(str1: pchar): pchar; stdcall;
>>
>> Já tentei com stdcall e com cdecl, como vocês disseram, mas o resultado
>> foi o mesmo erro que reportei acima. O que quer dizer este "Invalid
>> request BLR at offset 70."?
>>
>>
>>
>>
>>
>>
>> Tecnobyte Informática escreveu em 19/08/2008 18:17:
>>     
>>> Uma certa vez eu escrevi UDF e compilei com FreePascal. Salvo engano  
>>> você
>>> deve usar a convenção de chamada stdcall se for Delphi e cdecl se for
>>> FreePascal. Não sei por que, mas stdcall com FreePascal dá problema com
>>> UDFs. Na prática Delphi e Free Pascal devem tratar de forma diferentes  
>>> as
>>> convenções de chamadas (embora não deveriam!).
>>>
>>> As convenções de chamada stdcall e cdecl são semelhantes, mas não
>>> idênticas.
>>>
>>> Atenciosamente.
>>>
>>> Daniel P. Guimarães
>>> Tecnobyte Informática
>>> www.tecnobyte.com.br
>>>
>>> ----- Original Message -----
>>> From: "Paulo" <paulo em manfra.com.br>
>>> To: "'FireBase'" <lista em firebase.com.br>
>>> Sent: Tuesday, August 19, 2008 4:38 PM
>>> Subject: [firebase-br] Nem o Google sabe: UDF com freepascal
>>>
>>>
>>> Estou tentando migrar um Interbase 6.0 rodando em Windows 2000 para um
>>> Firebird 1.5.3 no Debian (mais pra frente vamos para o 2.x.x). Procurei
>>> na internet sobre a compilação de udfs com o freepascal e só o que
>>> encontrei é: não funciona! A udf compila direitinho, mas ao ser chamada,
>>> o firebird retorna o seguinte erro:
>>> Unsuccessful execution caused by system error that does not preclude
>>> successful execution of subsequent statements.
>>> Subsystem name.
>>>
>>> Se eu bagunçar o nome da função ou o noma da so, o erro é de entry point
>>> ou module name não encontrado. Normal. O problema é quando ele acha!
>>>
>>> Bom, algum de vocês sabe de alguma forma de compilar udfs com o
>>> freepascal?
>>>
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>       
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:  
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>     




Mais detalhes sobre a lista de discussão lista