我学Delphi不久,最近照着书上的列子作了个文本编辑器 ,可是发现我的文本编辑器不能通过用 命令行 来打开文件, 就是不能用类似 “NotePad.exe aa.txt” 这样的命令行来打开aa.txt文件。这是怎么回事呀?? 我把它覆盖了Windows下的NotePad.exe程序,还是不行,望高手指教!!!!!

解决方案 »

  1.   

    因为你必须让你的程序接收命令参数啊。
    命令参数可以通过ParamStr获得。
    procedure TForm1.FormCreate(Sender: TObject);var
      i: Integer;
      for i := 1 to ParamCount do
      begin
        if LowerCase(ParamStr(i)) = 'beep' then
          Beep
        else if LowerCase(ParamStr(i)) = 'exit' then
          Application.Terminate;
      end;
    end;
      

  2.   

    回复人: greencoding(绿色代码) ( ) 信誉:100  2002-7-17 1:30:55  得分:95 
     
     
      
    1. 取得命令列参数的个数: ParamCount 函数
    2. 呼叫 ParamStr(0), 传回执行档的档名(含路径)
    3. 呼叫 ParamStr(n), 传回第n个参数的内容
    例子:
    procedure TForm1.FormCreate(Sender: TObject);
    var
     ix: integer;
    begin
     Memo1.Lines.Clear;
     if ParamCount = 0 then
      Memo1.Lines.Add('??统??.')
     else
     begin
      Memo1.Lines.Add('档名:' + ParamStr(0));
      for ix := 1 to ParamCount do
      Memo1.Lines.Add(ParamStr(ix));
     end;
    end;  
      
      

  3.   

    procedure TForm1.FormCreate(Sender: TObject);var
      i: Integer;
      if paramCount>0 then//先检测有带参数,ParamStr(0)就是程序名
      for i := 1 to ParamCount do
      begin
        if pos('.txt',LowerCase(ParamStr(i)))>0  then//如果是文本文件就打开
        begin
          Memo1.loadfromfile(Paramstr(i);//
          break;
        end;
      end;
    end;
      

  4.   

    to chezha (我爱DelphI) :
    我是个初学者,也在试着写一个记事本,能把你的代码发给我看一下吗?
    我的e_mail:[email protected]
      

  5.   

    感谢: yang6130(月明@沧海) 我把它编译成功了!procedure TForm1.FormCreate(Sender: TObject);
    var
      i: Integer;
    begin
      if ParamCount>0 then   //先检测有无带参数,ParamStr(0)就是程序名本身
      for i := 1 to ParamCount do
       begin
        if (Pos('.txt',LowerCase(ParamStr(i)))>0) or //如果是.TXT文件就打开
           (Pos('.pas',LowerCase(ParamStr(i)))>0) or //如果是.PAS文件就打开
           (Pos('.bat',LowerCase(ParamStr(i)))>0) or //如果是.BAT文件就打开
           (Pos('.log',LowerCase(ParamStr(i)))>0) or //如果是.LOG文件就打开
           (Pos('.diz',LowerCase(ParamStr(i)))>0) or //如果是.DIZ文件就打开
           (Pos('.ini',LowerCase(ParamStr(i)))>0) or //如果是.INI文件就打开
           (Pos('.inf',LowerCase(ParamStr(i)))>0) or //如果是.INF文件就打开
           (Pos('.htm',LowerCase(ParamStr(i)))>0) or //如果是.HTM文件就打开
           (Pos('.html',LowerCase(ParamStr(i)))>0) or//如果是.HTML文件就打开
           (Pos('.asm',LowerCase(ParamStr(i)))>0) or //如果是.ASM文件就打开
           (Pos('.cpp',LowerCase(ParamStr(i)))>0) or //如果是.CPP文件就打开
           (Pos('.c',LowerCase(ParamStr(i)))>0) or   //如果是.C文件就打开
           (Pos('.h',LowerCase(ParamStr(i)))>0)      //如果是.H文件就打开
        then
           begin
             FlatMemo1.Lines.LoadFromFile(Paramstr(i));
             Break;
           end;
       end;
    end;