12/09/2004

Abrir programa com parâmetros

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

Respostas

13/09/2004

Xanatos

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!!!


Responder Citar

13/09/2004

Afarias

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+


Responder Citar

13/09/2004

Tatuweb

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.


Responder Citar

13/09/2004

Paulo_amorim

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]



Responder Citar

13/09/2004

Tatuweb

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;



Responder Citar

13/09/2004

Keitarosan

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


Responder Citar

13/09/2004

Tatuweb

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


Responder Citar