[delphi-br] Criando dll que contem Indy
Galera estou tentando criar uma dll que contem dois componentes Indy: o TIdFTP e o TidHTTP. Mas tá dando erro de Violação de Acesso. Eu já transformei a dll em programa e este erro não apareceu. Alguém já viu isso ou sabe o motivo do erro? Estou apenas querendo enviar uma mensagem (que acaba sendo um arquivo) via FTP e outra por POST do http. Jonatã. Flickr agora em português. Você clica, todo mundo vê. http://www.flickr.com.br/
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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!.
RES: [delphi-br] Criando DLL
Felipe, Na minha DLL eu tenho uma unit uPrincipal da Classe Tform e uma outra uRelatorio que é um Report do tipo TQuickRep. Tenho a procedure principal que é a exportada para ser usada por um outro programa. Essa procedure chama uma outra procedure na unit uPrincipal que é onde estão meus componentes ADO e onde estava dando o erro inicial. Com as suas dicas resolvi o problema na uPrincipal. Bom, em um determinado momento eu tento renomear um caption no Report conforme a linha abaixo: Rep.lblPeriodo.Caption := 'Período...: ' + DataIni + ' a ' + DataFin ; Rep é o nome que dei o meu Report. Bom é nesse momento que recebo a mensagem de access violation. Acredito que por ser DLL tenha que instanciar algo, coisa que não preciso fazer em um projeto normal (exe). -- Marcelo A. Souza 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! [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!.
[delphi-br] Criando DLL
Pessoal, Preciso criar uma DLL que se conecta a uma base SQL Server e gere um Relatório em PDF. Eu sei como fazer tudo isso, esse não é o problema, o que está me faltando mesmo é um pouco de conhecimento referente a parte de DLL's mesmo. Seguinte: Criei o meu projeto DLL conforme abaixo: library minhadll; uses SysUtils, Classes, uPrincipal in 'uPrincipal.pas' {frmPrincipal}, uRelatorio in 'uRelatorio.pas' {Rep: TQuickRep}; {$R *.res} Procedure GeraPDF( Servidor, Tipo: String ); stdcall; begin frmPrincipal.GeraRelatorio( Servidor, Tipo ); end; exports GeraPDF; end. Como vocês podem ver tenho duas Units no meu projeto. Uma é somente um form para eu colocar os componentes que necessito, no Caso o ADOConnection, ADOQuery e um outro que uso para exportar para PDF. A outra unit é um Report. Ao debugar bem na linha abaixo: frmPrincipal.GeraRelatorio( Servidor, Cliente, Tipo, Dir, DataIni, DataFim ); recebo um erro de access violation. Como as minhas ações estão no form frmPrincipal e o erro acontece justamente ao chamar algo que está nele, percebi que estava faltando eu criar o form. Aí tentei de todos os jeitos e não consegui. O que está faltando eu declarar para que eu possa utilizar o form frmPrincipal. Para criar o frmPrincipal tentei um dos dois códigos abaixo: Forma 1: Application.CreateForm( TfrmPrincipal, frmPrincipal ) ; Forma 2: If frmPrincipal = Nil Then frmPrincipal := TfrmPrincipal.Create( Self ) ; Poderiam me ajudar Att, Marcelo A. Souza -- 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!.
[delphi-br] Criando DLL
Pessoal, Preciso criar uma DLL que se conecta a uma base SQL Server e gere um Relatório em PDF. Eu sei como fazer tudo isso, esse não é o problema, o que está me faltando mesmo é um pouco de conhecimento referente a parte de DLL's mesmo. Seguinte: Criei o meu projeto DLL conforme abaixo: library minhadll; uses SysUtils, Classes, uPrincipal in 'uPrincipal.pas' {frmPrincipal}, uRelatorio in 'uRelatorio.pas' {Rep: TQuickRep}; {$R *.res} Procedure GeraPDF( Servidor, Tipo: String ); stdcall; begin frmPrincipal.GeraRelatorio( Servidor, Tipo ); end; exports GeraPDF; end. Como vocês podem ver tenho duas Units no meu projeto. Uma é somente um form para eu colocar os componentes que necessito, no Caso o ADOConnection, ADOQuery e um outro que uso para exportar para PDF. A outra unit é um Report. Ao debugar bem na linha abaixo: frmPrincipal.GeraRelatorio( Servidor, Cliente, Tipo, Dir, DataIni, DataFim ); recebo um erro de access violation. Como as minhas ações estão no form frmPrincipal e o erro acontece justamente ao chamar algo que está nele, percebi que estava faltando eu criar o form. Aí tentei de todos os jeitos e não consegui. O que está faltando eu declarar para que eu possa utilizar o form frmPrincipal. Para criar o frmPrincipal tentei um dos dois códigos abaixo: Forma 1: Application.CreateForm( TfrmPrincipal, frmPrincipal ) ; Forma 2: If frmPrincipal = Nil Then frmPrincipal := TfrmPrincipal.Create( Self ) ; Poderiam me ajudar Att, Marcelo A. Souza -- 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!.
RES: [delphi-br] Criando DLL
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, 22 de maio de 2006 12:26 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Criando DLL Pessoal, Preciso criar uma DLL que se conecta a uma base SQL Server e gere um Relatório em PDF. Eu sei como fazer tudo isso, esse não é o problema, o que está me faltando mesmo é um pouco de conhecimento referente a parte de DLL's mesmo. Seguinte: Criei o meu projeto DLL conforme abaixo: library minhadll; uses SysUtils, Classes, uPrincipal in 'uPrincipal.pas' {frmPrincipal}, uRelatorio in 'uRelatorio.pas' {Rep: TQuickRep}; {$R *.res} Procedure GeraPDF( Servidor, Tipo: String ); stdcall; begin frmPrincipal.GeraRelatorio( Servidor, Tipo ); end; exports GeraPDF; end. Como vocês podem ver tenho duas Units no meu projeto. Uma é somente um form para eu colocar os componentes que necessito, no Caso o ADOConnection, ADOQuery e um outro que uso para exportar para PDF. A outra unit é um Report. Ao debugar bem na linha abaixo: frmPrincipal.GeraRelatorio( Servidor, Cliente, Tipo, Dir, DataIni, DataFim ); recebo um erro de access violation. Como as minhas ações estão no form frmPrincipal e o erro acontece justamente ao chamar algo que está nele, percebi que estava faltando eu criar o form. Aí tentei de todos os jeitos e não consegui. O que está faltando eu declarar para que eu possa utilizar o form frmPrincipal. Para criar o frmPrincipal tentei um dos dois códigos abaixo: Forma 1: Application.CreateForm( TfrmPrincipal, frmPrincipal ) ; Forma 2: If frmPrincipal = Nil Then frmPrincipal := TfrmPrincipal.Create( Self ) ; Poderiam me ajudar Att, Marcelo A. Souza -- 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: [delphi-br] Criando DLL
2 coisinhas: 1º não trabalhe com Strings... use PCHAR 2º vc tem q criar o form antes de chamar a função APPLICATION.CREATEFORM.. e deixar o comando ACTION := CAFREE após terminar o processo. - Original Message - From: Marcelo Alves de Souza To: delphi-br@yahoogrupos.com.br Sent: Monday, May 22, 2006 4:53 PM Subject: RES: [delphi-br] Criando DLL 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, 22 de maio de 2006 12:26 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Criando DLL Pessoal, Preciso criar uma DLL que se conecta a uma base SQL Server e gere um Relatório em PDF. Eu sei como fazer tudo isso, esse não é o problema, o que está me faltando mesmo é um pouco de conhecimento referente a parte de DLL's mesmo. Seguinte: Criei o meu projeto DLL conforme abaixo: library minhadll; uses SysUtils, Classes, uPrincipal in 'uPrincipal.pas' {frmPrincipal}, uRelatorio in 'uRelatorio.pas' {Rep: TQuickRep}; {$R *.res} Procedure GeraPDF( Servidor, Tipo: String ); stdcall; begin frmPrincipal.GeraRelatorio( Servidor, Tipo ); end; exports GeraPDF; end. Como vocês podem ver tenho duas Units no meu projeto. Uma é somente um form para eu colocar os componentes que necessito, no Caso o ADOConnection, ADOQuery e um outro que uso para exportar para PDF. A outra unit é um Report. Ao debugar bem na linha abaixo: frmPrincipal.GeraRelatorio( Servidor, Cliente, Tipo, Dir, DataIni, DataFim ); recebo um erro de access violation. Como as minhas ações estão no form frmPrincipal e o erro acontece justamente ao chamar algo que está nele, percebi que estava faltando eu criar o form. Aí tentei de todos os jeitos e não consegui. O que está faltando eu declarar para que eu possa utilizar o form frmPrincipal. Para criar o frmPrincipal tentei um dos dois códigos abaixo: Forma 1: Application.CreateForm( TfrmPrincipal, frmPrincipal ) ; Forma 2: If frmPrincipal = Nil Then frmPrincipal := TfrmPrincipal.Create( Self ) ; Poderiam me ajudar Att, Marcelo A. Souza -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Links do Yahoo! Grupos -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. __ Informação do NOD32 IMON 1.1553 (20060522) __ Esta mensagem foi verificada pelo NOD32 sistema antivírus http://www.eset.com.br [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!.
RES: [delphi-br] Criando DLL
..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!.
RES: [delphi-br] Criando DLL
marcelo, onde vc escreveu essas duas formas? na 1a, se vc escreveu no dpr, então faltou a declaração de Forms em uses. na 2a, depende onde vc escreveu. FILIPE BELCHIOR Tecnólogo de Informática Multibrands Consultoria em Tecnologia ___ 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
, 22 de maio de 2006 12:26 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Criando DLL Pessoal, Preciso criar uma DLL que se conecta a uma base SQL Server e gere um Relatório em PDF. Eu sei como fazer tudo isso, esse não é o problema, o que está me faltando mesmo é um pouco de conhecimento referente a parte de DLL's mesmo. Seguinte: Criei o meu projeto DLL conforme abaixo: library minhadll; uses SysUtils, Classes, uPrincipal in 'uPrincipal.pas' {frmPrincipal}, uRelatorio in 'uRelatorio.pas' {Rep: TQuickRep}; {$R *.res} Procedure GeraPDF( Servidor, Tipo: String ); stdcall; begin frmPrincipal.GeraRelatorio( Servidor, Tipo ); end; exports GeraPDF; end. Como vocês podem ver tenho duas Units no meu projeto. Uma é somente um form para eu colocar os componentes que necessito, no Caso o ADOConnection, ADOQuery e um outro que uso para exportar para PDF. A outra unit é um Report. Ao debugar bem na linha abaixo: frmPrincipal.GeraRelatorio( Servidor, Cliente, Tipo, Dir, DataIni, DataFim ); recebo um erro de access violation. Como as minhas ações estão no form frmPrincipal e o erro acontece justamente ao chamar algo que está nele, percebi que estava faltando eu criar o form. Aí tentei de todos os jeitos e não consegui. O que está faltando eu declarar para que eu possa utilizar o form frmPrincipal. Para criar o frmPrincipal tentei um dos dois códigos abaixo: Forma 1: Application.CreateForm( TfrmPrincipal, frmPrincipal ) ; Forma 2: If frmPrincipal = Nil Then frmPrincipal := TfrmPrincipal.Create( Self ) ; Poderiam me ajudar Att, Marcelo A. Souza -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Links do Yahoo! Grupos -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM *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] mailto:[EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. -- *Fernando dos Santos Sousa* *Hotforms Hosting Webdesign* Telefone* (12) 3011-0660 | *Celular* (12) 9147-6740* Email [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] WWW*http://www.hotforms.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!.