我试图使用Integer‘’Value将字符串转换为Integer。这对于通过一个文件的第一个循环来说很好,但是在那之后我得到了一个糟糕的值输入(引发的Constraint_Error。我希望有人能告诉我我的方法的错误,这样我就可以在每个循环中将字符串转换成一个整数。)
WITH Ada.Text_IO, Ada.Integer_Text_IO;
USE Ada.Text_IO, Ada.Integer_Text_IO;
PROCEDURE Isbntest IS
FUNCTION Strip(The_String: String; The_Characters: String)
RETURN String IS
Keep: ARRAY (Character) OF Boolean := (OTHERS => True);
Result: String(The_String'RANGE);
Last: Natural := Result'First-1;
BEGIN
FOR I IN The_Characters'Range LOOP
Keep(The_Characters(I)) := False;
END LOOP;
FOR J IN The_String'RANGE LOOP
IF Keep(The_String(J)) THEN
Last := Last+1;
Result(Last) := The_String(J);
END IF;
END LOOP;
RETURN Result(Result'First .. Last);
END Strip;
Input: File_Type := Ada.Text_IO.Standard_Input;
BEGIN
WHILE NOT End_of_File(Input) LOOP
DECLARE
Line : String := Ada.Text_IO.Get_Line(Input);
StrippedLine : String := line;
ascii_val: Integer :=0;
BEGIN
StrippedLine := Strip(Line, "-");
ascii_val := integer'value(StrippedLine);
Put(ascii_val);
Put_line(StrippedLine);
END;
END LOOP;
Close (Input);
end isbntest;
发布于 2017-10-02 13:32:50
问题是,在创建数组之后,您正在处理数组的长度。别干那事。
而不是
DECLARE
Line : String := Ada.Text_IO.Get_Line(Input);
StrippedLine : String := line;
BEGIN
StrippedLine := Strip(Line, "-");
当您声明Stripped_Line时,只需将它直接初始化到正确的大小。
DECLARE
Line : String := Ada.Text_IO.Get_Line(Input);
StrippedLine : String := Strip(Line, "-");
BEGIN
我假设你的“条形”函数在这里正确工作..。
https://stackoverflow.com/questions/46532176
复制相似问题