2011-10-13 3 views
6

今日、私は奇妙なヒントを経験しました:オーバライドメソッドxxxxは祖先のyyyyの大文字と一致する必要があります。解決策は、メソッド名を祖先と同じように宣言することでした。私は、これがDelphi.Netコンパイラ以降コンパイラに載っていたものだと信じています...場合によってはDelphiで大文字と小文字が区別されることがあります。オーバライドメソッドは先祖の大文字と一致する必要があります

祖先とまったく同じ方法を宣言してコンパイラを作った'サイレント'。 Delphi 2006以降では、他にも大文字と小文字を区別するヒント/警告があります。

+4

本当に「大文字と小文字を区別」は、それだけで、同じケースを使用するのは良い習慣であると言うされていません。

個々のヒントは、あなたが特定のヒントを無効にすることはできません
注意を無効にすることはできません。 –

+5

Delphiで常に大文字小文字を区別してきたことの1つは、designtimeパッケージの 'Register'プロシージャの名前です。しかし、それが間違っている場合、ヒントや警告はありません。期待される結果を得ることはできません(コンポーネントは表示されません)。 – ain

+0

たぶん、コメント '// please please compile! (ヒントなし!) 'このメソッドの宣言よりも上にあります。 – mjn

答えて

12

サードパーティのコードと協力してコードを保護するためのヒントです。
このヒントは、.NET用にDelphiが追加されたことで導入されました。他のいくつかの.netプラットフォームでは大文字と小文字が区別されるためです。

ヒントは、デルファイの部分には大文字と小文字の区別がないことに注意してください。
以下の点1のみDelphi自体で大文字と小文字が区別されますが、点2はDelphiコンパイラがWindows APIの大文字小文字を区別する関数GetProcAddress()を呼び出す方法の成果物です。 Delphiで

大文字と小文字を区別行動

1-コンポーネントの登録は私は大文字と小文字が区別されていますが、独自のコンポーネントを作成する際に注意他のヒントを知らない
、あなたがしたいですそれらを登録、あなたはを宣言レジスタ機能はそうのように書かれている必要があります

procedure Register; <<-- Leading capital required. 

あなたはDelphiがあなたの新しいを追加しませんしなかった場合成分。外部関数をインポートするとき

外部関数デビッドによって述べたよう

2 - インポート、DLLで使用される正確な場合は、保存されなければなりません。 Can specific Delphi hints be disabled?

+2

技術的には、Windows API関数GetProcAddressは大文字と小文字を区別します。 –

関連する問題