GARANTIR DESCONTO

Fórum Obter o diretório do Executável #484031

29/06/2014

0

Pretendo distribuir junto ao arquivo executável, as instruções de uso do mesmo, que será no formato .txt, no menu principal do programa haverá uma opção para a abertura das instruções. O problema é que para tal, eu preciso de um código que obtenha o caminho do arquivo Instruções.txt, pois este vai variar com o local onde o programa seja instalado.
Eu implementei o seguinte:

begin
If not(fileexists(ExtractFilePath(Application.ExeName)+'Instruções.txt')) then
MessageDlg('Arquivo inexistente.'#13'Provavelmente foi deletado do seu diretório. Entre em contato com o desenvolvedor para reobter as intruções do programa.',mtWarning,[mbOK],0)
else
winExec('Notepad.exe C:\Users\Andrew\Desktop\Instruções.txt', sw_shownormal);
end;

O problema é que na quinta linha eu coloquei o caminho com o nome do arquivo, no caso, o arquivo Instruções.txt localizado no meu Desktop, se eu substituir por:

winExec('Notepad.exe'+ExtractFilePath(Application.ExeName)+'Instruções.txt', sw_shownormal);

ele dá o erro: Incompatible types: 'PAnsiChar' and 'string'.
Como eu resolvo isso?
Obrigado.
Andrew Vargas

Andrew Vargas

Responder

Posts

30/06/2014

Joel Rodrigues

É só juntar tudo e converter para PChar. ASsim:
PChar('Notepad.exe'+ExtractFilePath(Application.ExeName)+'Instruções.txt')
Responder

Gostei + 0

30/06/2014

Joel Rodrigues

Ah, no caso a instrução completa ficaria
winExec(Pchar('Notepad.exe'+ExtractFilePath(Application.ExeName)+'Instruções.txt'), sw_shownormal);
Responder

Gostei + 0

30/06/2014

Andrew Vargas

Agradeço pela ajuda, mas não funcionou como eu esperava, a conversão correta nesse caso é PAnsiChar, mas mesmo assim não funcionou, eu reimplementei dessa forma:

begin
If not(fileexists(ExtractFilePath(Application.ExeName)+'Instruções.txt')) then
MessageDlg('Arquivo inexistente.'#13'Provavelmente foi deletado do seu diretório. Entre em contato com o desenvolvedor para reobter as intruções do programa.',mtWarning,[mbOK],0)
else
winExec(Pansichar('Notepad.exe'+ExtractFilePath(Application.ExeName)+'Instruções.txt'), sw_shownormal);
end;


Se eu tiro o arquivo Instruções.txt do diretório do executável, ele não abre e exibe a mensagem de aviso, até aí nenhum problema, mas se eu deixo o arquivo junto ao executável,
ele pula a mensagem de aviso (tendo em vista que ele existe), mas ele não é aberto pelo comando WinExec, ou seja, não faz nada, Você sabe me dizer porque isso acontece?
Obrigado
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar