ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] PAnsiChar não retorna o esperado

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
deSordi
Novato
Novato


Registrado: Quinta-Feira, 2 de Janeiro de 2014
Mensagens: 8

MensagemEnviada: Qua Out 29, 2014 10:52 am    Assunto: [RESOLVIDO] PAnsiChar não retorna o esperado Responder com Citação

Pessoal..

Vejam esse código:

Código:
var
  Comando: PAnsiChar;
  f: string;

f := 'ARQUIVO';
Comando := PAnsiChar('SHORTCUT /f:"'+ f +'" /a:c /t:"C:\Tulips.jpg"');


O que a variável Comando tem depois disso?
Apenas 'S'.

Alguém saberia me dizer por que?
O que eu preciso fazer para ter uma variável do tipo PAnsiChar com esse comando completo, incluíndo as variáveis?


Editado pela última vez por deSordi em Sex Out 31, 2014 8:23 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Out 29, 2014 11:03 am    Assunto: Responder com Citação

tente assim:

Código:
var
  Comando: PAnsiChar;
  f: string;

f := 'SHORTCUT /f:"Arquivo" /a:c /t:"C:\Tulips.jpg"'
Comando := PAnsiChar(f);

_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
deSordi
Novato
Novato


Registrado: Quinta-Feira, 2 de Janeiro de 2014
Mensagens: 8

MensagemEnviada: Sex Out 31, 2014 7:14 am    Assunto: Responder com Citação

Ja tentei.. mesma coisa. Confused
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
deSordi
Novato
Novato


Registrado: Quinta-Feira, 2 de Janeiro de 2014
Mensagens: 8

MensagemEnviada: Sex Out 31, 2014 7:26 am    Assunto: Responder com Citação

Se eu tento usar como PWideChar funciona, mas como PAnsiChar continuar retornando apenas 'S'.

Código:
var
  f: string;
  Comando: PAnsiChar;
begin
  f := 'ARQUIVO';
  F := 'SHORTCUT /f:'+ F;
  Comando := PAnsiChar(F);
  Application.MessageBox(PWideChar(Comando), 'Teste');
  Button1.Caption := PAnsiChar(Comando);
end;


Neste teste apareceu toda a string na mensagem, mas apenas 'S' no botão.
Na depuração, antes de executar o MessageBox o valor que aparece em Comando é 'S'.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
deSordi
Novato
Novato


Registrado: Quinta-Feira, 2 de Janeiro de 2014
Mensagens: 8

MensagemEnviada: Sex Out 31, 2014 7:30 am    Assunto: Responder com Citação

deSordi escreveu:
Se eu tento usar como PWideChar funciona, mas como PAnsiChar continuar retornando apenas 'S'.

Código:
var
  f: string;
  Comando: PAnsiChar;
begin
  f := 'ARQUIVO';
  F := 'SHORTCUT /f:'+ F;
  Comando := PAnsiChar(F);
  Application.MessageBox(PWideChar(Comando), 'Teste');
  Button1.Caption := PAnsiChar(Comando);
end;


Neste teste apareceu toda a string na mensagem, mas apenas 'S' no botão.
Na depuração, antes de executar o MessageBox o valor que aparece em Comando é 'S'.


No Delphi XE3 é que acontece esse problema.
Fiz um teste no Delphi 7 e funcionou normal!

E agora?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
deSordi
Novato
Novato


Registrado: Quinta-Feira, 2 de Janeiro de 2014
Mensagens: 8

MensagemEnviada: Sex Out 31, 2014 8:22 am    Assunto: Responder com Citação

Obrigado Joemil e a quem leu esse post e tentou ajudar!
Encontrei a resposta no link abaixo:
http://www.scriptbrasil.com.br/forum/topic/151601-resolvido-problemas-com-pchar-delphi2010/

A questão é que primeiro precisa-se converter a string e depois usar o ponteiro.
Então fica:

Código:
Comando := PAnsiChar(AnsiString(F));
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB