【问题标题】:Delphi - Compiler Directives multi lines effects selected IDE error lineDelphi - Compiler Directives multi lines effects selected IDE error line
【发布时间】:2016-01-02 16:14:38
【问题描述】:

我想知道为什么如果在多行上键入编译器指令会影响所选的 IDE 错误行。

例如:

{$SETPEFlAGS IMAGE_FILE_DEBUG_STRIPPED or
 IMAGE_FILE_LINE_NUMS_STRIPPED or
 IMAGE_FILE_LOCAL_SYMS_STRIPPED or
 IMAGE_FILE_RELOCS_STRIPPED}

.....

procedure Foo();
begin
  WriteLn('1');
  WWriteLn('2');
  WriteLn('3');
  WriteLn('4');
  WriteLn('5');
end; 

IDE 错误

[dcc32 错误] Crypter.dpr(29): E2003 未声明的标识符:'WWriteLn'

在源代码中选择的行是WriteLn('5'); 而不是WWriteLn('2');

但是如果编译器指令是以这种方式输入的(一行):

{$SETPEFlAGS IMAGE_FILE_DEBUG_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED or IMAGE_FILE_LOCAL_SYMS_STRIPPED or IMAGE_FILE_RELOCS_STRIPPED}

将解决问题!。

【问题讨论】:

    标签: delphi delphi-xe8


    【解决方案1】:

    如果事情如你所说,那么这是 IDE 的缺陷。将问题作为错误报告给质量门户。

    解决这个问题很容易。根本不要使用多行指令。在这种情况下,您可以将标志提取到单独的常量中并在指令中引用它。

    const
      PEFlags = IMAGE_FILE_DEBUG_STRIPPED or
        IMAGE_FILE_LINE_NUMS_STRIPPED or
        IMAGE_FILE_LOCAL_SYMS_STRIPPED or
        IMAGE_FILE_RELOCS_STRIPPED;
    
    {$SETPEFlAGS PEFlags}
    

    我在第一段犹豫的原因是,如果换行不正确,您所描述的也会发生。如果您的换行符不是 CR+LF,那么 IDE 就会对行号感到困惑。因此,值得检查您的换行符是否为 CR+LF。您可以简单地重新键入代码,换行符将是正确的。通常,当您从另一个来源粘贴时,您会混淆换行符。

    【讨论】:

    • 我也试过重新输入,但问题还是一样。所以它主要是一个错误。我将提交到质量门户。您的代码是最好的解决方法,看起来比单行更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2020-09-22
    • 2015-05-26
    • 2015-01-20
    相关资源
    最近更新 更多