2017-03-17 82 views
0

使用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 Indeclared标识符: 'strand_pattern_length'。

断点获取到strand_pattern_length:=0线,通过该管线(而不设定值),然后跳过过去ShowMessage陈述,长度分配和If声明并开始通过功能的其余部分。

我已经声明各种变量都在其他地方的项目,即使在这种.pas文件的其他地方,而不是有一个问题。

任何想法?

我继承了这个Delphi工程,虽然我是一个非常有经验的程序员,这是第一个Delphi代码我已经工作了近20年。但确实分配一个integer值不应该这么难!

+1

编译器正在链接与您的源文件不匹配的dcu文件。因此,奇怪的行为。你需要以某种方式跟踪。 –

+0

您可能有两个源代码副本,并且您编辑的代码不是您编译的代码。 – Dsm

回答

0

当构建应用程序的Delphi如下两个步骤过程。
首先将每个单元(.pas)文件编译为一个dcu(Delphi编译单元)文件。
然后将各种dcu文件链接到一个可执行文件中。

Delphi将只重新编译源(.PAS),如果它被标记文件为脏(或者因为该文件已经改变,或者因为在内存中的副本已改变)。
如果它未检测到.pas文件中的更改,它将使用先前编译的DCU。

如果您的PAS文件的副本,并编辑该副本,德尔福将仅看原始文件。
你可以看到,Delphi使用使用project manager的文件。

enter image description here

展开所有源文件和胡佛将鼠标放在要检查(或右键单击并选择open in explorer)的源文件。
记下确切的文件路径,并将其与您正在编辑的文件的确切文件路径进行比较。
您可以在编辑器中的文件名选项卡上执行此操作。

enter image description here

如果路径名称不匹配你,其实,编辑错误的源文件。
关闭不正确的文件并通过双击项目管理器中的条目打开Delphi正在使用的文件。