Ada语言中命令行使用

要制作命令行程序,使用系统包ada.command_line 。以下例程实现一个命令行程序。
命令如下:remove -iInputFileName -nCutOffNumber -oOutFileName
该程序读取输入文件,将输入文件内容的前CutOffNumber个字节的内容去除,保存在输出文件中。
该程序就是在操作系统简单例程中提到的一个小工具。
package Ada.command_line函数说明:
function Argument_Count return Natural; – 该函数返回输入的参数个数
function Argument (Number : Positive) return String; – 该函数返回第N个参数字符串,从1开始
function Command_Name return String; – 该函数返回第1个参数,与C中的第0个参数对应
procedure Set_Exit_Status (Code : Exit_Status); – 该过程设置程序结束状态

with ada.Text_IO;
with ada.Command_Line;          use ada.Command_Line;
with ada.Streams.Stream_IO;
procedure remove istype ASTR is access all string;function load(file:in string) return ASTR isuse ada.Streams.Stream_IO;pFile:File_Type;fsize:count;St   :Stream_Access;src  :ASTR:=Null;beginopen(pFile,in_file,file);fsize:=size(pFile);St:=stream(pFile);src:=new string(1..Integer(fsize));string'read(St,Src.all);close(pFile);return src;exception when others=>return Null;end load;beginif Argument_Count/=3 thenada.Text_IO.Put_Line(item=>"Command: remove -iInputFileName -nCutNum -oOutputFileName");set_exit_status(Failure);elsif Argument_Count=3 thendeclareuse ada.Streams.Stream_IO;arg1:string:=Argument(1);arg2:string:=Argument(2);arg3:string:=Argument(3);cmd1:string:=(if arg1(1..2)="-i" then arg1 elsif arg2(1..2)="-i" then arg2 elsif arg3(1..2)="-i" then arg3 else "NULL");cmd2:string:=(if arg1(1..2)="-n" then arg1 elsif arg2(1..2)="-n" then arg2 elsif arg3(1..2)="-n" then arg3 else "NULL" );cmd3:string:=(if arg1(1..2)="-o" then arg1 elsif arg2(1..2)="-o" then arg2 elsif arg3(1..2)="-o" then arg3 else "NULL");InFile:ASTR:=Null;outFile:ada.Streams.Stream_IO.File_Type;outStream:ada.Streams.Stream_IO.Stream_Access;beginif cmd1(1..2)="-i" thenInFile:=load(cmd1(3..cmd1'last));if inFIle/=null thenif cmd3(1..2)="-o" thencreate(outFile,Out_File,cmd3(3..cmd3'last));elsecreate(outFile,Out_File,"Out_"&cmd1(3..cmd1'last));end if;outStream:=Stream(outFile);if cmd2(1..2)="-n" thenstring'write(outStream,inFile(1+Integer'value(cmd2(3..cmd2'last))..inFile'last));elseada.Text_IO.Put_Line("Missing Cut-Number Argument,set zero");string'write(outStream,inFile(1..inFile'last));end if;close(outFile);set_exit_status(Success);elseada.Text_IO.Put_Line(item=>"The InpputFile is not Exist");set_exit_status(Failure);end if;elseada.Text_IO.Put_Line("Missing InputFile Argument.");ada.Text_IO.Put_Line(item=>"Command: remove -iInputFileName -nCutNum -oOutputFileName");set_exit_status(Failure);end if;end;end if;
end remove;

Ada语言中命令行使用相关推荐

  1. Go语言中命令行参数的实现

    为什么80%的码农都做不了架构师?>>>    在写命令行程序时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自 ...

  2. 在c语言中命令行参数是什么,C语言命令行参数

    这是可能在命令行中的一些值传递给C程序执行.特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要. 命令行参数使用main()函数的参数,其 ...

  3. c语言中命令行参数argc,argv[]详解

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

  4. python 命令行参数-python中命令行参数

    python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 len(sys.argv)是命令 ...

  5. c语言用命令行编译运行程序_使用C程序执行系统命令

    c语言用命令行编译运行程序 Sometimes, we may need to execute Linux/Windows DOS commands through our C program. (N ...

  6. c语言学习进阶-C语言带命令行参数的文件数据批量计算

    C语言带命令行参数的文件数据批量计算 (1)假设输入文件中的数据为多行整数,把数据文件命名为"InputData.txt",也可以命名为任意的文件名,尝试设计一个c 语言程序, 主 ...

  7. c语音学习进阶-C语言带命令行参数的程序设计

    C语言带命令行参数的程序设计 (1)深入理解并学习带命令行参数的程序设计方法,使用c 语言完成带命令行参数的科学计算程序,能从给定的任意文件名的文件当中输入数据,并能向给定的任意文件名的输出文件当中输 ...

  8. c++笔记(1):C++中命令行参数argc,argc[ ]究竟是什么

    C++中命令行参数argc,argc[ ]究竟是什么 1.argc为整数 2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][ ...

  9. 文本编辑器中命令行参数的应用

    文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...

最新文章

  1. 儿童编程软件python-MRT7-Python少儿编程下载
  2. python电脑下载方法-python 获取机器snpython下载文件的几种常用方法
  3. ubuntu 将某个目录下的文件复制到_命令行 将多个特定文件从一个文件夹复制到另一个文件夹...
  4. Item category dropdown list的determine - filtering 逻辑
  5. SQL 个人所学目录
  6. java基于springboot校园餐厅订餐管理系统
  7. 小学奥林匹克计算机怎么学,小学奥林匹克数学教程1--6年级全套
  8. 简单版本CRM 客户管理系统设计
  9. Python添加flac文件标签并实现wav转flac
  10. 制作vagrant镜像
  11. 用pytorch实现神经网络
  12. poj 1837 Balance
  13. 5G SA and NSA
  14. 瑞芯微 | 摄像头ov13850移植笔记
  15. “经历了人生百态世间的冷暖,这笑容温暖纯真”
  16. 第四周 并联电阻的值
  17. 微商怎么从小白开始学发圈
  18. Python:摘苹果
  19. 多图解读三大股票指数 沪深300、中证500、中证1000有何细节差异
  20. Bootloader Project

热门文章

  1. ibatis批量插入数据-iterate标签详解及应用
  2. C语言从0到1算法小白训练营——day1
  3. 一目了然 AI和PS的区别
  4. Arduino练习三——PWM 调控灯光亮度实验
  5. 2012百度校园招聘笔试试题
  6. 艾钧教授:5G、数字化、互联网、云计算、物联网、AI、智慧城市等课程专家
  7. Eclipse JDT--ASTParser介绍
  8. android版本5.1.1更新包,华为EMUI3.1(安卓5.0/5.1)升级包
  9. 本地实现类似bilibili漫画,浏览器看漫画,python自动生成
  10. 西部大开发,青海得到了什么?