1

最小限のsystem.pas/sysinit.pasを使用してdelphi7プロジェクトに取り組んでいます。プロジェクトでレコードを使用しようとすると、コンパイラで次のエラーが発生します。

System unit out of date or corrupted: missing '@InitializeRecord'

私は純粋なパスカルでプログラムしようとしているので/RTLはありませんが、レコードの初期化を手動で有効化/呼び出す方法はありますか?!

ご協力ありがとうございました。

4

1 に答える 1

3

Delphiコンパイラは、生成されたコードによって呼び出されるいくつかの「組み込み関数」に依存しています。

たとえば、コードでを定義すると、RTLを使用していなくてもrecord、Delphiコンパイラはへの呼び出しを生成します。InitializeRecordこれは、string動的配列処理についても同じです。

したがって、これらの関数はコンパイラ自体によって存在することが期待されているため、これらの関数をバイパスして無視することはできません。

Delphiは、低レベルのRTLユニットを削除することを意図したものではありません。私はいくつかの場合にそれをしました:

FreePascalは、システムユニットをダウンストリッピングする場合にはるかに優れています。組み込みシステムも対象としているため、オプションで文字列サポート、FPU、またはヒーププロセス全体を削除できます。

于 2012-09-11T08:23:05.907 に答える