procedure TForm1.FormCreate(Sender: TObject);var
i: Integer;
for i := 0 to ParamCount ?1 do
begin
if LowerCase(ParamStr(i)) = 'beep' then
Beep(10000,1000)
else if (LowerCase(ParamStr(i)) = 'exit' then
Application.Terminate;
end;
end;命令行: *.exe beep
i: Integer;
for i := 0 to ParamCount ?1 do
begin
if LowerCase(ParamStr(i)) = 'beep' then
Beep(10000,1000)
else if (LowerCase(ParamStr(i)) = 'exit' then
Application.Terminate;
end;
end;命令行: *.exe beep
这位大哥是什么意思,能不能说的清楚些
c:\project1.exe /beep对吗?
program MyApp(InnFile, OutFile,{Other parameters});
可惜Object Pascal编译器忽略这些参数。
所以你只能用ParamCount(), ParamStr()这两个函数来处理程序的命令行参数了。
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ParamCount do
begin
if LowerCase(ParamStr(i)) = 'beep' then
showmessage('ok')
else if (LowerCase(ParamStr(i)) = 'exit') then
Application.Terminate;
end;
end;delphi 打开菜单run --> paramters 在local 页paramter 中输入 beep调试通过
用ParamCount函数取得命令参数的个数:
呼叫 ParamStr(0), 传回执行档的档名(含路径)
呼叫 ParamStr(n), 传回第n个参数的内容
procedure TForm1.FormCreate(Sender: TObject);
var
sFileName: string;
begin
if ParamCount > 0 then begin (* 有执行参数传入 *)
sFileName := ParamStr(1); (* 取得参数内容 *)
if FileExists(sFileName) then
Memo1.Lines.LoadFromFile(sFileName)
else
Application.MessageBox('找不到指定的档案', '讯息', 48);
end;
end;
i: Integer;
begin
for i := 0 to ParamCount do
begin
if LowerCase(ParamStr(i)) = 'beep' then
windows.Beep(10000,1000)
else if LowerCase(ParamStr(i)) = 'exit' then
Application.Terminate;
end;
end;
function ParamCount: Integer;
{$IFDEF MSWINDOWS}
var
P: PChar;
S: string;
begin
Result := 0; // 错在这一句,再怎么说也应该从1开始嘛,因为
// ParamStr(0)返回的是命令部分,这肯定是存在的。
// 所以只要将这句改为 Result := 1; 就应该没问题了。
P := GetParamStr(GetCommandLine, S);
while True do
begin
P := GetParamStr(P, S);
if S = '' then Break;
Inc(Result);
end;
{$ENDIF}
{$IFDEF LINUX}
begin
if ArgCount > 1 then
Result := ArgCount - 1
else Result := 0;
{$ENDIF}
end;
for i := 0 to ParamCount do...
那么结果也是正确的。奇怪的编码方式!
混乱的数组基址。:(