Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何从GetEnv&;初始化Ada无界字符串;字面意义的_String_Ada_Getenv - Fatal编程技术网

String 如何从GetEnv&;初始化Ada无界字符串;字面意义的

String 如何从GetEnv&;初始化Ada无界字符串;字面意义的,string,ada,getenv,String,Ada,Getenv,G'day,我在一段简单的代码中发现了编译错误。目标是使用环境变量作为默认值的一部分。我们正在使用Ada95,所以我想知道它是否是一个版本 我们所说的“模型”看起来像这样: Default\u Override\u Message\u Text:Ada.Strings.Unbounded.Unbounded\u String :=Ada.Strings.Unbounded.To_Unbounded_String( Gnat.Os_Lib.Getenv(“数据文件”)& “/override_re

G'day,我在一段简单的代码中发现了编译错误。目标是使用环境变量作为默认值的一部分。我们正在使用Ada95,所以我想知道它是否是一个版本

我们所说的“模型”看起来像这样:

Default\u Override\u Message\u Text:Ada.Strings.Unbounded.Unbounded\u String
:=Ada.Strings.Unbounded.To_Unbounded_String(
Gnat.Os_Lib.Getenv(“数据文件”)&
“/override_required.txt”);
我在上收到一个错误:

  • 运算符的操作数类型无效&运算符的操作数类型无效“&”
然而,这很好

Default\u Override\u Message\u Text:Ada.Strings.Unbounded.Unbounded\u String
:=Ada.Strings.Unbounded.To_Unbounded_String(
“数据文件”和“/override_required.txt”);
我转向了互联网和书籍,只是看起来它应该是有效的,这里有一个打字或其他方面的困难。PLEAC上给出的例子也给了我一个错误

  • 请看下面的“GetEnv()”:
username:string:=Gnat.Os_Lib.Getenv(“用户”);
数据文件:字符串:=Gnat.Os_Lib.Getenv(“数据文件”);
给出了错误:

  • 生成器结果预期类型“Standard.String”181:37预期类型“Standard.String”生成器结果
  • 生成器结果发现类型为“System.Strings.String\u Access”181:37
我想用这种方法我可以

数据文件:字符串:=Gnat.Os_Lib.Getenv(“GPS_数据文件”);
默认\u覆盖\u消息\u文本:Ada.Strings.Unbounded.Unbounded\u String
:=Ada.Strings.Unbounded.To_Unbounded_String(
数据文件&“/override_required.txt”);--错误
数据_文件_2:字符串:=“GPS_数据_文件”;--作品
默认\u覆盖\u消息\u文本:Ada.Strings.Unbounded.Unbounded\u String
:=Ada.Strings.Unbounded.To_Unbounded_String(
数据文件_2&“/override_required.txt”);--作品
我仍然在使用GetEnv做一些错误的事情,因为如果我能正确地从GetEnv()赋值,我们想要的一切看起来都会发生,类似于
DATA\u FILES\u 2
选项会工作(根据我的编译器)


有人能指出我的错误吗?或者Ada95对我正在查看的示例使用了不同的规则?

Gnat.Os_Lib.Getenv函数的声明是:

function Getenv (Name : String) return String_Access;
请注意,它返回一个字符串,而不是一个字符串(我不知道为什么)

添加
.all
以从
String\u访问
结果中获取
String
值应该可以解决您的问题:

Default_Override_Message_Text   : Ada.Strings.Unbounded.Unbounded_String
   := Ada.Strings.Unbounded.To_Unbounded_String(
         Gnat.Os_Lib.Getenv( "DATA_FILES" ).all & 
         "/override_required.txt" );

(使用
Gnat.Os_Lib.Getenv
返回
String\u Access
而不是
String
可能是区分缺少的环境变量和值为空字符串的环境变量的一个机会。不幸的是,在这两种情况下,它都返回对空字符串的访问。)Gnat.Os_Lib.Getenv函数的声明是:

function Getenv (Name : String) return String_Access;
请注意,它返回一个字符串,而不是一个字符串(我不知道为什么)

添加
.all
以从
String\u访问
结果中获取
String
值应该可以解决您的问题:

Default_Override_Message_Text   : Ada.Strings.Unbounded.Unbounded_String
   := Ada.Strings.Unbounded.To_Unbounded_String(
         Gnat.Os_Lib.Getenv( "DATA_FILES" ).all & 
         "/override_required.txt" );

(使用
Gnat.Os_Lib.Getenv
返回
String\u Access
而不是
String
可能是区分缺少的环境变量和值为空字符串的环境变量的一个机会。不幸的是,在这两种情况下,它都返回对空字符串的访问。)Gnat.Os_Lib.Getenv函数的声明是:

function Getenv (Name : String) return String_Access;
请注意,它返回一个字符串,而不是一个字符串(我不知道为什么)

添加
.all
以从
String\u访问
结果中获取
String
值应该可以解决您的问题:

Default_Override_Message_Text   : Ada.Strings.Unbounded.Unbounded_String
   := Ada.Strings.Unbounded.To_Unbounded_String(
         Gnat.Os_Lib.Getenv( "DATA_FILES" ).all & 
         "/override_required.txt" );

(使用
Gnat.Os_Lib.Getenv
返回
String\u Access
而不是
String
可能是区分缺少的环境变量和值为空字符串的环境变量的一个机会。不幸的是,在这两种情况下,它都返回对空字符串的访问。)Gnat.Os_Lib.Getenv函数的声明是:

function Getenv (Name : String) return String_Access;
请注意,它返回一个字符串,而不是一个字符串(我不知道为什么)

添加
.all
以从
String\u访问
结果中获取
String
值应该可以解决您的问题:

Default_Override_Message_Text   : Ada.Strings.Unbounded.Unbounded_String
   := Ada.Strings.Unbounded.To_Unbounded_String(
         Gnat.Os_Lib.Getenv( "DATA_FILES" ).all & 
         "/override_required.txt" );

(使用
Gnat.Os_Lib.Getenv
返回
String\u Access
而不是
String
可能是区分缺少的环境变量和值为空字符串的环境变量的一个机会。不幸的是,在这两种情况下,它都返回对空字符串的访问。)

谢谢Keith--看起来这些示例是错的?谢谢Keith--看起来这些示例是错的?谢谢Keith--看起来这些示例是错的?谢谢Keith--看起来这些示例是错的?Ada 2005添加了包
Ada.Directories
Ada.Environment\u Variables
所以您无需硬编码依赖于操作系统的文件名约定或依靠GNAT包即可完成所需的工作。也许是时候考虑升级了?谢谢是的,我现在明白了。幸运的是,我们下面的朋友基思让我明白了。非常感谢,我正在学习这门语言。Ada 2005添加了包
Ada.Directories
Ada.Environment\u Variables
,这样您就可以做您需要的事情,而无需硬编码依赖操作系统的文件名约定或依赖GNAT包。也许是时候考虑升级了?谢谢是的,我现在明白了。幸运的是,我们下面的朋友基思让我明白了。非常感谢,我正在学习这门语言。Ada