Delphi 如何在VSCode任务错误中配置文件路径
我在VSCode中配置了一个任务来编译Delphi2005DPK。它正在工作并在“problems”视图上返回错误,但它没有显示文件中的错误 我认为这是因为当我点击一个错误时,我得到了错误信息: 无法打开“sr075pro.pas”:找不到文件 (…项目文件夹\sr075pro.pas) 但该文件位于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”选项,但
…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"]