1

最後のクラスでは、ユニットファイルにいくつかの関数とプロシージャを定義しました。

procedure WriteNap(const elo: string; const n: TNap; const uto: string);
begin
  Write(elo, Nap2Str(n), uto);
end;

function PredNap(const n: TNap): TNap;
begin
  case n of
    hetfo: PredNap := vasarnap;
    NemNap: PredNap := n;
  else  
    PredNap := Pred(n)
  end;
end;

function SuccNap(const n: TNap): TNap;
begin
  case n of
    NemNap: SuccNap := n;
  else
    SuccNap := Succ(n)
  end;
end;

PredNapなどの代わりにメインプログラムでPred、Write、Succを使用できるように、「Nap」という単語を削除する必要があります...このユニットを使用し、SuccPredなどの機能を含む別のユニットファイルを作成しようとしました...実際にはうまくいきませんでした。

前もって感謝します :)

4

1 に答える 1

2

ファイルのどこかで宣言します。

var Pred = Function (Const n:TNap):TNap;

プログラムの本体で何かを行う前に、次のように記述します。

Pred := @PredNap;

このコードが行うことは、PredNap() と同じ署名を持つ新しい関数ポインターを作成し、PredNap() のアドレスをこのポインターに割り当てることです。したがって、Pred() を呼び出すときはいつでも、呼び出される実際の関数は PredNap() です。お役に立てれば。

于 2013-02-27T08:31:10.083 に答える