2017-01-31 26 views
2

VSCodeでタスクを設定して、Delphi 2005 dpkをコンパイルしました。それは "問題のビュー"でエラーを返すように動作していますが、ファイルにエラーが表示されていません。VSCodeタスクエラーでファイルパスを設定する方法

「sr075pro.pas」を開くことができません:私は、エラーをクリックしたときので

私はそれが起こっていると思いますが、私はエラーメッセージが表示されます (... projectfolder \ sr075proファイルが見つかりません。 pas)

ただしファイルは...projectfolder\webservices\sr075pro.pasです。

ファイルがサブフォルダにあることをタスクに伝える方法が見つかりません。私は "fileLocation"タグで "成功"せずに "相対"オプションを使用しようとしました。

エラーが返さ:

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' 

マイタスク構成:

{ 
    "version": "0.1.0", 
    "name": "Compilar", 
    "command": "C:\\Compilers\\compile.bat", 
    "suppressTaskName": true, 
    "isShellCommand": true, 
    "isBuildCommand": true, 
    "tasks": [ 
{ 
     "taskName": "Compile sa_webservices", 
     "isBuildCommand": false, 
     "isTestCommand": false, 
     "showOutput": "always", 
     "args": [ 
     "sa_webservices" 
     ], 
     "problemMatcher": { 
     "owner": "external", 
     "fileLocation": "relative", 
     "pattern": { 
      "regexp": "^([\\w]+\\.(pas|dpr|dpk))\\((\\d+)\\)\\s(Fatal|Error|Warning|Hint):(.*)", 
      "file": 1, 
      "line": 3, 
      "message": 5 
     } 
     } 
    } 

マイcompile.bat:

@echo off 
@P: 
@set arg1=%1 
shift 

... 
if "%arg1%" == "sa_webservices" set arg2="webservices" 
... 
echo Compiling %arg1%... 
cd\%arg2% 
dcc32.exe -H -W -Q %arg1%.dpk 

答えて

1

あなたのタスク構成I間違っている。まずすべての括弧を閉じるわけではありませんが、StackOverflowでここをコピーして貼り付けたのは誤りです。そうしないと、タスク構成はまったく機能しませんでした。

今すぐ問題: DCC32は、相対ファイルパスを含むヒントと警告を生成します。これらのパスは、というプロジェクトファイルに対して、です。あなたのタスクの設定では、コンパイラメッセージによって与えられた相対パスから正しい絶対パスを構築する方法を知りません

"fileLocation": "relative" 

Visual Studioのコードを設定することで、相対パスを含めるようにコンパイラの出力を定義します。だからあなたの現在の${workspaceRoot}(あなたの場合はprojectfolder)が絶対パスになると推測します。

これは、間違ったファイルパスを含むエラーと警告が表示される理由を説明しています。正しいパスを取得するには、VSCodeにの正確なパスを指定して相対パスを結合する必要があります。

"fileLocation": ["relative", "${workspaceRoot}\\webservices"] 

全体tasks.jsonはそのようになっています:

{ 
    "version": "0.1.0", 
    "name": "Compilar", 
    "command": "C:\\Compilers\\compile.bat", 
    "suppressTaskName": true, 
    "isShellCommand": true, 
    "isBuildCommand": true, 
    "tasks": [ 
     { 
      "taskName": "Compile sa_webservices", 
      "isBuildCommand": false, 
      "isTestCommand": false, 
      "showOutput": "always", 
      "args": [ 
       "sa_webservices" 
      ], 
      "problemMatcher": { 
       "owner": "external", 
       "fileLocation": ["relative", "${workspaceRoot}\\webservices"], 
       "pattern": { 
        "regexp": "^([\\w]+\\.(pas|dpr|dpk))\\((\\d+)\\)\\s(Fatal|Error|Warning|Hint):(.*)", 
        "file": 1, 
        "line": 3, 
        "message": 5 
       } 
      } 
     } 
    ] 
} 
+0

それが働いた あなたは、単にあなたtasks.jsonfileLocationエントリに正しいパスを追加することによって、これを行います!私は第2の "fileLocation"オプションを知らなかった。ありがとう。 – user2133093

関連する問題