0

同じ名前の異なるユニットに型があり、文字列にユニット名があります。このユニットの特定のタイプにアクセスする必要があります。それ、どうやったら出来るの?

例:

unit Unit1

type
   TFooType = (
      bar1,
      bar2
   );

それから、私は別のユニットを持っています

unit Unit2

type
   TFooType = (
      foo1,
      foo2,
      foo3
   );      

そして、私のコードのどこかに、値「Unit1」を持つ文字列変数「UnitName」があり、変数によってUnit1の「TFooType」タイプにアクセスしたいと考えています。

Delphi 2007 を使用しています

私の悪い英語でごめんなさい。

前もって感謝します。

4

3 に答える 3

11

実行時に含める単位を選択することはできません。ユニットはコンパイル時の概念です。

さらに、あなたの 2 つの型は、同じベース名を持っていますが、完全に異なる型です。コードの他の場所では、タイプの変数を持つことはできずTFooType、これらのユニットの両方から値を割り当てるかどうかを任意に決定できます。変数は、 1 つの型の値のみを保持できます。

実際のタスクを達成するには、別の方法を考える必要があります。あなたの本当の仕事が何であるかを説明する新しい質問を投稿することをお勧めします.

于 2011-05-20T21:52:50.567 に答える
1

@Hrukai、レゴと同じように、できることはたくさんありますが、そのように使用するように設計されていません。

あなたの最終目標は型にアクセスすることであり、あなたの出発点は変数名であるように思えます。変数をクラス (OOP) として実装した場合は、単に Obj.ClassName を実行してその型を見つけることができます... また、実装用のクラスを選択した場合、(変数から型にアクセスするために) この必要性を予測します。そもそも起きたことがない。

新しいパターンを作成したいという衝動に抵抗し、代わりにクラスの力を活用してください。 http://www.delphibasics.co.uk/Article.asp?Name=OO例

于 2011-05-21T03:12:01.140 に答える
0

あなたができる最善のことは、などのようなものです。しかし、とにかくif name='Unit1' then T := Unit1.TFoo何ができますか? T異なるユニットからの列挙型が異なるため、 で何でもできるとは想像しがたいTです。実際、どのように定義しますTか? 私が想像できる唯一のことは、型情報を返すことですが、今は想像力を駆使しています!

于 2011-05-20T21:52:00.700 に答える