<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      通過DELPHI小程序在WINDOWS下更好地使用DOS批處理

      [摘要]我們知道 DOS 下的批處理程序中,可以用 ECHO 顯示一段信息(提示信息或出錯信息),對于要接收用戶輸入的情況,MS-DOS 本身提供的外部程序就只有 CHOICE 能讓用戶輸入一個鍵,所以基本...
      我們知道 DOS 下的批處理程序中,可以用 ECHO 顯示一段信息(提示信息或出錯信息),對于要接收用戶輸入的情況,MS-DOS 本身提供的外部程序就只有 CHOICE 能讓用戶輸入一個鍵,所以基本上只能用于菜單選擇。對于下述兩個需求,那就只有另外編程序了:
      1、在 DOS 下的批處理程序中通過 WINDOWS 對話框顯示一段提示信息或出錯信息
      2、在 DOS 下的批處理程序中通過 WINDOWS 對話框接收用戶輸入的一個字符串,并對其進行后續處理

      對于這兩個問題,相信有些人已經有了一些解決方案。在此我提出我的解決方案,是用 DELPHI 寫的程序(這些DELPHI程序都是沒有 FORM 和.PAS文件的),我覺得比較簡單,作為拋磚引玉。

      1.1 顯示提示信息 SHOWMSG.DPR
      program ShowMsg;
      uses Windows;
      {$R *.RES}
      begin
        if ParamCount < 2 then
      begin
      MessageBox(0, '用Windows對話框顯示信息'#13#10+
      '用法: ShowMsg 提示信息 對話框標題',
      '用法說明', MB_ICONINFORMATION);
      Halt;
      end;
      MessageBox(0, PChar(ParamStr(1)), Pchar(ParamStr(2)), MB_OK);
      Halt;
      end.

      1.2 顯示出錯信息 EmsgDlg.DPR
      program EmsgDlg;
      uses Windows;
      {$R *.RES}
      begin
      if ParamCount < 2 then
      begin
      MessageBox(0, '用Windows對話框顯示出錯信息'#13#10+
      '用法: EmsgDlg 出錯信息 對話框標題',
      '用法說明', MB_ICONINFORMATION);
      Halt;
      end;
      MessageBox(0, PChar(ParamStr(1)), PChar(ParamStr(2)), mb_IconHand);
      Halt;
      end.

      2. INPUTBOX.DPR: 通過 WINDOWS 對話框接收用戶輸入的一個字符串,并把用戶輸入作為調用一個批處理程序或其他程序的第1個參數
      program INPUTBOX;
      uses Dialogs, Windows;
      {$R *.RES}
      var
      NewString: string;
      ClickedOK: Boolean;
      begin
      if ParamCount < 4 then
      begin
      MessageBox(0, '將用戶輸入作為.BAT或其他程序的參數調用'#13#10+
      '用法: InputBox .BAT或其他程序文件名 缺省輸入 對話框標題 提示信息',
      'InputBox用法說明', MB_ICONINFORMATION);
      Halt;
      end;
      NewString := ParamStr(2); //default string
      ClickedOK := InputQuery(ParamStr(3), ParamStr(4), NewString);
      if ClickedOK then
      WinExec(PChar(ParamStr(1) + ' ' + NewString), SW_SHOWNORMAL);
      Halt;
      end.


      用法舉例:
      PRT.BAT文件內容:
      @ECHO OFF
      D:\POS\INPUTBOX.EXE PR30.BAT "99991231" "解壓POS報表文件并用寫字板打開入帳匯總表" "請輸入日期:"

      PR30.BAT文件內容:
      @ECHO OFF
      IF "%1"=="" GOTO END
      D:
      CD \POS\INBOX
      IF NOT EXIST POS%1.ARJ GOTO NOT_FOUND
      D:\POS\ARJ X -y POS%1.ARJ
      CD D:\POS\INBOX\pos_report
      IF NOT EXIST Pr30B%1.txt GOTO PR30_NOT_FOUND
      C:\WINDOWS\WRITE Pr30B%1.txt
      D:\POS\ShowMsg "成功!" "OK!!!"
      GOTO END

      :NOT_FOUND
      D:\POS\EmsgDlg "文件D:\POS\INBOX\POS%1.ARJ找不到!" "出錯!"
      CD D:\
      GOTO END

      :PR30_NOT_FOUND
      D:\POS\EmsgDlg "文件D:\POS\INBOX\pos_report\Pr30B%1.txt找不到!" "出錯!"
      CD D:\
      GOTO END

      :END

      注:上述 DELPHI 程序編譯后,INPUTBOX.EXE大小是308KB,EMSGDLG.EXE 和 ShowMsg.exe大小都是 17KB,沒有比較用 VC 或 BCB 來寫的結果。但可以肯定,用 WIN32 匯編產生的 .EXE 最小,不過我沒有仔細學過 WIN32 匯編。歡迎有興趣的大俠比較一下或提出改進方法。


      日韩精品一区二区三区高清