读取包含“[”的文件时出现 CONSTRAINT_ERROR

2023-12-04

我正在阅读一个简单的文本文件。一切都按其应有的方式工作,除非遇到开括号(“[”)字符。然后我得到一个 CONSTRAINT_ERROR。

我的职能是:

----------------------------------------------
-- GET_FILE_CONTENTS
function Get_File_Contents (File_Name : in String)
    return String_Array is
    -- Loads the entire file into a dynamically sized
    -- array of Unbounded_Wide_String.

    -- The line count is used to dynamically size the array.
    Line_Count : Natural
               := 0;

    File : Ada.Wide_Text_IO.File_Type;
begin
    -- Get the line count before opening the file.
    Line_Count := Get_File_Line_Count (File_Name);

    Ada.Wide_Text_IO.Open (File,
                           In_File,
                           File_Name);
    declare
        Lines : String_Array (1 .. Line_Count);
    begin

        -- Step through the file and save each line.
        for Current_Line in reverse 1 .. Line_Count loop
            Lines(Current_Line) := To_Unbounded_Wide_String (Ada.Wide_Text_IO.Get_Line (File));
        end loop;

    -- Remember to close the file.
    Ada.Wide_Text_IO.Close (File);
    return Lines;

end;
end Get_File_Contents;

CONSTRAINT_ERROR 在“s-wchcnv.adb:207”中引发。文件的相关部分是这样的

when WCEM_Brackets =>
    if C /= '[' then
       return Character'Pos (C);
    end if;

    if In_Char /= '"' then
       raise Constraint_Error; <======= CONSTRAINT_ERROR
    end if;

这是我找到的信息:

--  Note on the use of brackets encoding (WCEM_Brackets). The brackets
--  encoding method is ambiguous in the context of this function, since
--  there is no way to tell if ["1234"] is eight unencoded characters or
--  one encoded character. In the context of Ada sources, any sequence
--  starting [" must be the start of an encoding (since that sequence is
--  not valid in Ada source otherwise). The routines in this package use
--  the same approach. If the input string contains the sequence [" then
--  this is assumed to be the start of a brackets encoding sequence, and
--  if it does not match the syntax, an error is raised.

如何关闭此功能,以便“[”不会被解释为 WCEM?

Edit:

编译器版本为GNAT GPL 2014 (20140331) 操作系统是 Windows 7 x64

重现 CONSTRAINT_ERROR 的小程序:

with Ada.Wide_Text_IO; use Ada.Wide_Text_IO;

procedure Main is
    File : File_Type;
    File_Name : String := "Data.txt";
begin
    Open (File,
          In_File,
          File_Name);

    while not End_Of_File (File) loop
    declare
        Line : Wide_String := Get_Line (File);
    begin
        Put_Line (Line);
    end;
    end loop;

    Close (File);
end Main;

“Data.txt”文件需要位于可执行文件附近。

如果“Data.txt”包含如下文本,没问题。

Hello
abc

添加“[”并引发 CONSTRAINT_ERROR:

Hello[
abc

使用 Open 调用的“Form”参数将字符编码指定为除“WCEM=b”之外的括号字符编码。

with Ada.Wide_Text_IO; use Ada.Wide_Text_IO;

procedure Main is
    File : File_Type;
    File_Name : String := "Data.txt";
begin
    Open (File,
          In_File,
          File_Name, 
          Form => "WCEM=8");

    while not End_Of_File (File) loop
    declare
        Line : Wide_String := Get_Line (File);
    begin
        Put_Line (Line);
    end;
    end loop;

    Close (File);
end Main;

相关文档请参见here

基思·汤普森 (Keith Thompson) 因找到相关文档而值得称赞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取包含“[”的文件时出现 CONSTRAINT_ERROR 的相关文章

  • Ada 中的自定义“图像属性”?

    所以我有一件事 type Thing is new record elements end record 我有一个将其字符串化的函数 function ToString t Thing returns string 我希望能够告诉 Ada
  • Ada 中的派生类型和子类型

    有什么区别 首先 术语 它是 Ada 不是 ADA 它是以 Ada Lovelace 命名的 它不是一个缩写词 子类型与其基类型兼容 因此您可以将基类型的操作数与基类型的操作数混合 例如 subtype Week Days is Integ
  • 在 Ada 中创建子类型而不指定范围有什么意义?

    在Ada中 我经常看到这样的东西 type Number is new Integer 这有什么意义呢 难道你就不能快乐吗 Integer 我还看到过这样的代码 type Small Number is range 1 5 这对我来说是有道
  • 从 Ada 调用 scanf

    如何从 Ada 调用 scanf 也就是说 大概有一个适当的 pragma import 声明 但是声明会是什么样子呢 我感兴趣的是如何从 Ada 调用更难以驾驭的 C 函数 而不是如何解析字符串本身 所以我不是在寻找纯粹的 Ada 解决方
  • Ada:gnat gprbuild 如何链接到库中?

    在我正在处理的这个多语言 GPRBuild 项目中 我有一些 C 库文件 a 我需要链接到我的可执行文件中 是否有 gpr 属性告诉它链接什么或无论如何将 l L 开关传递给链接器 或者甚至更好 Project my library is
  • Ada 与 Netbeans

    我下载了 Netbeans 插件 用于使用 Ada 进行编程 但是 我不知道如何将Eclipse链接到Ada平台库 什么应该链接到 IDE lib 等 bin 我不知道该怎么办 安装后Ada 插件模块 http wiki netbeans
  • 为什么字符串需要用初始值初始化?

    我有一根绳子lx String我想稍后在代码中设置该值 但出现错误unconstrained subtype not allowed need initialization provide initial value or explicit
  • 什么是“libgnarl”?

    What is libgnarl 我在不同的地方找到了对此的引用 例如在 gcc 源代码中或 gprbuild 的详细输出中 gprbuild 特别报告了有关决定是否libgnarl甚至是必要的 所以它显然是一个可选库 但实际的库是什么 我
  • 如何阻止控制台窗口立即关闭 | GNAT-GPS

    我有 Ada 程序 可以使用 GNAT GPS 完美运行和编译 当我运行其 exe 文件并提供用户输入时 该 exe 会立即关闭 而不是说 按任意键继续 我在网上搜索了很多 但我只找到了与使用 system pause 的 c c visu
  • 在Android中使用Ada代码

    Android 中是否有可能使用旧的 Ada 代码 我有一个用 Ada 编写的旧脚本 如果我可以直接在 Android 中使用该代码 通过 NDK 或 JNI 等 那就太好了 这可能吗 或者我应该移植代码 以下是我找到的一些链接 但我不太明
  • Ada 中的字符串数组

    我在 Ada95 中有一个程序 我必须在其中创建一个字符串数组 该数组可以包含可变长度的字符串 例子 我已经声明了一个数组 其中所有索引都可以存储大小为 50 的字符串 当我为上面的数组分配一个较小的字符串时 我收到 约束错误 Code p
  • 从大端数据中提取记录

    我有以下用于网络协议实现的代码 由于协议是大端 我想使用位顺序属性和高阶优先值 但看来我犯了一个错误 With Ada Unchecked Conversion with Ada Text IO use Ada Text IO with S
  • Ada.Containers.Functional_Maps 在 Ada2012 中可用吗?

    有关的信息Ada Containers Functional Maps https docs adacore com gnat rm docs html gnat rm gnat rm the gnat library html ada c
  • C++ 中的 Ada 子类型等效项

    C 是否提供类似于 Ada 的功能subtype缩小类型 E g type Weekday is Monday Tuesday Wednesday Thursday Friday Saturday Sunday subtype Workin
  • Ada T'Class 的基础知识

    虽然有点不好意思问这个问题 但我知道这是最好的 我已经使用 Ada 编程很多年了 并且几乎可以流利地理解该语言的每个部分 然而 我似乎始终无法完全理解 T Class 借用别人的话 有人可以 像我五岁一样解释一下吗 编辑 我买它只是为了拥有
  • 在 Ada 中立即开始循环的下一次迭代

    我想要一个无限循环 其中循环几乎贯穿整个程序 并且在任何时候 基于条件语句 我希望它退出循环的特定迭代并返回到顶部并执行 有办法做到这一点吗 它不必是无限循环 它可以是一个for循环 我只想让它进入该循环的下一次迭代 您可以使用 goto
  • 让 Ada(用 GNAT 编译)从当前目录外部导入文件?

    我正在大学学习编程入门课程 选择的语言是 Ada 我正在 Kate 中编码并使用 GNAT 4 6 3 进行编译 我们必须为我们的程序使用教师提供的库 如下所示 with foo use foo 当然 然后文件foo adb必须包含在与我的
  • Mac OS 上的 Ada 编译器 GNAT

    我正在尝试使用 mac 上的终端编译 ada 但总是收到此错误 错误 x ada 中的 ada 值无效 有人知道如何解决这个问题吗 你可能没有安装Ada编译器 OSX自带的gcc不支持Ada 目前 有两种适用于 OSX 且支持 Ada 的免
  • 如何证明这个不变量呢?

    我的目的是证明霍纳规则是正确的 为此 我将霍纳当前计算的值与 实 多项式的值进行比较 所以我写了这段代码 package body Poly with SPARK Mode is function Horner X Integer A Ve
  • 对于匿名访问类型重载运算符“=”?

    我正在读巴恩斯那本出色的 艾达 一书 这是第 11 7 节中用于深度比较链表的代码示例 type Cell is record Next access Cell Value Integer end record function L R a

随机推荐

  • JSF 何时创建会话以及它在会话映射中放入什么内容?

    我正在运行 Mojarra 2 2 0
  • 正则表达式仅返回七位数字匹配

    我一直在尝试构建一个正则表达式来从字符串中提取 7 位数字 但很难获得正确的模式 示例字符串 WO1519641 WO1528113TB WO1530212 TB 返回示例 1519641 1528113 1530212 我在 Excel
  • 查找字符串的所有不同子字符串

    大家好 我被布置了家庭作业 要求我找到字符串的所有不同子字符串 我已经实现了一种方法 它会告诉您字符串的所有子字符串 但我需要帮助弄清楚如何不计算已经作为子字符串计算过一次的子字符串 因为赋值是为了找到不同的子字符串 public int
  • 如何将 char 变量设置为 Input.GetKey 的 KeyCode?

    我正在尝试制作一个作弊代码系统 我有一个字符数组 我想将玩家输入的任何输入分配给该字符 然后将索引更改为下一个字符并重复该操作 最后 我想将所有字符组合成一个字符串 看看这是否是作弊代码 如果是的话 那么玩家将获得加电或其他什么 我基本上希
  • Python,检查是否按下箭头键

    如何在Python中检查用户是否按下箭头键 我想要这样的东西 if right key pressed do some shit elif left key pressed do other stuff 在终端 或 anacoonda 提示
  • 锚点和成员具有并集的递归查询

    我正在尝试执行递归查询 但锚点和成员 cte 都有一个并集 这可能吗 我得到的错误是 Recursive member of a common table expression mainMenu has multiple recursive
  • 我可以在客户端使用Fetch调用Twitter API吗?

    我试图在 React 应用程序中调用 Twitter API 并收到以下错误 获取 API 无法加载https api twitter com 1 1 account verify credentials json 回复 预检请求未通过访问
  • 可可:场景与视图

    菜鸟问题在这里 我想我已经掌握了三个基本模型 视图 控制器元素的基础知识 有点 但什么是场景呢 我知道 iPad 每个屏幕可以有多个场景 而 iPhone iPod 只能有一个 但是场景与视图有何关系呢 如果我的理解有严重错误 请多多指教
  • 在 VBA 中创建和转置数组

    我希望将一定范围内的值加载到数组中并将该数组转置到另一个位置 不同的工作簿 我正在使用下面的论坛帖子来了解如何做到这一点 http www mrexcel com forum excel questions 629320 applicati
  • 将两个表达式组合成管道

    假设我有以下两个表达式 Expression
  • 如何在单独的线程中打开一个窗口?

    我想做 Window newWindow new Window newWindow Show while true Console Write spin 也就是说 我正在主窗口中进行密集计算 但是这个新窗口 我试图在其中用动画显示繁忙指示器
  • Fortran 派生类型:重载赋值运算符不适用于“PARAMETER”属性

    我正在使用派生类型 双复数 和赋值运算符 的重载 以便可以分配real 8 to bicomplex bicplx 模块的 MWE 如下 MODULE bicplx type bicomplex COMPLEX 16 a COMPLEX 1
  • iOS 范围内的随机数

    我知道我可以使用以下命令获得一个随机数 例如从 0 到 700 arc4random 362 但是我怎样才能得到一个介于 200 到 300 之间的随机数呢 arc4random 100 200
  • 数据表服务器端处理不显示页面上的输出,并且条件不起作用[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我正在使用 ajax 进行数据表服务器端处理 这是我引用的链接https datatables net examples data sources server side html 我遇到
  • YesodAuthEmail 无法推断出 m ~ HandlerFor site0 [重复]

    这个问题在这里已经有答案了 我正在尝试添加 instance YesodAuthEmail App to the Yesod Postgres脚手架 yesod 版本 1 6 并陷入编译错误 相关代码是 instance YesodAuth
  • R-在循环中引用不同的数据帧

    我是 R 的新手 所以如果我的想法完全错误 请随时告诉我 我有一系列关于发电厂的导入数据框 每年一个 Plant1987 Plant1988 等 我试图将它们最终组合成一个数据框 在此之前 我想向每个数据帧添加一个 年份 变量 我可以对每个
  • PowerBuilder Classic 12/12.5 指南/教程 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我是 PowerBuilder Classic 12 的新手 我很难找到任何可以帮助我入门的好的指南 教程 现在我已经阅读了以下教程http inf
  • ASP 经典 VBscript 参数化 SQL 查询?

    第一篇文章 但感谢您迄今为止从该网站获得的所有帮助 我正在尝试参数化 SQL 查询 query url Request QueryString ID Set rs Server CreateObject ADODB Recordset Se
  • 解组嵌套 JSON 对象

    有a few 问题 on the topic但它们似乎都不涵盖我的情况 因此我正在创建一个新的情况 我有如下 JSON foo bar 1 baz 2 more text 有没有办法解组嵌套的 bar 属性并将其直接分配给结构属性而不创建嵌
  • 读取包含“[”的文件时出现 CONSTRAINT_ERROR

    我正在阅读一个简单的文本文件 一切都按其应有的方式工作 除非遇到开括号 字符 然后我得到一个 CONSTRAINT ERROR 我的职能是 GET FILE CONTENTS function Get File Contents File