Re: [firebase-br] Firebird 1.5.2 + Linux + minha UDF.... está caindo a conexão

dirceu henchen (guarantã do norte/mt) dirceu.h em bol.com.br
Seg Abr 18 21:04:21 -03 2005



vallllllleeeeeuuuu daniel

acho que era isso mesmo.....
ainda nao consegui testar pq tenho que tentar instalar o kylix, mas na mesma 
UDF tem outras duas fuções (substr e tam) que estão no padrão que vc passou


brigadu

Dirceu Altair Henchen
Guarantã do Norte - MT
dirceu.h em bol.com.br


----- Original Message ----- 
From: "Daniel / Tecnobyte" <temp em tecnobyte.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, April 18, 2005 5:10 PM
Subject: Re: [firebase-br] Firebird 1.5.2 + Linux + minha UDF.... está 
caindo a conexão


Experimente alterar de:

function Trin(Source: PChar): PChar; stdcall; export;
begin
  Result := Source;
  StrCopy(Result,Pchar(Trim(Source)));
end;

para:

function Trin(Source: PChar): PChar; cdecl; export;
begin
  Result := Source;
  StrPCopy(Result, Trim(Source));
end;

As mudanças que fiz fora:

- Convenção de chamada da função: troquei stdcall por cdecl. Faz tempo que
li sobre isto num material do Firebird e se não me engano este é o padrão
recomendado para UDFs. Isto pode ser fonte de problemas. Notei também que
você usa cdecl em algumas funções e stdcall em outras. A princípio não faz
sentido misturar as duas convenções.

Segundo o help do Delphi, na convenção de chamada cdecl quem limpa a memória
alocada para passagem dos parâmetros é o processo chamador. Parece fazer
sentido que se você usar stdcall a UDF vai desalocar a memória usada nos
parâmetros, mas como você está usando o ponteiro passado pelo FB para
retornar a string, então o FB está tentando desalocar a memória também. Deve
ser esta a causa do problema.

- Troquei a função StrCopy por StrPCopy e removi o typecast para PChar da
string Source. Isto aqui foi mais para limpeza do código. Não deve fazer
grande diferença.

Atenciosamente.

Daniel P. Guimarães
Tecnobyte informática

Organize seu dia-a-dia com
Tecnobyte Agenda 2.1
Acesse: www.tecnobyte.com.br


----- Original Message -----
From: "dirceu bol" <dirceu.h em bol.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, April 18, 2005 4:28 PM
Subject: Re: [firebase-br] Firebird 1.5.2 + Linux + minha UDF.... está
caindo a conexão


> Daniel....
> os fontes estão no link (ecoudf.dpr  delphi6)
> http://www.dirceu.hpg.ig.com.br/index3.html
>
> agradeço a ajuda
>
> Dirceu Altair Henchen
> Guarantã do Norte - MT
> dirceu.h em bol.com.br
>
> ----- Original Message -----
> From: "Daniel / Tecnobyte" <temp em tecnobyte.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, April 18, 2005 10:52 AM
> Subject: Re: [firebase-br] Firebird 1.5.2 + Linux + minha UDF.... está
> caindo a conexão
>
>
> Mas cadê o código-fonte da UDF?
>
> Atenciosamente.
>
> Daniel P. Guimarães
> Tecnobyte informática
> www.tecnobyte.com.br
>
> > Daniel... La Vai
> >
> > link para baixar a UDF (linux e windows)
> >  http://www.dirceu.hpg.ig.com.br/index2.html
> >
> > CREATE TABLE "TESTE"
> >  (
> >   "NOME" VARCHAR(80)
> >  );
> >  commit;
> >
> >  INSERT INTO "TESTE" ("NOME") VALUES ('LINHA 1');
> >  INSERT INTO "TESTE" ("NOME") VALUES ('LINHA 2');
> >  commit;
> >
> >
> >  DECLARE EXTERNAL FUNCTION TRIM
> >  CSTRING(40) CHARACTER SET NONE
> >  RETURNS CSTRING(40) CHARACTER SET NONE
> >  ENTRY_POINT 'Trin' MODULE_NAME 'ecoudf';
> >  commit;
> >
> >
> >
> > windows 2000-prof/98/xp-prof  + fb 1.5  ou fb 1.0 >> funciona normal
> >  (firebird super server)
> >  conectiva linux 10 (kernel 2.6.5-63077cl) + FB Super server
> >  1.5.2.4731-nptl.i686  >> acontece o erro.
> >
> > já executei chmod 777 * no diretorio /opt/firebird.... ajustei o
> >  diretorio /temp no firebird.conf e dei acesso total (chmod 777 *).
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas:
> http://search.gmane.org/search.php?group=rebase
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas:
http://search.gmane.org/search.php?groupþbase
>


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: 
http://search.gmane.org/search.php?group=rebase






Mais detalhes sobre a lista de discussão lista