Abrir programa com parâmetros

Delphi

12/09/2004

Como faço para abrir um programa com parâmetros no atalho?

Por exemplo, a opção [b:476f5d2c54]/a[/b:476f5d2c54], mostra o form A, a opção [b:476f5d2c54]/b[/b:476f5d2c54], mostra o form B, etc.


Fmd

Fmd

Curtidas 0

Respostas

Xanatos

Xanatos

12/09/2004

Ao iniciar teu programa consulte ParamStr(1) esse numero entre parenteses indica a posicao da string.

Tipo Programa /a /b:

ParamStr(1) = ´/a´ e ParamStr(2) = ´/b´


if ParamStr(1)<>´/a´ then
FormA.ShowModal
else if ParamStr(1)<>´/b´ then
FormB.ShowModal

Espero q ajude!!!


GOSTEI 0
Afarias

Afarias

12/09/2004

Além disso vc pode usar a função [b:560aca54c9]ParamCount[/b:560aca54c9] para determinar quantos argumentos foram passados para o executável, ou ainda usar a função [b:560aca54c9]FindCmdLineSwitch[/b:560aca54c9] para saber se determinado parâmetro foi utilizado, ex:


if FindCmdLineSwitch(´a´, [´-´, ´/´], True) then
begin
{ faça algo }
end;

no caso acima, vai retornar TRUE caso exista em qualquer posição (nos argumentos de execução) ´-a´ ou ´/a´ (sem aspas, claro!)


T+


GOSTEI 0
Tatuweb

Tatuweb

12/09/2004

Só uma observação:

A função ParamStr, pelo menos até a versão 5 do Delphi/C++ Builder, possui um bug. Ela não funciona corretamente se o path tiver espaços. Ex: C:\arquivos de programas\ tem dois espaços. Prefira usar a API GetCommandLine em conjunto com Copy, AnsiPos e ParamCount. É bem simples. Se alguém usa o programa XnView (visualizador de imagens) já deve ter reparado esse programa tem este bug.


GOSTEI 0
Paulo_amorim

Paulo_amorim

12/09/2004

Só uma observação: A função ParamStr, pelo menos até a versão 5 do Delphi/C++ Builder, possui um bug. Ela não funciona corretamente se o path tiver espaços. Ex: C:\arquivos de programas\ tem dois espaços. Prefira usar a API GetCommandLine em conjunto com Copy, AnsiPos e ParamCount. É bem simples. Se alguém usa o programa XnView (visualizador de imagens) já deve ter reparado esse programa tem este bug.


Olá

Ele funciona se vc passar com aspas, daí ele interpreta como um parâmetro...

Description ParamStr returns the parameter from the command line that corresponds to Index, or an empty string if Index is greater than ParamCount. For example, an Index value of 2 returns the second command-line parameter. ParamStr(0) returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE). [b:c38e28ca13]Note:Use double quotes to wrap multiple words as one parameter (such as long file names containing spaces)[/b:c38e28ca13]



GOSTEI 0
Tatuweb

Tatuweb

12/09/2004

Ele funciona se vc passar com aspas, daí ele interpreta como um parâmetro...

Como assim passar com aspas? Só como exemplo faça um programinha para ler arquivos texto, associe a extensão TXT ao seu programa e tente abrir um arquivo dentro de um path que tenha espaço. Se tentar fazer o que tá abaixo vai retornar um erro caso o path contenha espaço.

procedure TForm1.FormShow(Sender: TObject);
begin
  if ParamStr (1) <> ´´ then
  Memo1.Lines.LoadFromFile (ParamStr (1));
end;



GOSTEI 0
Keitarosan

Keitarosan

12/09/2004

o que o Paulo Amorim falou está certo, uso Delphi5 e sempre utilizei o ParamStr e ParamCount, tenho programas que associam os arquivos e não dá problema algum, tenha espaço no meio do nome ou não...

Quando for associar um arquivo a um programa, a maneira mais coerente é fazer assim: ´ ´ ´¬1´ :D


GOSTEI 0
Tatuweb

Tatuweb

12/09/2004

Quando for associar um arquivo a um programa, a maneira mais coerente é fazer assim: ´ ´ ´¬1´ :D

Ah tá... agora entendi o lance. Entre aspas já estava mas faltou incluir o ´¬1´ na associação. Testei agora e funciounou. :P


GOSTEI 0
POSTAR