2017-03-17 52 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正在使用的文件。