[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