Re: RES: [delphi-br] Criando DLL

2006-05-25 Por tôpico Valfrid-Ly Silva Couto



Em Pascal realmente não, mas dá uma olhada na documentação do Delphi pois eles mudaram isso, afinal, uma string pura não poderia passar de 255 chars pois é o máximo que se consegue marcar na posição 0 da string.

Não sei se você já tentou, mas no Delphi você passa desse ponto e não pode mais acessar a posição 0 da string para determinar o tamanho, como se podia fazer no Turbo Pascal!

Campus [EMAIL PROTECTED] escreveu: Valfrid, acho que tu fez uma pequena confusão.

Se não estou enganado em C as strings são Null terminated, mas Pascal não.

- Original Message - 
From: Valfrid-Ly Silva Couto 
To: 
Sent: Wednesday, May 24, 2006 3:20 PM
Subject: Re: RES: [delphi-br] Criando DLL


Isso só funciona porque no Delphi, as Strings também tem como terminador o
caracter #0



- Original Message - 
From: Rubem Nascimento da Rocha
To:
Sent: Wednesday, May 24, 2006 9:25 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Não necessariamente um array, mas PChar é um ponteiro para dados do tipo
 char. Sds.


 From: Marcelo Alves
 Reply-To: delphi-br@yahoogrupos.com.br
 To: delphi-br@yahoogrupos.com.br
 Subject: Re: RES: [delphi-br] Criando DLL
 Date: Wed, 24 May 2006 09:21:32 -0300
 
 No caso então quem for usar a minha DLL precisar passar os parâmetros em
 PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.
 
 Marcelo.
 
 
 Em 24/05/06, Campus escreveu:
  
   Se não me engano, PChar é uma array de chars terminado por um caracter
   nulo,
   e o String não.
  
   Basicamente é o segunte:
  
   FILIPE
  
   em PChar = FILIPE#0.
   em String = 6FILIPE.
  
   O primeiro byte do string contém seu tamanho, por isso passar uma
string
   como parâmetro para uma DLL pode congelar o Windows, uma vez que ele
não
   encontra o fim da string, que é marcado pelo caracter nulo..
  
  
  
  
   - Original Message -
   From: Filipe Belchior
   To:
   Sent: Tuesday, May 23, 2006 6:08 PM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
   Marcello,
  
   Explicar sobre PChar, tecnicamente, eu não sei, rs..
   ..mas acontece o seguinte, usando string vc tem resultado
   dos métodos todo errado!
  
   agora, sobre o form do report, vc falou pouco sobre
   como vc esta fazendo. mostre como vc ta fazendo.
  
  
  
   --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
   escreveu
   
Felipe,
   
Primeiramente, obrigado pela resposta, você não sabe o quanto me
ajudou, você e os outros amigos do grupo. Agora me diga uma coisa,
no
primeiro form o problema foi resolvido, agora estou com problemas
quando ao outro que no Caso é um Report. Quando uso o Report num
projeto comum, ele funciona normal ao chamar qualquer obejto do
mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
violation. Tenho que instacia-lo ou fazer alguma chamada
diferenciada
para poder utilizá-lo na minha DLL???
   
Outra coisa, porque Pchar ao invés de String? Só para
conhecimento!!!
   
Marcelo.
   
   
--- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
escreveu

 ..outra coisa,

 no caso, vc ta usando ADO, já vou avisando que vc terá problemas
 com ActiveX em projeto DLL.. para resolver, faça o seguinte:

 no OnCreate do 1o form a ser criado no projeto dll, inclua a
linha:

 CoInitialize( nil );

 ..e no OnDestroy:

 CoUninitialize;

 ..Ah! assim como o Anderson comentou, não use String nos
parametros
 dos métodos que serão exportados na sua dll.. sendo assim, basta
mudar
 o seguinte:

 Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;


 ..pronto, valeu!!


 ___
 Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
celular e anti-spam realmente eficaz.
 http://br.info.mail.yahoo.com/

   
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
 
 
 --
 Marcelo A. Souza
 
 
 [As partes desta mensagem que não continham texto foram removidas]
 

 _
 MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br



 -- 
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos











-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



Links do Yahoo! Grupos










Valfrid-Ly Silva Couto
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
ICQ 15114646

-
 Yahoo! doce lar. Faça do Yahoo! sua homepage.

