2017-05-02 9 views
-1

Delphiはint64で問題がありました。私はXE7を使用しています。 64ビットWindowsターゲットと次のことが、問題を示しています。それはむしろ、オーバーフローが発生した行の上にあなたを置くよりも、オーバーフローした場合IDEのDelphi int64オーバーフローのバグ

var x : int64; 
begin 
x := 1; 
repeat 
    x := 3 * x; 
    writeln(x); 
until false; 

を、それがシステムユニットを開き、ライン上にある

system procedure _IntOver; 

これは、int64のオーバーフローを追跡することを非常に困難にします。私が言ったように、私はXE7を使用しています - それは現在のバージョンで修正されていますか?

+6

'プロジェクト - オプション - コンパイル - デバッグdcu = false'を使用しますか?とにかく、 'Callstack'ウィンドウがあり、それを使うことができます。 – kami

+0

修正するものはありません。それは設計通りです。コールスタックを使用します。 –

+0

ありがとうございます - デバッグDCUをオフにすると、IDEがエラーが発生した行、つまり32ビット整数以下の行に移動します。 ---あなたは彼らがそうした方法で設計したと言います。 32ビット整数で動作するよりも、64ビット整数で動作するように設計するのはなぜですか? –

答えて

1

これは欠陥ではありません。機能の実装方法です。コンパイラは、ランタイムライブラリのヘルパー関数を使用してオーバーフロー例外を発生させます。これは単に機能がどのように設計されているかを示しています。

呼び出しスタックを使用して、エラーの原因となるコード行を見つけることができます。デバッガをそのコード行でブレークさせたい場合は、デバッグ.dcusオプションのチェックを外す必要があります。

+0

デバッグDCUを使用しないでください。ありがとうございました。 –

関連する問題