也就是说,如果用户使用命令行开关 /i, 则启动form1窗口,否则是个控制台程序,windowsxp自带的shutdown就是这样一个程序,如果带上参数/i,就是窗口程序,否则就只显示控制台.

解决方案 »

  1.   

    program PConsoleGUI;uses
      Forms,
      SysUtils,
      Windows,
      GUIForm in 'GUIForm.pas' {GUI};{$R *.res}var
      Name: string;begin
      if not FindCmdLineSwitch('i') then  
      begin
        AllocConsole;
        try
          WriteLn('控制台');
          ReadLn(Name);
          WriteLn('你的大名:');
          ReadLn(Name);
          WriteLn(Name+' 您好!');
          ReadLn(Name);
        finally
          FreeConsole;
        end;
      end else
      begin
        Application.Initialize;
        Application.Title := '图形界面';
        Application.CreateForm(TGUI, GUI);
        Application.Run;
      end;end.
      

  2.   

    多谢sanmaotuo(老冯) ,代码可以运行.
    但与我的要求还是有些差别,我希望的是在命令提示符下面输入myproj.exe /i, 启动到窗口模式,这个没有问题,但在不用参数运行时,运行的结果不是显示在当前的控制台的,而是新出来一个控制台.这个如何解决呢?
      

  3.   

    借用sanmaotuo(老冯)的代码修改如下
    program Project2;{$APPTYPE CONSOLE}uses
      SysUtils,
      Forms,
      Unit1 in 'Unit1.pas' {Form1};var
      Name: string;begin
      if not FindCmdLineSwitch('i') then
      begin
        WriteLn('控制台');
        ReadLn(Name);
        WriteLn('你的大名:');
        ReadLn(Name);
        WriteLn(Name+' 您好!');
        ReadLn(Name);
      end else
      begin
        Application.Initialize;
        Application.Title := '图形界面';
        Application.CreateForm(TForm1, Form1);
        Application.Run;
      end;
    end.
      

  4.   

    to postren(小虫【最近比较忙】) :
    这样我试过了,在/i参数运行时会出来一个很讨厌的控制台窗口.
      

  5.   

    修改一下,你看看行吗?program PConsoleGUI;
    {$APPTYPE CONSOLE}uses
      Forms,
      SysUtils,
      Windows,
      GUIForm in 'GUIForm.pas' {GUI};{$R *.res}var
      Name: string;begin
      if not FindCmdLineSwitch('i') then
      begin
        //AllocConsole;
        try
          WriteLn('控制台');
          ReadLn(Name);
          WriteLn('你的大名:');
          ReadLn(Name);
          WriteLn(Name+' 您好!');
          ReadLn(Name);
        finally
          //FreeConsole;
        end;
      end else
      begin
        FreeConsole; //新增
        Application.Initialize;
        Application.Title := '图形界面';
        Application.CreateForm(TGUI, GUI);
        Application.Run;
      end;end.
      

  6.   

    其实最开始我就这样写的,但启动GUI时控制台要闪一下(我不是在命令行启动,我是在运行里面直接输入的,如果在命令行输入没有这个问题)
      

  7.   

    to sanmaotuo(老冯) (:
    能不闪那个窗口就完全没有问题了