Delphi - 编译器指令多行效果选择 IDE 错误行
Delphi - Compiler Directives multi lines effects selected IDE error line
我想知道为什么在多行上键入编译器指令会影响选定的 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 Error] Crypter.dpr(29): E2003 Undeclared identifier: '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}
将解决问题![=17=]
如果事情真如你所说,那么这就是IDE的缺陷。将该问题作为错误报告给 Quality Portal。
解决这个问题很容易。不要使用 multi-line 指令。在这种情况下,您可以将标志提取到一个单独的常量中,并在指令中引用它。
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。您可以简单地 re-type 代码和换行符将是正确的。当您从另一个来源粘贴时,通常会混淆换行符。
我想知道为什么在多行上键入编译器指令会影响选定的 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 Error] Crypter.dpr(29): E2003 Undeclared identifier: '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}
将解决问题![=17=]
如果事情真如你所说,那么这就是IDE的缺陷。将该问题作为错误报告给 Quality Portal。
解决这个问题很容易。不要使用 multi-line 指令。在这种情况下,您可以将标志提取到一个单独的常量中,并在指令中引用它。
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。您可以简单地 re-type 代码和换行符将是正确的。当您从另一个来源粘贴时,通常会混淆换行符。