Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Delphi 如何在VSCode任务错误中配置文件路径_Delphi_Visual Studio Code_Omnipascal - Fatal编程技术网

Delphi 如何在VSCode任务错误中配置文件路径

Delphi 如何在VSCode任务错误中配置文件路径,delphi,visual-studio-code,omnipascal,Delphi,Visual Studio Code,Omnipascal,我在VSCode中配置了一个任务来编译Delphi2005DPK。它正在工作并在“problems”视图上返回错误,但它没有显示文件中的错误 我认为这是因为当我点击一个错误时,我得到了错误信息: 无法打开“sr075pro.pas”:找不到文件 (…项目文件夹\sr075pro.pas) 但该文件位于…projectfolder\webservices\sr075pro.pas中 我找不到方法告诉任务该文件位于子文件夹中。我尝试在“fileLocation”标记上使用“relative”选项,但

我在VSCode中配置了一个任务来编译Delphi2005DPK。它正在工作并在“problems”视图上返回错误,但它没有显示文件中的错误

我认为这是因为当我点击一个错误时,我得到了错误信息:

无法打开“sr075pro.pas”:找不到文件 (…项目文件夹\sr075pro.pas)

但该文件位于
…projectfolder\webservices\sr075pro.pas

我找不到方法告诉任务该文件位于子文件夹中。我尝试在“fileLocation”标记上使用“relative”选项,但没有成功

返回的错误为:

Compiling sa_webservices...
Borland Delphi  Version 13.0  Copyright (c) 1983,99 Inprise Corporation
sr075pro.pas(99) Error: Undeclared identifier: 'ni'
sa_webservices.dpk(802) Fatal: Could not compile used unit 'sr075pro.pas'
我的任务配置:

{
“版本”:“0.1.0”,
“名称”:“编译器”,
“命令”:“C:\\Compilers\\compile.bat”,
“suppressTaskName”:true,
“isShellCommand”:正确,
“isBuildCommand”:正确,
“任务”:[
{
“任务名称”:“编译sa_Web服务”,
“isBuildCommand”:false,
“isTestCommand”:false,
“showOutput”:“始终”,
“args”:[
“sa_Web服务”
],
“问题匹配者”:{
“所有者”:“外部”,
“文件位置”:“相对”,
“模式”:{
“regexp:“^([\\w]+\\(pas | dpr | dpk))\\(\\d+\\)\\s(致命错误警告提示):(.*)”,
“文件”:1,
"行":3,,
“信息”:5
}
}
}
My compile.bat:


您的任务配置是错误的。首先,您没有关闭所有括号,但我想这是复制并粘贴到StackOverflow上的错误。否则,任务配置将根本无法工作

现在谈谈真正的问题: DCC32生成包含相对文件路径的提示和警告。这些路径是相对于项目文件的路径。在任务配置中,通过设置

"fileLocation": "relative"
Visual Studio代码不知道如何根据编译器消息提供的相对路径构建正确的绝对路径。因此,它猜测您当前的${workspaceRoot}(在您的示例中是projectfolder)将是绝对路径

这解释了为什么您会看到包含错误文件路径的错误和警告。为了获得正确的路径,您需要告诉VSCode将相对路径与之组合的正确路径。 您只需将正确的路径添加到
tasks.json中的
fileLocation
条目即可:

"fileLocation": ["relative", "${workspaceRoot}\\webservices"]
整个tasks.json如下所示:

{
“版本”:“0.1.0”,
“名称”:“编译器”,
“命令”:“C:\\Compilers\\compile.bat”,
“suppressTaskName”:true,
“isShellCommand”:正确,
“isBuildCommand”:正确,
“任务”:[
{
“任务名称”:“编译sa_Web服务”,
“isBuildCommand”:false,
“isTestCommand”:false,
“showOutput”:“始终”,
“args”:[
“sa_Web服务”
],
“问题匹配者”:{
“所有者”:“外部”,
“文件位置”:[“相对”,“${workspaceRoot}\\webservices”],
“模式”:{
“regexp:“^([\\w]+\\(pas | dpr | dpk))\\(\\d+\\)\\s(致命错误警告提示):(.*)”,
“文件”:1,
"行":3,,
“信息”:5
}
}
}
]
}

成功了!我不知道第二个“文件位置”选项。谢谢。
"fileLocation": ["relative", "${workspaceRoot}\\webservices"]