[firebase-br] dll para firebird 64 bits.

Carlos H. Cantu listas em warmboot.com.br
Qua Set 21 16:35:29 -03 2011


UDFs que devolvem strings devem respeitar uma série de regras para que
funcionem sem ferrar com o Firebird. Olhando para o seu código, eu
diria que vc não esteja respeitando essas regras (vc não está locando
memória para o retorno, e nem usando um parâmetro de entrada pra
retornar). Se vc tiver meu livro, eu explico elas, e vc também pode
procurar pela Internet.

O fato de funcionar com o 2.1 pode ser pura "sorte/coincidência".

Outra coisa, a FreeAdHocLib implementa zilhões de funções, e talvez vc
possa usa-la (já que são testadas e confiáveis, e tem versões para 32
e 64bits) ao invés de criar as suas.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

ss> Entao, 
ss>  
ss> vou detalhar um pouco mais sobre o problema.
ss>  
ss> tenho um arquivo .dpr que contem algumas funções que eu uso com o firebird.
ss> Todas elas compiladas com o delphi 7 para 32 bits.
ss>  
ss> uma funcao es especial e esta : 
ss>  
ss> function ffilterNumeric (s: PChar): PChar; cdecl; export;
ss> var
ss>    r, i: Integer;
ss>    Res : String;
ss> begin
ss>    for r := 1 to length(s) do begin
ss>       // caso achou o caracter na array de interiros
ss>       i := Pos(s^, ArrayWithOutInteiros);
ss>       if i > 0 then begin
ss>           Res := Res + ArrayWithOutInteiros[i];
ss>       end;
ss>       Inc(s);
ss>    end;
ss>    Result := PChar(Res);
ss> end;
ss>  
ss> Funciona perfeitamente com o firebird 2.1 32 bits. Ja com o firebird 2.5 não funciona.
ss>  
ss> Quanto ao free pascal, eu tentei utilizar o fpc 2.2.4 64bits, mas
ss> o problema e  que ai deu erro de sintaxe do codigo e tambem de conversões como
ss> por exemplo "Illegal type conversion  : ShortString to ^Char"
ss> Eu nao sou muito experiente, gostaria de saber se tem outra forma
ss> de compilar estas funcoes sem ter que alterar o codigo fonte. Ou
ss> entao em que linguaguem eu deveria escrevelas para que elas possam ser compiladas.
ss>  
ss> Grato a todos.
ss>  
ss>  
ss>  
ss> Em 20 de setembro de 2011 11:46, Carlos H. Cantu
ss> <listas em warmboot.com.br>escreveu:

ss> Já tentou o FreePascal?
ss>  
ss>  []s
ss>  Carlos H. Cantu
ss>  www.FireBase.com.br - www.firebirdnews.org
ss>  www.warmboot.com.br - blog.firebase.com.br
ss>  
 ss>> Bom dia a todos.
 ss>> Tenho uma questão que gostaria de discutir:
ss>  
 ss>> tenho uma dll que roda perfeitamente com o firebird 2.1 - 32 bits no SO 64
 ss>> bits. Mas ao tentar atualizar o firebird para a versão 2.5 64 bits não
 ss>> consigo mais utilizar minha dll.
 ss>> fiz o seguinte teste, utilizando o delphi xe2 compilei novamente minha dll
 ss>> mudando a plataforma para 64 bits, assim consegui utilizar as chamadas das
 ss>> funções, no entanto o resultado que obtive com as funções não foram os
 ss>> mesmos que eu tinha com a dll compilada para 32 bits(compilada em delphi 7).
ss>  
 ss>> Gostaria de saber se alguem conhece outro compilador que eu possa utilizar
 ss>> para compilar minha dll para 64 bits ou outra forma de eu utilizar ela no
 ss>> firebird 64 bits.
ss>  
 ss>> Grato pela atenção.





Mais detalhes sobre a lista de discussão lista