E2091 32 ビット Delphi コンパイラではセグメント/オフセットの組み合わせはサポートされません (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

32 ビットコードでは 16 ビットコードで使用していたセグメント/オフセットのアドレス指定を使用しません。

16 ビットバージョンの Object Pascal ではセグメントとオフセットのペアが絶対変数の宣言に使用され,Ptr 標準関数への引数としても使用されていました。

32 ビットのプロテクトモードプログラムでは絶対アドレスを使ってはなりません。そのかわりに適切な Win32 API 関数を呼び出してください。


program Produce;

var
  VideoMode : Integer absolute $0040:$0049;

begin
  Writeln( Byte(Ptr($0040,$0049)^) );
end.
	program Solve;
(*コンパイルできるが実行できない。絶対アドレスを使用しないように注意する*)
var
  VideoMode : Integer absolute $0040*16+$0049;

begin
  Writeln( Byte(Ptr($0040*16+$0049)^) );
end.