[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



Links do Yahoo! Grupos










-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM

Re: RES: [delphi-br] Criando DLL

2006-05-25 Por tôpico Campus



Não encontrei na documentação do Delphi referência a string terminada com
nulo. Se tu puder me indicar fico grato.

Só encontrei que as LongString, que possuem no mínimo 4 bytes, são um
ponteiro para a estrutura real da string. Nesse caso tu não tem essa
limitação de comprimento do primeiro byte.

Minha curiosidade é em função de certa vez que estava lendo sobre criação de
UDFs para Interbase, se fazia nescessário a passagem de parâmetros com
arrays de char, a única forma de construção de strings terminadas em nulo
possível em Delphi, em consequencia do Pascal.


- Original Message - 
From: Valfrid-Ly Silva Couto [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Thursday, May 25, 2006 9:09 AM
Subject: Re: RES: [delphi-br] Criando DLL


Em Pascal realmente não, mas dá uma olhada na documentação do Delphi pois
eles mudaram isso, afinal, uma string pura não poderia passar de 255 chars
pois é o máximo que se consegue marcar na posição 0 da string.

Não sei se você já tentou, mas no Delphi você passa desse ponto e não pode
mais acessar a posição 0 da string para determinar o tamanho, como se podia
fazer no Turbo Pascal!

Campus [EMAIL PROTECTED] escreveu: Valfrid, acho que tu fez uma pequena
confusão.

Se não estou enganado em C as strings são Null terminated, mas Pascal não.

- Original Message - 
From: Valfrid-Ly Silva Couto
To:
Sent: Wednesday, May 24, 2006 3:20 PM
Subject: Re: RES: [delphi-br] Criando DLL


Isso só funciona porque no Delphi, as Strings também tem como terminador o
caracter #0



- Original Message - 
From: Rubem Nascimento da Rocha
To:
Sent: Wednesday, May 24, 2006 9:25 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Não necessariamente um array, mas PChar é um ponteiro para dados do tipo
 char. Sds.


 From: Marcelo Alves
 Reply-To: delphi-br@yahoogrupos.com.br
 To: delphi-br@yahoogrupos.com.br
 Subject: Re: RES: [delphi-br] Criando DLL
 Date: Wed, 24 May 2006 09:21:32 -0300
 
 No caso então quem for usar a minha DLL precisar passar os parâmetros em
 PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.
 
 Marcelo.
 
 
 Em 24/05/06, Campus escreveu:
  
   Se não me engano, PChar é uma array de chars terminado por um caracter
   nulo,
   e o String não.
  
   Basicamente é o segunte:
  
   FILIPE
  
   em PChar = FILIPE#0.
   em String = 6FILIPE.
  
   O primeiro byte do string contém seu tamanho, por isso passar uma
string
   como parâmetro para uma DLL pode congelar o Windows, uma vez que ele
não
   encontra o fim da string, que é marcado pelo caracter nulo..
  
  
  
  
   - Original Message -
   From: Filipe Belchior
   To:
   Sent: Tuesday, May 23, 2006 6:08 PM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
   Marcello,
  
   Explicar sobre PChar, tecnicamente, eu não sei, rs..
   ..mas acontece o seguinte, usando string vc tem resultado
   dos métodos todo errado!
  
   agora, sobre o form do report, vc falou pouco sobre
   como vc esta fazendo. mostre como vc ta fazendo.
  
  
  
   --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
   escreveu
   
Felipe,
   
Primeiramente, obrigado pela resposta, você não sabe o quanto me
ajudou, você e os outros amigos do grupo. Agora me diga uma coisa,
no
primeiro form o problema foi resolvido, agora estou com problemas
quando ao outro que no Caso é um Report. Quando uso o Report num
projeto comum, ele funciona normal ao chamar qualquer obejto do
mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
violation. Tenho que instacia-lo ou fazer alguma chamada
diferenciada
para poder utilizá-lo na minha DLL???
   
Outra coisa, porque Pchar ao invés de String? Só para
conhecimento!!!
   
Marcelo.
   
   
--- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
escreveu

 ..outra coisa,

 no caso, vc ta usando ADO, já vou avisando que vc terá problemas
 com ActiveX em projeto DLL.. para resolver, faça o seguinte:

 no OnCreate do 1o form a ser criado no projeto dll, inclua a
linha:

 CoInitialize( nil );

 ..e no OnDestroy:

 CoUninitialize;

 ..Ah! assim como o Anderson comentou, não use String nos
parametros
 dos métodos que serão exportados na sua dll.. sendo assim, basta
mudar
 o seguinte:

 Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;


 ..pronto, valeu!!


 ___
 Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
celular e anti-spam realmente eficaz.
 http://br.info.mail.yahoo.com/

   
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
 
 
 --
 Marcelo A. Souza
 
 
 [As partes desta mensagem que não

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Se não me engano, PChar é uma array de chars terminado por um caracter nulo,
e o String não.

Basicamente é o segunte:

FILIPE

em PChar = FILIPE#0.
em String = 6FILIPE.

O primeiro byte do string contém seu tamanho, por isso passar uma string
como parâmetro para uma DLL pode congelar o Windows, uma vez que ele não
encontra o fim da string, que é marcado pelo caracter nulo..




- Original Message - 
From: Filipe Belchior [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Tuesday, May 23, 2006 6:08 PM
Subject: Re: RES: [delphi-br] Criando DLL


Marcello,

Explicar sobre PChar, tecnicamente, eu não sei, rs..
..mas acontece o seguinte, usando string vc tem resultado
dos métodos todo errado!

agora, sobre o form do report, vc falou pouco sobre
como vc esta fazendo. mostre como vc ta fazendo.



--- Em delphi-br@yahoogrupos.com.br, marcelloassouza
[EMAIL PROTECTED] escreveu

 Felipe,

 Primeiramente, obrigado pela resposta, você não sabe o quanto me
 ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no
 primeiro form o problema foi resolvido, agora estou com problemas
 quando ao outro que no Caso é um Report. Quando uso o Report num
 projeto comum, ele funciona normal ao chamar qualquer obejto do
 mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
 violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada
 para poder utilizá-lo na minha DLL???

 Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!!

 Marcelo.


 --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
 [EMAIL PROTECTED] escreveu
 
  ..outra coisa,
 
  no caso, vc ta usando ADO, já vou avisando que vc terá problemas
  com ActiveX em projeto DLL.. para resolver, faça o seguinte:
 
  no OnCreate do 1o form a ser criado no projeto dll, inclua a
 linha:
 
  CoInitialize( nil );
 
  ..e no OnDestroy:
 
  CoUninitialize;
 
  ..Ah! assim como o Anderson comentou, não use String nos parametros
  dos métodos que serão exportados na sua dll.. sendo assim, basta
 mudar
  o seguinte:
 
  Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;
 
 
  ..pronto, valeu!!
 
 
  ___
  Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
 celular e anti-spam realmente eficaz.
  http://br.info.mail.yahoo.com/
 







-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



Links do Yahoo! Grupos














-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.











Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Marcelo Alves



No caso então quem for usar a minha DLL precisar passar os parâmetros em
PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.

Marcelo.


Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Se não me engano, PChar é uma array de chars terminado por um caracter
 nulo,
 e o String não.

 Basicamente é o segunte:

 FILIPE

 em PChar = FILIPE#0.
 em String = 6FILIPE.

 O primeiro byte do string contém seu tamanho, por isso passar uma string
 como parâmetro para uma DLL pode congelar o Windows, uma vez que ele não
 encontra o fim da string, que é marcado pelo caracter nulo..




 - Original Message -
 From: Filipe Belchior [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Tuesday, May 23, 2006 6:08 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Marcello,

 Explicar sobre PChar, tecnicamente, eu não sei, rs..
 ..mas acontece o seguinte, usando string vc tem resultado
 dos métodos todo errado!

 agora, sobre o form do report, vc falou pouco sobre
 como vc esta fazendo. mostre como vc ta fazendo.



 --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
 [EMAIL PROTECTED] escreveu
 
  Felipe,
 
  Primeiramente, obrigado pela resposta, você não sabe o quanto me
  ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no
  primeiro form o problema foi resolvido, agora estou com problemas
  quando ao outro que no Caso é um Report. Quando uso o Report num
  projeto comum, ele funciona normal ao chamar qualquer obejto do
  mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
  violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada
  para poder utilizá-lo na minha DLL???
 
  Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!!
 
  Marcelo.
 
 
  --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
  [EMAIL PROTECTED] escreveu
  
   ..outra coisa,
  
   no caso, vc ta usando ADO, já vou avisando que vc terá problemas
   com ActiveX em projeto DLL.. para resolver, faça o seguinte:
  
   no OnCreate do 1o form a ser criado no projeto dll, inclua a
  linha:
  
   CoInitialize( nil );
  
   ..e no OnDestroy:
  
   CoUninitialize;
  
   ..Ah! assim como o Anderson comentou, não use String nos parametros
   dos métodos que serão exportados na sua dll.. sendo assim, basta
  mudar
   o seguinte:
  
   Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;
  
  
   ..pronto, valeu!!
  
  
   ___
   Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
  celular e anti-spam realmente eficaz.
   http://br.info.mail.yahoo.com/
  
 






 --
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos










 --
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos











-- 
Marcelo A. Souza


[As partes desta mensagem que não continham texto foram removidas]







-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.












Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Rubem Nascimento da Rocha



Não necessariamente um array, mas PChar é um ponteiro para dados do tipo 
char. Sds.


From: Marcelo Alves [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: Re: RES: [delphi-br] Criando DLL
Date: Wed, 24 May 2006 09:21:32 -0300

No caso então quem for usar a minha DLL precisar passar os parâmetros em
PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.

Marcelo.


Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
 
  Se não me engano, PChar é uma array de chars terminado por um caracter
  nulo,
  e o String não.
 
  Basicamente é o segunte:
 
  FILIPE
 
  em PChar = FILIPE#0.
  em String = 6FILIPE.
 
  O primeiro byte do string contém seu tamanho, por isso passar uma string
  como parâmetro para uma DLL pode congelar o Windows, uma vez que ele não
  encontra o fim da string, que é marcado pelo caracter nulo..
 
 
 
 
  - Original Message -
  From: Filipe Belchior [EMAIL PROTECTED]
  To: delphi-br@yahoogrupos.com.br
  Sent: Tuesday, May 23, 2006 6:08 PM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
  Marcello,
 
  Explicar sobre PChar, tecnicamente, eu não sei, rs..
  ..mas acontece o seguinte, usando string vc tem resultado
  dos métodos todo errado!
 
  agora, sobre o form do report, vc falou pouco sobre
  como vc esta fazendo. mostre como vc ta fazendo.
 
 
 
  --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
  [EMAIL PROTECTED] escreveu
  
   Felipe,
  
   Primeiramente, obrigado pela resposta, você não sabe o quanto me
   ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no
   primeiro form o problema foi resolvido, agora estou com problemas
   quando ao outro que no Caso é um Report. Quando uso o Report num
   projeto comum, ele funciona normal ao chamar qualquer obejto do
   mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
   violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada
   para poder utilizá-lo na minha DLL???
  
   Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!!
  
   Marcelo.
  
  
   --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
   [EMAIL PROTECTED] escreveu
   
..outra coisa,
   
no caso, vc ta usando ADO, já vou avisando que vc terá problemas
com ActiveX em projeto DLL.. para resolver, faça o seguinte:
   
no OnCreate do 1o form a ser criado no projeto dll, inclua a
   linha:
   
CoInitialize( nil );
   
..e no OnDestroy:
   
CoUninitialize;
   
..Ah! assim como o Anderson comentou, não use String nos parametros
dos métodos que serão exportados na sua dll.. sendo assim, basta
   mudar
o seguinte:
   
Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;
   
   
..pronto, valeu!!
   
   
___
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
   celular e anti-spam realmente eficaz.
http://br.info.mail.yahoo.com/
   
  
 
 
 
 
 
 
  --
   FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
 
 
 
  Links do Yahoo! Grupos
 
 
 
 
 
 
 
 
 
 
  --
   FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
 
 
 
  Links do Yahoo! Grupos
 
 
 
 
 
 
 
 
 


--
Marcelo A. Souza


[As partes desta mensagem que não continham texto foram removidas]


_
MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br







-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.












Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Sim, como qquer chamada para API do Windows.

- Original Message - 
From: Marcelo Alves [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 9:21 AM
Subject: Re: RES: [delphi-br] Criando DLL


No caso então quem for usar a minha DLL precisar passar os parâmetros em
PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.

Marcelo.


Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Se não me engano, PChar é uma array de chars terminado por um caracter
 nulo,
 e o String não.

 Basicamente é o segunte:

 FILIPE

 em PChar = FILIPE#0.
 em String = 6FILIPE.

 O primeiro byte do string contém seu tamanho, por isso passar uma string
 como parâmetro para uma DLL pode congelar o Windows, uma vez que ele não
 encontra o fim da string, que é marcado pelo caracter nulo..




 - Original Message -
 From: Filipe Belchior [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Tuesday, May 23, 2006 6:08 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Marcello,

 Explicar sobre PChar, tecnicamente, eu não sei, rs..
 ..mas acontece o seguinte, usando string vc tem resultado
 dos métodos todo errado!

 agora, sobre o form do report, vc falou pouco sobre
 como vc esta fazendo. mostre como vc ta fazendo.



 --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
 [EMAIL PROTECTED] escreveu
 
  Felipe,
 
  Primeiramente, obrigado pela resposta, você não sabe o quanto me
  ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no
  primeiro form o problema foi resolvido, agora estou com problemas
  quando ao outro que no Caso é um Report. Quando uso o Report num
  projeto comum, ele funciona normal ao chamar qualquer obejto do
  mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
  violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada
  para poder utilizá-lo na minha DLL???
 
  Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!!
 
  Marcelo.
 
 
  --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
  [EMAIL PROTECTED] escreveu
  
   ..outra coisa,
  
   no caso, vc ta usando ADO, já vou avisando que vc terá problemas
   com ActiveX em projeto DLL.. para resolver, faça o seguinte:
  
   no OnCreate do 1o form a ser criado no projeto dll, inclua a
  linha:
  
   CoInitialize( nil );
  
   ..e no OnDestroy:
  
   CoUninitialize;
  
   ..Ah! assim como o Anderson comentou, não use String nos parametros
   dos métodos que serão exportados na sua dll.. sendo assim, basta
  mudar
   o seguinte:
  
   Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;
  
  
   ..pronto, valeu!!
  
  
   ___
   Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
  celular e anti-spam realmente eficaz.
   http://br.info.mail.yahoo.com/
  
 






 --
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos










 --
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos











-- 
Marcelo A. Souza


[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



Links do Yahoo! Grupos














-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.












Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Exatamente. Só tentei simplificar, quem nunca teve contato com linguagens
como C tem dificuldade para entender o coneito de ponteiros. Apesar que
mesmo em Clipper se usa esse conceito, mas a grande maioria dos
programadores que que tenho contato desconhece essa facilidade, a passagem
de parâmetros por referência.

Marcelo, Pchar, não é um tipo de dado própriamente dito, é um ponteiro

ele deve ser usado da seguinte forma:

Var pDescricao: PChar
 cDescricao: String

cDescricao := 'Rubem Nascimento da Rocha'
pDescricao := PChar(cDescricao)

pDescricao agora aponta para cDescricao, ou seja, contém o endereço de
memória onde cDescricao está armazenado. O que se passa como parâmetro, é
esse endereço e não o conteúdo de cDescricao.

O problema começa quando se usa pDescricao := Pchar('Rubem Nascimento da
Rocha')


- Original Message - 
From: Rubem Nascimento da Rocha [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 9:25 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Não necessariamente um array, mas PChar é um ponteiro para dados do tipo
 char. Sds.


 From: Marcelo Alves [EMAIL PROTECTED]
 Reply-To: delphi-br@yahoogrupos.com.br
 To: delphi-br@yahoogrupos.com.br
 Subject: Re: RES: [delphi-br] Criando DLL
 Date: Wed, 24 May 2006 09:21:32 -0300
 
 No caso então quem for usar a minha DLL precisar passar os parâmetros em
 PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.
 
 Marcelo.
 
 
 Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
  
   Se não me engano, PChar é uma array de chars terminado por um caracter
   nulo,
   e o String não.
  
   Basicamente é o segunte:
  
   FILIPE
  
   em PChar = FILIPE#0.
   em String = 6FILIPE.
  
   O primeiro byte do string contém seu tamanho, por isso passar uma
string
   como parâmetro para uma DLL pode congelar o Windows, uma vez que ele
não
   encontra o fim da string, que é marcado pelo caracter nulo..
  
  
  
  
   - Original Message -
   From: Filipe Belchior [EMAIL PROTECTED]
   To: delphi-br@yahoogrupos.com.br
   Sent: Tuesday, May 23, 2006 6:08 PM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
   Marcello,
  
   Explicar sobre PChar, tecnicamente, eu não sei, rs..
   ..mas acontece o seguinte, usando string vc tem resultado
   dos métodos todo errado!
  
   agora, sobre o form do report, vc falou pouco sobre
   como vc esta fazendo. mostre como vc ta fazendo.
  
  
  
   --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
   [EMAIL PROTECTED] escreveu
   
Felipe,
   
Primeiramente, obrigado pela resposta, você não sabe o quanto me
ajudou, você e os outros amigos do grupo. Agora me diga uma coisa,
no
primeiro form o problema foi resolvido, agora estou com problemas
quando ao outro que no Caso é um Report. Quando uso o Report num
projeto comum, ele funciona normal ao chamar qualquer obejto do
mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
violation. Tenho que instacia-lo ou fazer alguma chamada
diferenciada
para poder utilizá-lo na minha DLL???
   
Outra coisa, porque Pchar ao invés de String? Só para
conhecimento!!!
   
Marcelo.
   
   
--- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
[EMAIL PROTECTED] escreveu

 ..outra coisa,

 no caso, vc ta usando ADO, já vou avisando que vc terá problemas
 com ActiveX em projeto DLL.. para resolver, faça o seguinte:

 no OnCreate do 1o form a ser criado no projeto dll, inclua a
linha:

 CoInitialize( nil );

 ..e no OnDestroy:

 CoUninitialize;

 ..Ah! assim como o Anderson comentou, não use String nos
parametros
 dos métodos que serão exportados na sua dll.. sendo assim, basta
mudar
 o seguinte:

 Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;


 ..pronto, valeu!!


 ___
 Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
celular e anti-spam realmente eficaz.
 http://br.info.mail.yahoo.com/

   
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
 
 
 --
 Marcelo A. Souza
 
 
 [As partes desta mensagem que não continham texto foram removidas]
 

 _
 MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br



 -- 
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos















-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Jonatã Castelo Branco



Então, acredito ser correto dizer que você deve
utilizar uma variável com a mesma característica do
PChar, uma vez que a dll pode ser utilizada em várias
linguagens de programação. Por exemplo, não quero te
confundir, mas se você utlizar tua dll em um
compilador de C, a variável que você vai passar como
parâmetro deve ser um char de n elemntos. No C, está é
uma string com terminação nula.

int main(void) {
 ...
 char Str[10]; // declarando variáveis.
 ...
 TuaFuncao(...,Str,...); // funcao da dll.
 ...
}


--- Campus [EMAIL PROTECTED] escreveu:


-
Exatamente. Só tentei simplificar, quem nunca teve
contato com linguagens
como C tem dificuldade para entender o coneito de
ponteiros. Apesar que
mesmo em Clipper se usa esse conceito, mas a grande
maioria dos
programadores que que tenho contato desconhece essa
facilidade, a passagem
de parâmetros por referência.

Marcelo, Pchar, não é um tipo de dado própriamente
dito, é um ponteiro

ele deve ser usado da seguinte forma:

Var pDescricao: PChar
 cDescricao: String

cDescricao := 'Rubem Nascimento da Rocha'
pDescricao := PChar(cDescricao)

pDescricao agora aponta para cDescricao, ou seja,
contém o endereço de
memória onde cDescricao está armazenado. O que se
passa como parâmetro, é
esse endereço e não o conteúdo de cDescricao.

O problema começa quando se usa pDescricao :=
Pchar('Rubem Nascimento da
Rocha')


- Original Message - 
From: Rubem Nascimento da Rocha
[EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 9:25 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Não necessariamente um array, mas PChar é um
ponteiro para dados do tipo
 char. Sds.


 From: Marcelo Alves [EMAIL PROTECTED]
 Reply-To: delphi-br@yahoogrupos.com.br
 To: delphi-br@yahoogrupos.com.br
 Subject: Re: RES: [delphi-br] Criando DLL
 Date: Wed, 24 May 2006 09:21:32 -0300
 
 No caso então quem for usar a minha DLL precisar
passar os parâmetros em
 PChar??? Essa DLL que estou desenvolvendo será
usada em site em VB .NET.
 
 Marcelo.
 
 
 Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
  
   Se não me engano, PChar é uma array de chars
terminado por um caracter
   nulo,
   e o String não.
  
   Basicamente é o segunte:
  
   FILIPE
  
   em PChar = FILIPE#0.
   em String = 6FILIPE.
  
   O primeiro byte do string contém seu tamanho,
por isso passar uma
string
   como parâmetro para uma DLL pode congelar o
Windows, uma vez que ele
não
   encontra o fim da string, que é marcado pelo
caracter nulo..
  
  
  
  
   - Original Message -
   From: Filipe Belchior
[EMAIL PROTECTED]
   To: delphi-br@yahoogrupos.com.br
   Sent: Tuesday, May 23, 2006 6:08 PM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
   Marcello,
  
   Explicar sobre PChar, tecnicamente, eu não sei,
rs..
   ..mas acontece o seguinte, usando string vc tem
resultado
   dos métodos todo errado!
  
   agora, sobre o form do report, vc falou pouco
sobre
   como vc esta fazendo. mostre como vc ta fazendo.
  
  
  
   --- Em delphi-br@yahoogrupos.com.br,
marcelloassouza
   [EMAIL PROTECTED] escreveu
   
Felipe,
   
Primeiramente, obrigado pela resposta, você
não sabe o quanto me
ajudou, você e os outros amigos do grupo.
Agora me diga uma coisa,
no
primeiro form o problema foi resolvido, agora
estou com problemas
quando ao outro que no Caso é um Report.
Quando uso o Report num
projeto comum, ele funciona normal ao chamar
qualquer obejto do
mesmo, mas agora num DLL, estou recebendo a
mesma mensagem de access
violation. Tenho que instacia-lo ou fazer
alguma chamada
diferenciada
para poder utilizá-lo na minha DLL???
   
Outra coisa, porque Pchar ao invés de String?
Só para
conhecimento!!!
   
Marcelo.
   
   
--- Em delphi-br@yahoogrupos.com.br, Filipe
Belchior
[EMAIL PROTECTED] escreveu

 ..outra coisa,

 no caso, vc ta usando ADO, já vou avisando
que vc terá problemas
 com ActiveX em projeto DLL.. para resolver,
faça o seguinte:

 no OnCreate do 1o form a ser criado no
projeto dll, inclua a
linha:

 CoInitialize( nil );

 ..e no OnDestroy:

 CoUninitialize;

 ..Ah! assim como o Anderson comentou, não
use String nos
parametros
 dos métodos que serão exportados na sua
dll.. sendo assim, basta
mudar
 o seguinte:

 Procedure GeraPDF( Servidor, Tipo: PChar );
stdcall;


 ..pronto, valeu!!



___
 Abra sua conta no Yahoo! Mail: 1GB de
espaço, alertas de e-mail no
celular e anti-spam realmente eficaz.
 http://br.info.mail.yahoo.com/

   
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA
MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA
MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
 
 
 --
 Marcelo A. Souza
 
 
 [As partes

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Marcelo Alves



Legal, quer dizer então que eu utilizando o PChar, minha DLL se torna
disponível para todos os tipos de linguagens, correto? Só mais uma dúvida, o
PChar eu devo utilizar em todas as units do meu projeto DLL ou somente nas
funções que serão exportadas

Marcelo.


Em 24/05/06, Jonatã Castelo Branco [EMAIL PROTECTED] escreveu:

 Então, acredito ser correto dizer que você deve
 utilizar uma variável com a mesma característica do
 PChar, uma vez que a dll pode ser utilizada em várias
 linguagens de programação. Por exemplo, não quero te
 confundir, mas se você utlizar tua dll em um
 compilador de C, a variável que você vai passar como
 parâmetro deve ser um char de n elemntos. No C, está é
 uma string com terminação nula.

 int main(void) {
 ...
 char Str[10]; // declarando variáveis.
 ...
 TuaFuncao(...,Str,...); // funcao da dll.
 ...
 }


 --- Campus [EMAIL PROTECTED] escreveu:


 -
 Exatamente. Só tentei simplificar, quem nunca teve
 contato com linguagens
 como C tem dificuldade para entender o coneito de
 ponteiros. Apesar que
 mesmo em Clipper se usa esse conceito, mas a grande
 maioria dos
 programadores que que tenho contato desconhece essa
 facilidade, a passagem
 de parâmetros por referência.

 Marcelo, Pchar, não é um tipo de dado própriamente
 dito, é um ponteiro

 ele deve ser usado da seguinte forma:

 Var pDescricao: PChar
 cDescricao: String

 cDescricao := 'Rubem Nascimento da Rocha'
 pDescricao := PChar(cDescricao)

 pDescricao agora aponta para cDescricao, ou seja,
 contém o endereço de
 memória onde cDescricao está armazenado. O que se
 passa como parâmetro, é
 esse endereço e não o conteúdo de cDescricao.

 O problema começa quando se usa pDescricao :=
 Pchar('Rubem Nascimento da
 Rocha')


 - Original Message -
 From: Rubem Nascimento da Rocha
 [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 9:25 AM
 Subject: Re: RES: [delphi-br] Criando DLL


  Não necessariamente um array, mas PChar é um
 ponteiro para dados do tipo
  char. Sds.
 
 
  From: Marcelo Alves [EMAIL PROTECTED]
  Reply-To: delphi-br@yahoogrupos.com.br
  To: delphi-br@yahoogrupos.com.br
  Subject: Re: RES: [delphi-br] Criando DLL
  Date: Wed, 24 May 2006 09:21:32 -0300
  
  No caso então quem for usar a minha DLL precisar
 passar os parâmetros em
  PChar??? Essa DLL que estou desenvolvendo será
 usada em site em VB .NET.
  
  Marcelo.
  
  
  Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
   
Se não me engano, PChar é uma array de chars
 terminado por um caracter
nulo,
e o String não.
   
Basicamente é o segunte:
   
FILIPE
   
em PChar = FILIPE#0.
em String = 6FILIPE.
   
O primeiro byte do string contém seu tamanho,
 por isso passar uma
 string
como parâmetro para uma DLL pode congelar o
 Windows, uma vez que ele
 não
encontra o fim da string, que é marcado pelo
 caracter nulo..
   
   
   
   
- Original Message -
From: Filipe Belchior
 [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Tuesday, May 23, 2006 6:08 PM
Subject: Re: RES: [delphi-br] Criando DLL
   
   
Marcello,
   
Explicar sobre PChar, tecnicamente, eu não sei,
 rs..
..mas acontece o seguinte, usando string vc tem
 resultado
dos métodos todo errado!
   
agora, sobre o form do report, vc falou pouco
 sobre
como vc esta fazendo. mostre como vc ta fazendo.
   
   
   
--- Em delphi-br@yahoogrupos.com.br,
 marcelloassouza
[EMAIL PROTECTED] escreveu

 Felipe,

 Primeiramente, obrigado pela resposta, você
 não sabe o quanto me
 ajudou, você e os outros amigos do grupo.
 Agora me diga uma coisa,
 no
 primeiro form o problema foi resolvido, agora
 estou com problemas
 quando ao outro que no Caso é um Report.
 Quando uso o Report num
 projeto comum, ele funciona normal ao chamar
 qualquer obejto do
 mesmo, mas agora num DLL, estou recebendo a
 mesma mensagem de access
 violation. Tenho que instacia-lo ou fazer
 alguma chamada
 diferenciada
 para poder utilizá-lo na minha DLL???

 Outra coisa, porque Pchar ao invés de String?
 Só para
 conhecimento!!!

 Marcelo.


 --- Em delphi-br@yahoogrupos.com.br, Filipe
 Belchior
 [EMAIL PROTECTED] escreveu
 
  ..outra coisa,
 
  no caso, vc ta usando ADO, já vou avisando
 que vc terá problemas
  com ActiveX em projeto DLL.. para resolver,
 faça o seguinte:
 
  no OnCreate do 1o form a ser criado no
 projeto dll, inclua a
 linha:
 
  CoInitialize( nil );
 
  ..e no OnDestroy:
 
  CoUninitialize;
 
  ..Ah! assim como o Anderson comentou, não
 use String nos
 parametros
  dos métodos que serão exportados na sua
 dll.. sendo assim, basta
 mudar
  o seguinte:
 
  Procedure GeraPDF( Servidor, Tipo: PChar );
 stdcall;
 
 
  ..pronto, valeu

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Sem dúvida, em Delphi também, com StrPCopy.


- Original Message - 
From: Jonatã Castelo Branco [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 10:58 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Então, acredito ser correto dizer que você deve
 utilizar uma variável com a mesma característica do
 PChar, uma vez que a dll pode ser utilizada em várias
 linguagens de programação. Por exemplo, não quero te
 confundir, mas se você utlizar tua dll em um
 compilador de C, a variável que você vai passar como
 parâmetro deve ser um char de n elemntos. No C, está é
 uma string com terminação nula.

 int main(void) {
 ...
 char Str[10]; // declarando variáveis.
 ...
 TuaFuncao(...,Str,...); // funcao da dll.
 ...
 }


 --- Campus [EMAIL PROTECTED] escreveu:


 -
 Exatamente. Só tentei simplificar, quem nunca teve
 contato com linguagens
 como C tem dificuldade para entender o coneito de
 ponteiros. Apesar que
 mesmo em Clipper se usa esse conceito, mas a grande
 maioria dos
 programadores que que tenho contato desconhece essa
 facilidade, a passagem
 de parâmetros por referência.

 Marcelo, Pchar, não é um tipo de dado própriamente
 dito, é um ponteiro

 ele deve ser usado da seguinte forma:

 Var pDescricao: PChar
 cDescricao: String

 cDescricao := 'Rubem Nascimento da Rocha'
 pDescricao := PChar(cDescricao)

 pDescricao agora aponta para cDescricao, ou seja,
 contém o endereço de
 memória onde cDescricao está armazenado. O que se
 passa como parâmetro, é
 esse endereço e não o conteúdo de cDescricao.

 O problema começa quando se usa pDescricao :=
 Pchar('Rubem Nascimento da
 Rocha')


 - Original Message - 
 From: Rubem Nascimento da Rocha
 [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 9:25 AM
 Subject: Re: RES: [delphi-br] Criando DLL


  Não necessariamente um array, mas PChar é um
 ponteiro para dados do tipo
  char. Sds.
 
 
  From: Marcelo Alves [EMAIL PROTECTED]
  Reply-To: delphi-br@yahoogrupos.com.br
  To: delphi-br@yahoogrupos.com.br
  Subject: Re: RES: [delphi-br] Criando DLL
  Date: Wed, 24 May 2006 09:21:32 -0300
  
  No caso então quem for usar a minha DLL precisar
 passar os parâmetros em
  PChar??? Essa DLL que estou desenvolvendo será
 usada em site em VB .NET.
  
  Marcelo.
  
  
  Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
   
Se não me engano, PChar é uma array de chars
 terminado por um caracter
nulo,
e o String não.
   
Basicamente é o segunte:
   
FILIPE
   
em PChar = FILIPE#0.
em String = 6FILIPE.
   
O primeiro byte do string contém seu tamanho,
 por isso passar uma
 string
como parâmetro para uma DLL pode congelar o
 Windows, uma vez que ele
 não
encontra o fim da string, que é marcado pelo
 caracter nulo..
   
   
   
   
- Original Message -
From: Filipe Belchior
 [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Tuesday, May 23, 2006 6:08 PM
Subject: Re: RES: [delphi-br] Criando DLL
   
   
Marcello,
   
Explicar sobre PChar, tecnicamente, eu não sei,
 rs..
..mas acontece o seguinte, usando string vc tem
 resultado
dos métodos todo errado!
   
agora, sobre o form do report, vc falou pouco
 sobre
como vc esta fazendo. mostre como vc ta fazendo.
   
   
   
--- Em delphi-br@yahoogrupos.com.br,
 marcelloassouza
[EMAIL PROTECTED] escreveu

 Felipe,

 Primeiramente, obrigado pela resposta, você
 não sabe o quanto me
 ajudou, você e os outros amigos do grupo.
 Agora me diga uma coisa,
 no
 primeiro form o problema foi resolvido, agora
 estou com problemas
 quando ao outro que no Caso é um Report.
 Quando uso o Report num
 projeto comum, ele funciona normal ao chamar
 qualquer obejto do
 mesmo, mas agora num DLL, estou recebendo a
 mesma mensagem de access
 violation. Tenho que instacia-lo ou fazer
 alguma chamada
 diferenciada
 para poder utilizá-lo na minha DLL???

 Outra coisa, porque Pchar ao invés de String?
 Só para
 conhecimento!!!

 Marcelo.


 --- Em delphi-br@yahoogrupos.com.br, Filipe
 Belchior
 [EMAIL PROTECTED] escreveu
 
  ..outra coisa,
 
  no caso, vc ta usando ADO, já vou avisando
 que vc terá problemas
  com ActiveX em projeto DLL.. para resolver,
 faça o seguinte:
 
  no OnCreate do 1o form a ser criado no
 projeto dll, inclua a
 linha:
 
  CoInitialize( nil );
 
  ..e no OnDestroy:
 
  CoUninitialize;
 
  ..Ah! assim como o Anderson comentou, não
 use String nos
 parametros
  dos métodos que serão exportados na sua
 dll.. sendo assim, basta
 mudar
  o seguinte:
 
  Procedure GeraPDF( Servidor, Tipo: PChar );
 stdcall;
 
 
  ..pronto, valeu!!
 
 
 
 ___
  Abra sua conta no Yahoo! Mail: 1GB de
 espaço

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Jonatã Castelo Branco



Fica a teu criterio. Testa e ve o que eh melhor.


--- Marcelo Alves [EMAIL PROTECTED] escreveu:


-
Legal, quer dizer então que eu utilizando o PChar,
minha DLL se torna
disponível para todos os tipos de linguagens, correto?
Só mais uma dúvida, o
PChar eu devo utilizar em todas as units do meu
projeto DLL ou somente nas
funções que serão exportadas

Marcelo.


Em 24/05/06, Jonatã Castelo Branco
[EMAIL PROTECTED] escreveu:

 Então, acredito ser correto dizer que você deve
 utilizar uma variável com a mesma característica do
 PChar, uma vez que a dll pode ser utilizada em
várias
 linguagens de programação. Por exemplo, não quero te
 confundir, mas se você utlizar tua dll em um
 compilador de C, a variável que você vai passar como
 parâmetro deve ser um char de n elemntos. No C, está
é
 uma string com terminação nula.

 int main(void) {
 ...
 char Str[10]; // declarando variáveis.
 ...
 TuaFuncao(...,Str,...); // funcao da dll.
 ...
 }


 --- Campus [EMAIL PROTECTED] escreveu:


 -
 Exatamente. Só tentei simplificar, quem nunca teve
 contato com linguagens
 como C tem dificuldade para entender o coneito de
 ponteiros. Apesar que
 mesmo em Clipper se usa esse conceito, mas a grande
 maioria dos
 programadores que que tenho contato desconhece essa
 facilidade, a passagem
 de parâmetros por referência.

 Marcelo, Pchar, não é um tipo de dado própriamente
 dito, é um ponteiro

 ele deve ser usado da seguinte forma:

 Var pDescricao: PChar
 cDescricao: String

 cDescricao := 'Rubem Nascimento da Rocha'
 pDescricao := PChar(cDescricao)

 pDescricao agora aponta para cDescricao, ou seja,
 contém o endereço de
 memória onde cDescricao está armazenado. O que se
 passa como parâmetro, é
 esse endereço e não o conteúdo de cDescricao.

 O problema começa quando se usa pDescricao :=
 Pchar('Rubem Nascimento da
 Rocha')


 - Original Message -
 From: Rubem Nascimento da Rocha
 [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 9:25 AM
 Subject: Re: RES: [delphi-br] Criando DLL


  Não necessariamente um array, mas PChar é um
 ponteiro para dados do tipo
  char. Sds.
 
 
  From: Marcelo Alves [EMAIL PROTECTED]
  Reply-To: delphi-br@yahoogrupos.com.br
  To: delphi-br@yahoogrupos.com.br
  Subject: Re: RES: [delphi-br] Criando DLL
  Date: Wed, 24 May 2006 09:21:32 -0300
  
  No caso então quem for usar a minha DLL precisar
 passar os parâmetros em
  PChar??? Essa DLL que estou desenvolvendo será
 usada em site em VB .NET.
  
  Marcelo.
  
  
  Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
   
Se não me engano, PChar é uma array de chars
 terminado por um caracter
nulo,
e o String não.
   
Basicamente é o segunte:
   
FILIPE
   
em PChar = FILIPE#0.
em String = 6FILIPE.
   
O primeiro byte do string contém seu tamanho,
 por isso passar uma
 string
como parâmetro para uma DLL pode congelar o
 Windows, uma vez que ele
 não
encontra o fim da string, que é marcado pelo
 caracter nulo..
   
   
   
   
- Original Message -
From: Filipe Belchior
 [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Tuesday, May 23, 2006 6:08 PM
Subject: Re: RES: [delphi-br] Criando DLL
   
   
Marcello,
   
Explicar sobre PChar, tecnicamente, eu não
sei,
 rs..
..mas acontece o seguinte, usando string vc
tem
 resultado
dos métodos todo errado!
   
agora, sobre o form do report, vc falou pouco
 sobre
como vc esta fazendo. mostre como vc ta
fazendo.
   
   
   
--- Em delphi-br@yahoogrupos.com.br,
 marcelloassouza
[EMAIL PROTECTED] escreveu

 Felipe,

 Primeiramente, obrigado pela resposta, você
 não sabe o quanto me
 ajudou, você e os outros amigos do grupo.
 Agora me diga uma coisa,
 no
 primeiro form o problema foi resolvido,
agora
 estou com problemas
 quando ao outro que no Caso é um Report.
 Quando uso o Report num
 projeto comum, ele funciona normal ao chamar
 qualquer obejto do
 mesmo, mas agora num DLL, estou recebendo a
 mesma mensagem de access
 violation. Tenho que instacia-lo ou fazer
 alguma chamada
 diferenciada
 para poder utilizá-lo na minha DLL???

 Outra coisa, porque Pchar ao invés de
String?
 Só para
 conhecimento!!!

 Marcelo.


 --- Em delphi-br@yahoogrupos.com.br, Filipe
 Belchior
 [EMAIL PROTECTED] escreveu
 
  ..outra coisa,
 
  no caso, vc ta usando ADO, já vou avisando
 que vc terá problemas
  com ActiveX em projeto DLL.. para
resolver,
 faça o seguinte:
 
  no OnCreate do 1o form a ser criado no
 projeto dll, inclua a
 linha:
 
  CoInitialize( nil );
 
  ..e no OnDestroy:
 
  CoUninitialize;
 
  ..Ah! assim como o Anderson comentou, não
 use String nos
 parametros
  dos métodos que serão exportados na sua
 dll.. sendo assim, basta
 mudar
  o seguinte

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Marcelo Alves



Onde eu usaria esse StrPCopy? Na DLL ou na na aplicação que chama a DLL? E
quanto a segunda Pergunta que havia feito? Poderia me esclarecer?

Marcelo.

Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Sem dúvida, em Delphi também, com StrPCopy.


 - Original Message -
 From: Jonatã Castelo Branco [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 10:58 AM
 Subject: Re: RES: [delphi-br] Criando DLL


  Então, acredito ser correto dizer que você deve
  utilizar uma variável com a mesma característica do
  PChar, uma vez que a dll pode ser utilizada em várias
  linguagens de programação. Por exemplo, não quero te
  confundir, mas se você utlizar tua dll em um
  compilador de C, a variável que você vai passar como
  parâmetro deve ser um char de n elemntos. No C, está é
  uma string com terminação nula.
 
  int main(void) {
  ...
  char Str[10]; // declarando variáveis.
  ...
  TuaFuncao(...,Str,...); // funcao da dll.
  ...
  }
 
 
  --- Campus [EMAIL PROTECTED] escreveu:
 
 
  -
  Exatamente. Só tentei simplificar, quem nunca teve
  contato com linguagens
  como C tem dificuldade para entender o coneito de
  ponteiros. Apesar que
  mesmo em Clipper se usa esse conceito, mas a grande
  maioria dos
  programadores que que tenho contato desconhece essa
  facilidade, a passagem
  de parâmetros por referência.
 
  Marcelo, Pchar, não é um tipo de dado própriamente
  dito, é um ponteiro
 
  ele deve ser usado da seguinte forma:
 
  Var pDescricao: PChar
  cDescricao: String
 
  cDescricao := 'Rubem Nascimento da Rocha'
  pDescricao := PChar(cDescricao)
 
  pDescricao agora aponta para cDescricao, ou seja,
  contém o endereço de
  memória onde cDescricao está armazenado. O que se
  passa como parâmetro, é
  esse endereço e não o conteúdo de cDescricao.
 
  O problema começa quando se usa pDescricao :=
  Pchar('Rubem Nascimento da
  Rocha')
 
 
  - Original Message -
  From: Rubem Nascimento da Rocha
  [EMAIL PROTECTED]
  To: delphi-br@yahoogrupos.com.br
  Sent: Wednesday, May 24, 2006 9:25 AM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
   Não necessariamente um array, mas PChar é um
  ponteiro para dados do tipo
   char. Sds.
  
  
   From: Marcelo Alves [EMAIL PROTECTED]
   Reply-To: delphi-br@yahoogrupos.com.br
   To: delphi-br@yahoogrupos.com.br
   Subject: Re: RES: [delphi-br] Criando DLL
   Date: Wed, 24 May 2006 09:21:32 -0300
   
   No caso então quem for usar a minha DLL precisar
  passar os parâmetros em
   PChar??? Essa DLL que estou desenvolvendo será
  usada em site em VB .NET.
   
   Marcelo.
   
   
   Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Se não me engano, PChar é uma array de chars
  terminado por um caracter
 nulo,
 e o String não.

 Basicamente é o segunte:

 FILIPE

 em PChar = FILIPE#0.
 em String = 6FILIPE.

 O primeiro byte do string contém seu tamanho,
  por isso passar uma
  string
 como parâmetro para uma DLL pode congelar o
  Windows, uma vez que ele
  não
 encontra o fim da string, que é marcado pelo
  caracter nulo..




 - Original Message -
 From: Filipe Belchior
  [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Tuesday, May 23, 2006 6:08 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Marcello,

 Explicar sobre PChar, tecnicamente, eu não sei,
  rs..
 ..mas acontece o seguinte, usando string vc tem
  resultado
 dos métodos todo errado!

 agora, sobre o form do report, vc falou pouco
  sobre
 como vc esta fazendo. mostre como vc ta fazendo.



 --- Em delphi-br@yahoogrupos.com.br,
  marcelloassouza
 [EMAIL PROTECTED] escreveu
 
  Felipe,
 
  Primeiramente, obrigado pela resposta, você
  não sabe o quanto me
  ajudou, você e os outros amigos do grupo.
  Agora me diga uma coisa,
  no
  primeiro form o problema foi resolvido, agora
  estou com problemas
  quando ao outro que no Caso é um Report.
  Quando uso o Report num
  projeto comum, ele funciona normal ao chamar
  qualquer obejto do
  mesmo, mas agora num DLL, estou recebendo a
  mesma mensagem de access
  violation. Tenho que instacia-lo ou fazer
  alguma chamada
  diferenciada
  para poder utilizá-lo na minha DLL???
 
  Outra coisa, porque Pchar ao invés de String?
  Só para
  conhecimento!!!
 
  Marcelo.
 
 
  --- Em delphi-br@yahoogrupos.com.br, Filipe
  Belchior
  [EMAIL PROTECTED] escreveu
  
   ..outra coisa,
  
   no caso, vc ta usando ADO, já vou avisando
  que vc terá problemas
   com ActiveX em projeto DLL.. para resolver,
  faça o seguinte:
  
   no OnCreate do 1o form a ser criado no
  projeto dll, inclua a
  linha:
  
   CoInitialize( nil );
  
   ..e no OnDestroy:
  
   CoUninitialize;
  
   ..Ah! assim como o

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Na aplicação que chama a função dentro da DLL

veja o exemplo do help.

var
 A: array[0..79] of Char;
 S: String;
begin
 S := 'Honk if you know Blaise.';
 SuaFuncaoDaDll( StrPCopy(A, S) );
end;

StrPCopy popula o array e retorna o ponteiro para o mesmo.

Acredito que dentro da DLL tu possa usar strings normais, nunca desenvolvi
Dlls para te assegurar com certeza.


- Original Message - 
From: Marcelo Alves [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 1:35 PM
Subject: Re: RES: [delphi-br] Criando DLL


Onde eu usaria esse StrPCopy? Na DLL ou na na aplicação que chama a DLL? E
quanto a segunda Pergunta que havia feito? Poderia me esclarecer?

Marcelo.

Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Sem dúvida, em Delphi também, com StrPCopy.


 - Original Message -
 From: Jonatã Castelo Branco [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 10:58 AM
 Subject: Re: RES: [delphi-br] Criando DLL


  Então, acredito ser correto dizer que você deve
  utilizar uma variável com a mesma característica do
  PChar, uma vez que a dll pode ser utilizada em várias
  linguagens de programação. Por exemplo, não quero te
  confundir, mas se você utlizar tua dll em um
  compilador de C, a variável que você vai passar como
  parâmetro deve ser um char de n elemntos. No C, está é
  uma string com terminação nula.
 
  int main(void) {
  ...
  char Str[10]; // declarando variáveis.
  ...
  TuaFuncao(...,Str,...); // funcao da dll.
  ...
  }
 
 
  --- Campus [EMAIL PROTECTED] escreveu:
 
 
  -
  Exatamente. Só tentei simplificar, quem nunca teve
  contato com linguagens
  como C tem dificuldade para entender o coneito de
  ponteiros. Apesar que
  mesmo em Clipper se usa esse conceito, mas a grande
  maioria dos
  programadores que que tenho contato desconhece essa
  facilidade, a passagem
  de parâmetros por referência.
 
  Marcelo, Pchar, não é um tipo de dado própriamente
  dito, é um ponteiro
 
  ele deve ser usado da seguinte forma:
 
  Var pDescricao: PChar
  cDescricao: String
 
  cDescricao := 'Rubem Nascimento da Rocha'
  pDescricao := PChar(cDescricao)
 
  pDescricao agora aponta para cDescricao, ou seja,
  contém o endereço de
  memória onde cDescricao está armazenado. O que se
  passa como parâmetro, é
  esse endereço e não o conteúdo de cDescricao.
 
  O problema começa quando se usa pDescricao :=
  Pchar('Rubem Nascimento da
  Rocha')
 
 
  - Original Message -
  From: Rubem Nascimento da Rocha
  [EMAIL PROTECTED]
  To: delphi-br@yahoogrupos.com.br
  Sent: Wednesday, May 24, 2006 9:25 AM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
   Não necessariamente um array, mas PChar é um
  ponteiro para dados do tipo
   char. Sds.
  
  
   From: Marcelo Alves [EMAIL PROTECTED]
   Reply-To: delphi-br@yahoogrupos.com.br
   To: delphi-br@yahoogrupos.com.br
   Subject: Re: RES: [delphi-br] Criando DLL
   Date: Wed, 24 May 2006 09:21:32 -0300
   
   No caso então quem for usar a minha DLL precisar
  passar os parâmetros em
   PChar??? Essa DLL que estou desenvolvendo será
  usada em site em VB .NET.
   
   Marcelo.
   
   
   Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Se não me engano, PChar é uma array de chars
  terminado por um caracter
 nulo,
 e o String não.

 Basicamente é o segunte:

 FILIPE

 em PChar = FILIPE#0.
 em String = 6FILIPE.

 O primeiro byte do string contém seu tamanho,
  por isso passar uma
  string
 como parâmetro para uma DLL pode congelar o
  Windows, uma vez que ele
  não
 encontra o fim da string, que é marcado pelo
  caracter nulo..




 - Original Message -
 From: Filipe Belchior
  [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Tuesday, May 23, 2006 6:08 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Marcello,

 Explicar sobre PChar, tecnicamente, eu não sei,
  rs..
 ..mas acontece o seguinte, usando string vc tem
  resultado
 dos métodos todo errado!

 agora, sobre o form do report, vc falou pouco
  sobre
 como vc esta fazendo. mostre como vc ta fazendo.



 --- Em delphi-br@yahoogrupos.com.br,
  marcelloassouza
 [EMAIL PROTECTED] escreveu
 
  Felipe,
 
  Primeiramente, obrigado pela resposta, você
  não sabe o quanto me
  ajudou, você e os outros amigos do grupo.
  Agora me diga uma coisa,
  no
  primeiro form o problema foi resolvido, agora
  estou com problemas
  quando ao outro que no Caso é um Report.
  Quando uso o Report num
  projeto comum, ele funciona normal ao chamar
  qualquer obejto do
  mesmo, mas agora num DLL, estou recebendo a
  mesma mensagem de access
  violation. Tenho que instacia-lo ou fazer
  alguma chamada
  diferenciada
  para poder utilizá-lo na minha DLL???
 
  Outra coisa, porque Pchar ao invés de String

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Marcelo Alves



Cara eu fiz diferente e funcionou. Veja só:


procedure TfrmPrincipal.btnGerarClick(Sender: TObject);
var
 lServidor, lTipo: PChar ;
begin

 if self.rbProducao.Checked then
 lServidor := 'PRODUCAO'
 else
 if self.rbHomologacao.Checked then
 lServidor := 'HOMOLOGACAO'
 else
 lServidor := 'TESTES';

 if self.rbImportacao.Checked then
 lTipo := 'I'
 else
 lTipo := 'E' ;

 //GeraPDF( lServidor, PChar( self.edCliente.Text ), lTipo, PChar(
self.edDiretorio.Text ), Pchar( self.edDataIni.Text ), PChar(
self.edDataFim.Text ) ) ;

No caso criei duas variáveis do tipo Pchar para alguns parâmetros que eu
tinha que tratar e para os parâmetros que eu poderia passar direto pegando o
valor de TEdit eu usei apenas PChar( Edit.Text ). Pelo que eu vi, dessa
forma já converte para PChar.
Marcelo.



Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Na aplicação que chama a função dentro da DLL

 veja o exemplo do help.

 var
 A: array[0..79] of Char;
 S: String;
 begin
 S := 'Honk if you know Blaise.';
 SuaFuncaoDaDll( StrPCopy(A, S) );
 end;

 StrPCopy popula o array e retorna o ponteiro para o mesmo.

 Acredito que dentro da DLL tu possa usar strings normais, nunca desenvolvi
 Dlls para te assegurar com certeza.


 - Original Message -
 From: Marcelo Alves [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 1:35 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Onde eu usaria esse StrPCopy? Na DLL ou na na aplicação que chama a DLL? E
 quanto a segunda Pergunta que havia feito? Poderia me esclarecer?

 Marcelo.

 Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

  Sem dúvida, em Delphi também, com StrPCopy.
 
 
  - Original Message -
  From: Jonatã Castelo Branco [EMAIL PROTECTED]
  To: delphi-br@yahoogrupos.com.br
  Sent: Wednesday, May 24, 2006 10:58 AM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
   Então, acredito ser correto dizer que você deve
   utilizar uma variável com a mesma característica do
   PChar, uma vez que a dll pode ser utilizada em várias
   linguagens de programação. Por exemplo, não quero te
   confundir, mas se você utlizar tua dll em um
   compilador de C, a variável que você vai passar como
   parâmetro deve ser um char de n elemntos. No C, está é
   uma string com terminação nula.
  
   int main(void) {
   ...
   char Str[10]; // declarando variáveis.
   ...
   TuaFuncao(...,Str,...); // funcao da dll.
   ...
   }
  
  
   --- Campus [EMAIL PROTECTED] escreveu:
  
  
   -
   Exatamente. Só tentei simplificar, quem nunca teve
   contato com linguagens
   como C tem dificuldade para entender o coneito de
   ponteiros. Apesar que
   mesmo em Clipper se usa esse conceito, mas a grande
   maioria dos
   programadores que que tenho contato desconhece essa
   facilidade, a passagem
   de parâmetros por referência.
  
   Marcelo, Pchar, não é um tipo de dado própriamente
   dito, é um ponteiro
  
   ele deve ser usado da seguinte forma:
  
   Var pDescricao: PChar
   cDescricao: String
  
   cDescricao := 'Rubem Nascimento da Rocha'
   pDescricao := PChar(cDescricao)
  
   pDescricao agora aponta para cDescricao, ou seja,
   contém o endereço de
   memória onde cDescricao está armazenado. O que se
   passa como parâmetro, é
   esse endereço e não o conteúdo de cDescricao.
  
   O problema começa quando se usa pDescricao :=
   Pchar('Rubem Nascimento da
   Rocha')
  
  
   - Original Message -
   From: Rubem Nascimento da Rocha
   [EMAIL PROTECTED]
   To: delphi-br@yahoogrupos.com.br
   Sent: Wednesday, May 24, 2006 9:25 AM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
Não necessariamente um array, mas PChar é um
   ponteiro para dados do tipo
char. Sds.
   
   
From: Marcelo Alves [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: Re: RES: [delphi-br] Criando DLL
Date: Wed, 24 May 2006 09:21:32 -0300

No caso então quem for usar a minha DLL precisar
   passar os parâmetros em
PChar??? Essa DLL que estou desenvolvendo será
   usada em site em VB .NET.

Marcelo.


Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
 
  Se não me engano, PChar é uma array de chars
   terminado por um caracter
  nulo,
  e o String não.
 
  Basicamente é o segunte:
 
  FILIPE
 
  em PChar = FILIPE#0.
  em String = 6FILIPE.
 
  O primeiro byte do string contém seu tamanho,
   por isso passar uma
   string
  como parâmetro para uma DLL pode congelar o
   Windows, uma vez que ele
   não
  encontra o fim da string, que é marcado pelo
   caracter nulo..
 
 
 
 
  - Original Message -
  From: Filipe Belchior
   [EMAIL PROTECTED]
  To: delphi-br@yahoogrupos.com.br
  Sent: Tuesday, May 23, 2006 6:08 PM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
  Marcello,
 
  Explicar sobre PChar, tecnicamente, eu não sei

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Valfrid-Ly Silva Couto



Ah, usando bem o conceito de ponteiros, de antes de existir a função PChar, pode-se usar também:

Var pDescricao: PChar
 cDescricao: String

cDescricao := 'Rubem Nascimento da Rocha'
pDescricao := @cDescricao[1]

Isso só funciona porque no Delphi, as Strings também tem como terminador o caracter #0

Campus [EMAIL PROTECTED] escreveu: Exatamente. Só tentei simplificar, quem nunca teve contato com linguagens
como C tem dificuldade para entender o coneito de ponteiros. Apesar que
mesmo em Clipper se usa esse conceito, mas a grande maioria dos
programadores que que tenho contato desconhece essa facilidade, a passagem
de parâmetros por referência.

Marcelo, Pchar, não é um tipo de dado própriamente dito, é um ponteiro

ele deve ser usado da seguinte forma:

Var pDescricao: PChar
 cDescricao: String

cDescricao := 'Rubem Nascimento da Rocha'
pDescricao := PChar(cDescricao)

pDescricao agora aponta para cDescricao, ou seja, contém o endereço de
memória onde cDescricao está armazenado. O que se passa como parâmetro, é
esse endereço e não o conteúdo de cDescricao.

O problema começa quando se usa pDescricao := Pchar('Rubem Nascimento da
Rocha')


- Original Message - 
From: Rubem Nascimento da Rocha 
To: 
Sent: Wednesday, May 24, 2006 9:25 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Não necessariamente um array, mas PChar é um ponteiro para dados do tipo
 char. Sds.


 From: Marcelo Alves 
 Reply-To: delphi-br@yahoogrupos.com.br
 To: delphi-br@yahoogrupos.com.br
 Subject: Re: RES: [delphi-br] Criando DLL
 Date: Wed, 24 May 2006 09:21:32 -0300
 
 No caso então quem for usar a minha DLL precisar passar os parâmetros em
 PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.
 
 Marcelo.
 
 
 Em 24/05/06, Campus escreveu:
  
   Se não me engano, PChar é uma array de chars terminado por um caracter
   nulo,
   e o String não.
  
   Basicamente é o segunte:
  
   FILIPE
  
   em PChar = FILIPE#0.
   em String = 6FILIPE.
  
   O primeiro byte do string contém seu tamanho, por isso passar uma
string
   como parâmetro para uma DLL pode congelar o Windows, uma vez que ele
não
   encontra o fim da string, que é marcado pelo caracter nulo..
  
  
  
  
   - Original Message -
   From: Filipe Belchior 
   To: 
   Sent: Tuesday, May 23, 2006 6:08 PM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
   Marcello,
  
   Explicar sobre PChar, tecnicamente, eu não sei, rs..
   ..mas acontece o seguinte, usando string vc tem resultado
   dos métodos todo errado!
  
   agora, sobre o form do report, vc falou pouco sobre
   como vc esta fazendo. mostre como vc ta fazendo.
  
  
  
   --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
   escreveu
   
Felipe,
   
Primeiramente, obrigado pela resposta, você não sabe o quanto me
ajudou, você e os outros amigos do grupo. Agora me diga uma coisa,
no
primeiro form o problema foi resolvido, agora estou com problemas
quando ao outro que no Caso é um Report. Quando uso o Report num
projeto comum, ele funciona normal ao chamar qualquer obejto do
mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
violation. Tenho que instacia-lo ou fazer alguma chamada
diferenciada
para poder utilizá-lo na minha DLL???
   
Outra coisa, porque Pchar ao invés de String? Só para
conhecimento!!!
   
Marcelo.
   
   
--- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
escreveu

 ..outra coisa,

 no caso, vc ta usando ADO, já vou avisando que vc terá problemas
 com ActiveX em projeto DLL.. para resolver, faça o seguinte:

 no OnCreate do 1o form a ser criado no projeto dll, inclua a
linha:

 CoInitialize( nil );

 ..e no OnDestroy:

 CoUninitialize;

 ..Ah! assim como o Anderson comentou, não use String nos
parametros
 dos métodos que serão exportados na sua dll.. sendo assim, basta
mudar
 o seguinte:

 Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;


 ..pronto, valeu!!


 ___
 Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
celular e anti-spam realmente eficaz.
 http://br.info.mail.yahoo.com/

   
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
 
 
 --
 Marcelo A. Souza
 
 
 [As partes desta mensagem que não continham texto foram removidas]
 

 _
 MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br



 -- 
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos











-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 


 
Links do Yahoo! Grupos




 





Valfrid-Ly Silva

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Funcionar funciona, mas vc está passando o endereço de uma literal, se
depois chamada da função essa área de memória tiver sido alocada por outra
coisa, o windows vai gerar um GPF.

Sem falar que lServidor e lTipo são variáveis locais, ao término do
procedimento btnGerarClick, ela será destruída. Se tu acessar o conteúdo
dela dentro da Dll depois disso, tu vai ter um Access violation ou um GPF, o
segundo mais provavelmente.

Não esqueça que um Pchar é um ponteiro, não uma cópia de uma variavel.



- Original Message - 
From: Marcelo Alves [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 2:39 PM
Subject: Re: RES: [delphi-br] Criando DLL


Cara eu fiz diferente e funcionou. Veja só:


procedure TfrmPrincipal.btnGerarClick(Sender: TObject);
var
 lServidor, lTipo: PChar ;
begin

 if self.rbProducao.Checked then
 lServidor := 'PRODUCAO'
 else
 if self.rbHomologacao.Checked then
 lServidor := 'HOMOLOGACAO'
 else
 lServidor := 'TESTES';

 if self.rbImportacao.Checked then
 lTipo := 'I'
 else
 lTipo := 'E' ;

 //GeraPDF( lServidor, PChar( self.edCliente.Text ), lTipo, PChar(
self.edDiretorio.Text ), Pchar( self.edDataIni.Text ), PChar(
self.edDataFim.Text ) ) ;

No caso criei duas variáveis do tipo Pchar para alguns parâmetros que eu
tinha que tratar e para os parâmetros que eu poderia passar direto pegando o
valor de TEdit eu usei apenas PChar( Edit.Text ). Pelo que eu vi, dessa
forma já converte para PChar.
Marcelo.



Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

 Na aplicação que chama a função dentro da DLL

 veja o exemplo do help.

 var
 A: array[0..79] of Char;
 S: String;
 begin
 S := 'Honk if you know Blaise.';
 SuaFuncaoDaDll( StrPCopy(A, S) );
 end;

 StrPCopy popula o array e retorna o ponteiro para o mesmo.

 Acredito que dentro da DLL tu possa usar strings normais, nunca desenvolvi
 Dlls para te assegurar com certeza.


 - Original Message -
 From: Marcelo Alves [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Wednesday, May 24, 2006 1:35 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Onde eu usaria esse StrPCopy? Na DLL ou na na aplicação que chama a DLL? E
 quanto a segunda Pergunta que havia feito? Poderia me esclarecer?

 Marcelo.

 Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:

  Sem dúvida, em Delphi também, com StrPCopy.
 
 
  - Original Message -
  From: Jonatã Castelo Branco [EMAIL PROTECTED]
  To: delphi-br@yahoogrupos.com.br
  Sent: Wednesday, May 24, 2006 10:58 AM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
   Então, acredito ser correto dizer que você deve
   utilizar uma variável com a mesma característica do
   PChar, uma vez que a dll pode ser utilizada em várias
   linguagens de programação. Por exemplo, não quero te
   confundir, mas se você utlizar tua dll em um
   compilador de C, a variável que você vai passar como
   parâmetro deve ser um char de n elemntos. No C, está é
   uma string com terminação nula.
  
   int main(void) {
   ...
   char Str[10]; // declarando variáveis.
   ...
   TuaFuncao(...,Str,...); // funcao da dll.
   ...
   }
  
  
   --- Campus [EMAIL PROTECTED] escreveu:
  
  
   -
   Exatamente. Só tentei simplificar, quem nunca teve
   contato com linguagens
   como C tem dificuldade para entender o coneito de
   ponteiros. Apesar que
   mesmo em Clipper se usa esse conceito, mas a grande
   maioria dos
   programadores que que tenho contato desconhece essa
   facilidade, a passagem
   de parâmetros por referência.
  
   Marcelo, Pchar, não é um tipo de dado própriamente
   dito, é um ponteiro
  
   ele deve ser usado da seguinte forma:
  
   Var pDescricao: PChar
   cDescricao: String
  
   cDescricao := 'Rubem Nascimento da Rocha'
   pDescricao := PChar(cDescricao)
  
   pDescricao agora aponta para cDescricao, ou seja,
   contém o endereço de
   memória onde cDescricao está armazenado. O que se
   passa como parâmetro, é
   esse endereço e não o conteúdo de cDescricao.
  
   O problema começa quando se usa pDescricao :=
   Pchar('Rubem Nascimento da
   Rocha')
  
  
   - Original Message -
   From: Rubem Nascimento da Rocha
   [EMAIL PROTECTED]
   To: delphi-br@yahoogrupos.com.br
   Sent: Wednesday, May 24, 2006 9:25 AM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
Não necessariamente um array, mas PChar é um
   ponteiro para dados do tipo
char. Sds.
   
   
From: Marcelo Alves [EMAIL PROTECTED]
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: Re: RES: [delphi-br] Criando DLL
Date: Wed, 24 May 2006 09:21:32 -0300

No caso então quem for usar a minha DLL precisar
   passar os parâmetros em
PChar??? Essa DLL que estou desenvolvendo será
   usada em site em VB .NET.

Marcelo.


Em 24/05/06, Campus [EMAIL PROTECTED] escreveu:
 
  Se não me engano, PChar é uma array de chars
   terminado por um caracter
  nulo,
  e o String não

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Valfrid-Ly Silva Couto



Toda variável é armazenada em algum lugar na memória, da forma que você fez, o Delphi simplesmente colocou o espaço na memória e depois atribuiu um endereço, uma vez que o tamanho e etc já são conhecidos.

Se você vai trabalhar com variáveis que você não sabe o tamanho, a coisa é diferente!!

Marcelo Alves [EMAIL PROTECTED] escreveu: Cara eu fiz diferente e funcionou. Veja só:


procedure TfrmPrincipal.btnGerarClick(Sender: TObject);
var
 lServidor, lTipo: PChar ;
begin

 if self.rbProducao.Checked then
 lServidor := 'PRODUCAO'
 else
 if self.rbHomologacao.Checked then
 lServidor := 'HOMOLOGACAO'
 else
 lServidor := 'TESTES';

 if self.rbImportacao.Checked then
 lTipo := 'I'
 else
 lTipo := 'E' ;

 //GeraPDF( lServidor, PChar( self.edCliente.Text ), lTipo, PChar(
self.edDiretorio.Text ), Pchar( self.edDataIni.Text ), PChar(
self.edDataFim.Text ) ) ;

No caso criei duas variáveis do tipo Pchar para alguns parâmetros que eu
tinha que tratar e para os parâmetros que eu poderia passar direto pegando o
valor de TEdit eu usei apenas PChar( Edit.Text ). Pelo que eu vi, dessa
forma já converte para PChar.
Marcelo.



Em 24/05/06, Campus escreveu:

 Na aplicação que chama a função dentro da DLL

 veja o exemplo do help.

 var
 A: array[0..79] of Char;
 S: String;
 begin
 S := 'Honk if you know Blaise.';
 SuaFuncaoDaDll( StrPCopy(A, S) );
 end;

 StrPCopy popula o array e retorna o ponteiro para o mesmo.

 Acredito que dentro da DLL tu possa usar strings normais, nunca desenvolvi
 Dlls para te assegurar com certeza.


 - Original Message -
 From: Marcelo Alves 
 To: 
 Sent: Wednesday, May 24, 2006 1:35 PM
 Subject: Re: RES: [delphi-br] Criando DLL


 Onde eu usaria esse StrPCopy? Na DLL ou na na aplicação que chama a DLL? E
 quanto a segunda Pergunta que havia feito? Poderia me esclarecer?

 Marcelo.

 Em 24/05/06, Campus escreveu:

  Sem dúvida, em Delphi também, com StrPCopy.
 
 
  - Original Message -
  From: Jonatã Castelo Branco 
  To: 
  Sent: Wednesday, May 24, 2006 10:58 AM
  Subject: Re: RES: [delphi-br] Criando DLL
 
 
   Então, acredito ser correto dizer que você deve
   utilizar uma variável com a mesma característica do
   PChar, uma vez que a dll pode ser utilizada em várias
   linguagens de programação. Por exemplo, não quero te
   confundir, mas se você utlizar tua dll em um
   compilador de C, a variável que você vai passar como
   parâmetro deve ser um char de n elemntos. No C, está é
   uma string com terminação nula.
  
   int main(void) {
   ...
   char Str[10]; // declarando variáveis.
   ...
   TuaFuncao(...,Str,...); // funcao da dll.
   ...
   }
  
  
   --- Campus escreveu:
  
  
   -
   Exatamente. Só tentei simplificar, quem nunca teve
   contato com linguagens
   como C tem dificuldade para entender o coneito de
   ponteiros. Apesar que
   mesmo em Clipper se usa esse conceito, mas a grande
   maioria dos
   programadores que que tenho contato desconhece essa
   facilidade, a passagem
   de parâmetros por referência.
  
   Marcelo, Pchar, não é um tipo de dado própriamente
   dito, é um ponteiro
  
   ele deve ser usado da seguinte forma:
  
   Var pDescricao: PChar
   cDescricao: String
  
   cDescricao := 'Rubem Nascimento da Rocha'
   pDescricao := PChar(cDescricao)
  
   pDescricao agora aponta para cDescricao, ou seja,
   contém o endereço de
   memória onde cDescricao está armazenado. O que se
   passa como parâmetro, é
   esse endereço e não o conteúdo de cDescricao.
  
   O problema começa quando se usa pDescricao :=
   Pchar('Rubem Nascimento da
   Rocha')
  
  
   - Original Message -
   From: Rubem Nascimento da Rocha
   
   To: 
   Sent: Wednesday, May 24, 2006 9:25 AM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
Não necessariamente um array, mas PChar é um
   ponteiro para dados do tipo
char. Sds.
   
   
From: Marcelo Alves 
Reply-To: delphi-br@yahoogrupos.com.br
To: delphi-br@yahoogrupos.com.br
Subject: Re: RES: [delphi-br] Criando DLL
Date: Wed, 24 May 2006 09:21:32 -0300

No caso então quem for usar a minha DLL precisar
   passar os parâmetros em
PChar??? Essa DLL que estou desenvolvendo será
   usada em site em VB .NET.

Marcelo.


Em 24/05/06, Campus escreveu:
 
  Se não me engano, PChar é uma array de chars
   terminado por um caracter
  nulo,
  e o String não.
 
  Basicamente é o segunte:
 
  FILIPE
 
  em PChar = FILIPE#0.
  em String = 6FILIPE.
 
  O primeiro byte do string contém seu tamanho,
   por isso passar uma
   string
  como parâmetro para uma DLL pode congelar o
   Windows, uma vez que ele
   não
  encontra o fim da string, que é marcado pelo
   caracter nulo..
 
 
 
 
  - Original Message -
  From: Filipe Belchior
   
  To: 
  Sent: Tuesday, May 23, 2006 6:08 PM
  Subject: Re: RES: [delphi-br] Criando DLL

Re: RES: [delphi-br] Criando DLL

2006-05-24 Por tôpico Campus



Valfrid, acho que tu fez uma pequena confusão.

Se não estou enganado em C as strings são Null terminated, mas Pascal não.

- Original Message - 
From: Valfrid-Ly Silva Couto [EMAIL PROTECTED]
To: delphi-br@yahoogrupos.com.br
Sent: Wednesday, May 24, 2006 3:20 PM
Subject: Re: RES: [delphi-br] Criando DLL


Isso só funciona porque no Delphi, as Strings também tem como terminador o
caracter #0



- Original Message - 
From: Rubem Nascimento da Rocha
To:
Sent: Wednesday, May 24, 2006 9:25 AM
Subject: Re: RES: [delphi-br] Criando DLL


 Não necessariamente um array, mas PChar é um ponteiro para dados do tipo
 char. Sds.


 From: Marcelo Alves
 Reply-To: delphi-br@yahoogrupos.com.br
 To: delphi-br@yahoogrupos.com.br
 Subject: Re: RES: [delphi-br] Criando DLL
 Date: Wed, 24 May 2006 09:21:32 -0300
 
 No caso então quem for usar a minha DLL precisar passar os parâmetros em
 PChar??? Essa DLL que estou desenvolvendo será usada em site em VB .NET.
 
 Marcelo.
 
 
 Em 24/05/06, Campus escreveu:
  
   Se não me engano, PChar é uma array de chars terminado por um caracter
   nulo,
   e o String não.
  
   Basicamente é o segunte:
  
   FILIPE
  
   em PChar = FILIPE#0.
   em String = 6FILIPE.
  
   O primeiro byte do string contém seu tamanho, por isso passar uma
string
   como parâmetro para uma DLL pode congelar o Windows, uma vez que ele
não
   encontra o fim da string, que é marcado pelo caracter nulo..
  
  
  
  
   - Original Message -
   From: Filipe Belchior
   To:
   Sent: Tuesday, May 23, 2006 6:08 PM
   Subject: Re: RES: [delphi-br] Criando DLL
  
  
   Marcello,
  
   Explicar sobre PChar, tecnicamente, eu não sei, rs..
   ..mas acontece o seguinte, usando string vc tem resultado
   dos métodos todo errado!
  
   agora, sobre o form do report, vc falou pouco sobre
   como vc esta fazendo. mostre como vc ta fazendo.
  
  
  
   --- Em delphi-br@yahoogrupos.com.br, marcelloassouza
   escreveu
   
Felipe,
   
Primeiramente, obrigado pela resposta, você não sabe o quanto me
ajudou, você e os outros amigos do grupo. Agora me diga uma coisa,
no
primeiro form o problema foi resolvido, agora estou com problemas
quando ao outro que no Caso é um Report. Quando uso o Report num
projeto comum, ele funciona normal ao chamar qualquer obejto do
mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access
violation. Tenho que instacia-lo ou fazer alguma chamada
diferenciada
para poder utilizá-lo na minha DLL???
   
Outra coisa, porque Pchar ao invés de String? Só para
conhecimento!!!
   
Marcelo.
   
   
--- Em delphi-br@yahoogrupos.com.br, Filipe Belchior
escreveu

 ..outra coisa,

 no caso, vc ta usando ADO, já vou avisando que vc terá problemas
 com ActiveX em projeto DLL.. para resolver, faça o seguinte:

 no OnCreate do 1o form a ser criado no projeto dll, inclua a
linha:

 CoInitialize( nil );

 ..e no OnDestroy:

 CoUninitialize;

 ..Ah! assim como o Anderson comentou, não use String nos
parametros
 dos métodos que serão exportados na sua dll.. sendo assim, basta
mudar
 o seguinte:

 Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;


 ..pronto, valeu!!


 ___
 Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no
celular e anti-spam realmente eficaz.
 http://br.info.mail.yahoo.com/

   
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
  
   --
FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
  
  
  
   Links do Yahoo! Grupos
  
  
  
  
  
  
  
  
  
 
 
 --
 Marcelo A. Souza
 
 
 [As partes desta mensagem que não continham texto foram removidas]
 

 _
 MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br



 -- 
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



 Links do Yahoo! Grupos











-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



Links do Yahoo! Grupos










Valfrid-Ly Silva Couto
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
ICQ 15114646

-
 Yahoo! doce lar. Faça do Yahoo! sua homepage.

[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 



Links do Yahoo! Grupos














-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu

Re: RES: [delphi-br] Criando DLL

2006-05-23 Por tôpico marcelloassouza



Felipe,

Primeiramente, obrigado pela resposta, você não sabe o quanto me 
ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no 
primeiro form o problema foi resolvido, agora estou com problemas 
quando ao outro que no Caso é um Report. Quando uso o Report num 
projeto comum, ele funciona normal ao chamar qualquer obejto do 
mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access 
violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada 
para poder utilizá-lo na minha DLL???

Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!!

Marcelo.


--- Em delphi-br@yahoogrupos.com.br, Filipe Belchior 
[EMAIL PROTECTED] escreveu

 ..outra coisa,
 
 no caso, vc ta usando ADO, já vou avisando que vc terá problemas
 com ActiveX em projeto DLL.. para resolver, faça o seguinte:
 
 no OnCreate do 1o form a ser criado no projeto dll, inclua a 
linha:
 
 CoInitialize( nil );
 
 ..e no OnDestroy:
 
 CoUninitialize;
 
 ..Ah! assim como o Anderson comentou, não use String nos parametros
 dos métodos que serão exportados na sua dll.. sendo assim, basta 
mudar
 o seguinte:
 
 Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;
 
 
 ..pronto, valeu!!
 
   
 ___ 
 Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no 
celular e anti-spam realmente eficaz. 
 http://br.info.mail.yahoo.com/











-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.











Re: RES: [delphi-br] Criando DLL

2006-05-23 Por tôpico Filipe Belchior



Marcello,

Explicar sobre PChar, tecnicamente, eu não sei, rs..
..mas acontece o seguinte, usando string vc tem resultado
dos métodos todo errado!

agora, sobre o form do report, vc falou pouco sobre
como vc esta fazendo. mostre como vc ta fazendo.



--- Em delphi-br@yahoogrupos.com.br, marcelloassouza
[EMAIL PROTECTED] escreveu

 Felipe,
 
 Primeiramente, obrigado pela resposta, você não sabe o quanto me 
 ajudou, você e os outros amigos do grupo. Agora me diga uma coisa, no 
 primeiro form o problema foi resolvido, agora estou com problemas 
 quando ao outro que no Caso é um Report. Quando uso o Report num 
 projeto comum, ele funciona normal ao chamar qualquer obejto do 
 mesmo, mas agora num DLL, estou recebendo a mesma mensagem de access 
 violation. Tenho que instacia-lo ou fazer alguma chamada diferenciada 
 para poder utilizá-lo na minha DLL???
 
 Outra coisa, porque Pchar ao invés de String? Só para conhecimento!!!
 
 Marcelo.
 
 
 --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior 
 [EMAIL PROTECTED] escreveu
 
  ..outra coisa,
  
  no caso, vc ta usando ADO, já vou avisando que vc terá problemas
  com ActiveX em projeto DLL.. para resolver, faça o seguinte:
  
  no OnCreate do 1o form a ser criado no projeto dll, inclua a 
 linha:
  
  CoInitialize( nil );
  
  ..e no OnDestroy:
  
  CoUninitialize;
  
  ..Ah! assim como o Anderson comentou, não use String nos parametros
  dos métodos que serão exportados na sua dll.. sendo assim, basta 
 mudar
  o seguinte:
  
  Procedure GeraPDF( Servidor, Tipo: PChar ); stdcall;
  
  
  ..pronto, valeu!!
  

  ___ 
  Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no 
 celular e anti-spam realmente eficaz. 
  http://br.info.mail.yahoo.com/
 











-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  
PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.












Re: RES: [delphi-br] Criando DLL

2006-05-22 Por tôpico Fernando - Hotforms




 Criação de DLLs

Esta é uma outra dúvida bastante freqüente que chega a nós. Como posso 
usar uma DLL ?, Como posso criar uma DLL ?, Ei, moço! Pra quê serve 
uma DLL ?

Pois bem, DLL ou Dynamic Link Libraries, permitem que um conjunto de 
funções desenvolvidas em uma linguagem possam ser utilizadas em 
programas desenvolvidos em outras linguagens.

Você pode, por exemplo, criar uma DLL em Delphi com um conjunto de 
funções e utilizá-la em aplicativos desenvolvidos em C++ ou Visual 
Basic, por exemplo. Agora, vamos começar criando uma DLL:

 1.

 Selecione o item New do Menu File, para exibir a caixa de diálogo
 New Items. Agora, selecione o item DLL e clique em OK, para gerar
 o código principal da DLL, que se apresenta a seguir:


 library Project1;


 { Important note about DLL memory management: ShareMem must
 be the first unit in your library's USES clause AND your
 project's (select Project-View Source) USES clause if your
 DLL exports any procedures or functions that pass strings as
 parameters or function results. This applies to all strings
 passed to and from your DLL--even those that are nested in
 records and classes. ShareMem is the interface unit to the
 BORLNDMM.DLL shared memory manager, which must be deployed
 along with your DLL. To avoid using BORLNDMM.DLL, pass
 string information using PChar or ShortString parameters. }


 uses


 SysUtils, Classes;


 begin


 end.

Em muitas situações, inclusive esta, o arquivo DELPHIMM.DLL deve ser 
distribuído junto à sua aplicação. Uma outra observação muito 
importante, para que você possa escrever suas DLLs, você deve ter 
conhecimentos na Linguagem Object Pascal.

Vamos continuar criando nossa DLL, pois é ela que iremos usar mais para 
frente. Apenas como exemplificação, vamos criar uma função que receba 
como parâmetros dois números reais e retorne o maior deles.


 Function Max (a b : double ) : double ; Export ; stdcall ;


 begin


 If (a  b) then Result :=a else Result := b ;


 end ;

 

Export = indica que a função poderá ser chamada por outros aplicativos.

Stdcall = permite que aplicativos desenvolvidos em outras linguagens 
façam chamadas à função.

Após serem feitas estas alterações e salvar o projeto com o nome MAXDLL, 
nossa DLL ficará assim:


 library Project1;


 { Important note about DLL memory management: ShareMem must
 be the first unit in your library's USES clause AND your
 project's (select Project-View Source) USES clause if your
 DLL exports any procedures or functions that pass strings as
 parameters or function results. This applies to all strings
 passed to and from your DLL--even those that are nested in
 records and classes. ShareMem is the interface unit to the
 BORLNDMM.DLL shared memory manager, which must be deployed
 along with your DLL. To avoid using BORLNDMM.DLL, pass
 string information using PChar or ShortString parameters. }


 uses


 SysUtils,


 Classes;


 function Max(a, b : double):double:expert:stdcall:


 begin


 if (a  b) then result:= a else result := b;


 end;


 exports


 Max index 1;


 begin


 end.

 
Você pode compilar uma DLL, assim como a um projeto no Delphi, e 
distribuir livremente.

PS: Você não pode executar uma DLL pelo Delphi, através do RUN do Menu 
Run, pois não se trata de uma aplicação.

Mais à frente, você perceberá que uma DLL pode usar formulários e 
objetos definidos em outras unidades. Iremos, agora, chamar uma DLL, a 
partir de outra aplicação.

Neste exemplo que iremos montar, iremos usar: um formulário, duas caixas 
de texto (os quais o usuário irá digitar dois números reais), um botão 
de comando.


 unit usadll;


 interface


 uses


 Windows, Messages, SysUtils, Classes, Graphics, Controls,
 Forms, Dialogs, StdCtrls;


 type


 TForm1 = class(TForm)


 Label1: TLabel;


 Label2: TLabel;


 Button1: TButton;


 Edit1: TEdit;


 Edit2: TEdit;


 procedure Button1Click(Sender: TObject);


 private


 { Private declarations }


 public


 { Public declarations }


 end;


 function Max(a, b : double):double;stdcall;


 var


 Form1: TForm1;


 


 implementation


 {$R *.DFM}


 function Max(a, b : double):double;external 'MaxDLL';


 procedure TForm1.Button1Click(Sender: TObject);


 var


 x, y, resultado : double;


 begin


 x := StrToFloat(Edit1.Text);


 y := StrToFloat(Edit2.Text);


 resultado := Max(x,y);


 ShowMessage('Valor Máximo ' +FloatToStr(resultado));


 end;


 end.

PS: A função Max está declarada na seção interface e implementada na 
seção implementation, ou seja, a função está implementada em uma DLL.

Bem, mostramos como criar uma DLL simples e como fazer chamada de uma 
DLL. Agora, iremos melhorar nossa DLL, fazendo com que ela exiba um 
formulário qualquer em qualquer aplicação desenvolvida para Windows.



Marcelo Alves de Souza escreveu:
 Será que ninguém pode me ajudar???

 Marcelo.

 -Mensagem original-
 De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
 nome de Marcelo Alves de Souza
 Enviada em: segunda-feira,