我使用GNATColl创建SQL查询。我考虑使用"To_String“方法对生成的SQL代码执行可视化检查,但是当我调用Ada.Text_IO.Put_Line或Ada.Text_IO.Put来查看string时,将向输出中添加回车。
例如,如果我期望:
SELECT orders.order_id, customers.last_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id WHERE orders.order_id <> 1 ORDER BY orders.order_id;在Put_ line /Put之后我得到了什么(注意customers.cust CRLF omer_id上的行中断):
SELECT orders.order_id, customers.last_name FROM orders INNER JOIN customers ON orders.customer_id = customers.cust
omer_id WHERE orders.order_id <> 1 ORDER BY orders.order_id;我最初怀疑回车是由于GNATColl错误造成的,但现在我怀疑过程Ada.Text_IO.Put_Line有一个最大行长可打印。我说的对吗?
我尝试了"Ada.Text_IO.Set_Line_Length“这个过程,它有一个巨大的计数值,比添加回车的位置要大,但是它是在同一个地方打印的。
如何在一行上而不是几行上打印大字符串?
新怀疑:
我在GNATStudio上运行了main,但是如果我在cmd上直接运行main.exe,我现在可以在一行中看到SQL。GNATStudio可能正在为打印配置最大行长。
发布于 2022-07-06 14:19:36
Ada中的行长是无界的,直到显式更改,如Set_Line_Length或New_Line所要求的那样。可能是您的命令行控制台正在包装这些行以提高可读性。测试这一点的一种方法是使用Ada.Strings.Fixed将一行长行打印到控制台:
Put_Line (50 * "0123456789");您还可以将输出输送到一个实用程序,该实用程序可以格式化输出以进行更仔细的检查:
./main | hexdump -C您的确切方法将取决于所使用的控制台。在使用GNAT时,我看到它支持。
https://stackoverflow.com/questions/72868316
复制相似问题