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 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 >>>>>
<*> 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: | |
|
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!.