Array
(
)

Abrir programa com parâmetros

Fmd
   - 12 set 2004

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

Por exemplo, a opção /a, mostra o form A, a opção /b, mostra o form B, etc.


Xanatos
   - 13 set 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!!!


Afarias
   - 13 set 2004

Além disso vc pode usar a função ParamCount para determinar quantos argumentos foram passados para o executável, ou ainda usar a função FindCmdLineSwitch 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+


Tatuweb
   - 13 set 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.


Paulo_amorim
   - 13 set 2004


Citação:
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...


Citação:
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).

Note:Use double quotes to wrap multiple words as one parameter (such as long file names containing spaces)



Tatuweb
   - 13 set 2004


Citação:
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.

#Código

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



Keitarosan
   - 13 set 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


Tatuweb
   - 13 set 2004


Citação:
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