2017-03-17 10 views
0

RAD Studio XE5を使用します。私は、既存の機能に、strand_pattern_lengthと呼ばれる、1つの整数の変数を追加しました:Delphi。整数変数を割り当てることさえできません

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文の後の4行は私です。

E2003 Indeclared識別子: 'strand_pattern_length' 私はこれをデバッグし、strand_pattern_lengthに時計を置くとき

は、それがのメッセージが表示されます。

ブレークポイントは、strand_pattern_length:=0ラインに到達する(値を割り当てずに)そのラインを通過し、その後ShowMessage文、長さの割り当て、およびIf声明を過ぎて以降、関数の残りをスキップします。

私はこのプロジェクトの他の場所、さらにこの.pasファイルのどこかに変数を宣言しましたが、問題はありませんでした。

アイデア?

私はこのDelphiプロジェクトを継承しています。私は非常に経験豊かなプログラマーですが、これは私が20年近く働いてきた最初のDelphiコードです。しかし、確かにintegerの値を割り当てても、これは難しくありません!

+1

コンパイラは、ソースファイルと一致しないdcuファイルをリンクしています。したがって、奇妙な行動。何とかそれを追跡する必要があります。 –

+0

ソースのコピーが2つあり、編集したものがあなたがコンパイルしたものではない可能性があります。 – Dsm

答えて

0

アプリケーションをビルドするとき、Delphiは2つのステップのプロセスに従います。
まず、すべてのユニット(.pas)ファイルがdcu(Delphi Compiled Unit)ファイルにコンパイルされます。
その後、さまざまなdcuファイルが1つの実行可能ファイルにリンクされます。

ソースファイル(.pas)がダーティ(ファイルが変更されたか、またはメモリ内のコピーが変更されたため)としてマークされている場合のみ、Delphiは再コンパイルします。
.pasファイルの変更が検出されない場合、代わりに以前にコンパイルされたDCUが使用されます。

pasファイルのコピーを作成してそのコピーを編集すると、Delphiは元のファイルのみを表示します。
project managerを使用すると、Delphiが使用するファイルを確認できます。

enter image description here

すべてのソースファイルを展開し、確認します(または右クリックしてopen in explorerを選択)したいソースファイルの上にマウスをHOOVER。
正確なファイルパスをメモし、これを編集しているファイルの正確なファイルパスと比較してください。
これは、エディタの[ファイル名]タブを隠すことで実行できます。

enter image description here

パス名が間違ったソースファイルを編集し、実際には、あなたをしていると一致しない場合。
不正なファイルを閉じ、プロジェクトマネージャのエントリをダブルクリックして、Delphiが使用しているファイルを開きます。

関連する問題