使用RAD Studio XE5。我在现有函数中添加了一个名为strand_pattern_length
的整数变量:
function TDBManager.GetStrandVars(No_of_Strands, No_of_StrandLayers: integer;
StrandPts: TRealPtRecAry; DB_its_a_Strand: TBoolAry;
ProfileIDStr: string): TStrandVars;
var
StrandVars: TStrandVars;
i, j, k, n_l, str_count, colour_count, strand_pattern_length: integer;
strand_pattern: string;
Inset_dup, Inset_nodup: TInt_Array;
begin
... lots of code
OpenConnect;
runQuery('SELECT Strand_Pattern FROM ProfileSummary WHERE ProfileID = ''' + ProfileIDStr + '''', True);
strand_pattern := _query.FieldByName('Strand_Pattern').AsString;
CloseConnect;
strand_pattern_length := 0;
ShowMessage(IntToStr(Length(strand_pattern)));
strand_pattern_length := Length(strand_pattern);
ShowMessage(IntToStr(strand_pattern_length));
if strand_pattern_length <> No_of_Strands then
ShowMessage('TDBManager.GetStrandVars : The length of the strand pattern (' + IntToStr(length(strand_pattern)) + ') is different from the number of strands (' + IntToStr(No_of_Strands) + ')');
CloseConnect
声明之后的四行是我的。
当我调试此项并将注意放在strand_pattern_length
上时,它会显示以下消息:
E2003未声明的标识符:'strand_pattern_length'。
断点到达strand_pattern_length:=0
行,遍历该行(不指定值),然后跳过ShowMessage
语句,长度分配和If
语句,然后继续通过功能的其余部分。
我已在项目的其他地方声明了各种变量,甚至在此.pas
文件的其他地方也声明了这些变量,并且没有出现问题。
有什么想法吗?
我继承了这个Delphi项目,虽然我是一个非常有经验的程序员,但这是我用了近20年的第一个Delphi代码。但是确定分配integer
值不应该这么困难!
答案 0 :(得分:0)
构建应用程序时,Delphi遵循两个步骤 首先将每个单元(.pas)文件编译成dcu(Delphi编译单元)文件 然后将各种dcu文件链接到单个可执行文件中。
Delphi只会重新编译源(.pas)文件,如果它被标记为脏(因为文件已更改或因为内存中的副本已更改)。
如果它没有检测到.pas文件中的更改,它将改为使用先前编译的DCU。
如果你复制了pas文件并编辑了副本,Delphi只会查看原始文件
您可以使用project manager
。
展开所有源文件,将鼠标悬停在要检查的源文件上(或右键单击并选择open in explorer
)。
记下确切的文件路径,并将其与您正在编辑的文件的确切文件路径进行比较
您可以通过清除编辑器中的文件名选项卡来完成此操作。
如果路径名称不匹配,实际上是编辑错误的源文件 关闭不正确的文件,双击项目管理器中的条目,打开Delphi正在使用的文件。