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 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:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a