我在Internet上找到的代码有问题,我想制作一个位图,程序说:
程序放PPM(File:File_Type; Picture:Image)是
但是当我在main中调用该过程时,我不知道我应该在第一个参数中添加什么,一个带有名称的字符串,扩展名还是什么?
我希望你能帮帮我 :)
我很相信你的代码来自Rosetta Code.
这开始了
with Ada.Characters.Latin_1;
with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
procedure Put_PPM (File : File_Type; Picture : Image) is
use Ada.Characters.Latin_1;
Run Code Online (Sandbox Code Playgroud)
并且File_Type
在定义Ada.Streams.Stream_IO
(ARM A.12.2).
您的主程序需要声明一个类型的变量Ada.Streams.Stream_IO.File_Type
,创建该文件,并将其传递给Put_PPM
:
with Ada.Streams.Stream_IO;
with Put_PPM;
procedure My_Main is
F : Ada.Streams.Stream_IO.File_Type;
Pic : ...
begin
Ada.Streams.Stream_IO.Create
(F,
Mode => Ada.Streams.Stream_IO.Out_File,
Name => “foo.ppm”);
Put_PPM (File => F, Picture => Pic);
end My_Main;
Run Code Online (Sandbox Code Playgroud)
(这不涉及从命令行获取参数,处理foo.ppm
已存在的情况等等).
Ada意味着很容易(-ish)阅读,代价是花费更多的努力来编写它,以及拯救像你我这样的读者的标准方法,不知道声明的地方是避免'use'条款(at最少)规格.所以Rosetta的例子会写得更好
with Ada.Characters.Latin_1;
with Ada.Streams.Stream_IO;
procedure Put_PPM (File : Ada.Streams.Stream_IO.File_Type; Picture : Image) is
use Ada.Characters.Latin_1;
use Ada.Streams.Stream_IO;
Run Code Online (Sandbox Code Playgroud)
(同样如此Image
).