1

複数のオブジェクトのインリンクとアウトリンクの属性にアクセスしようとしています。私の目標は、読み取りモジュールをスキップ リストに格納し、次回モジュールを読み取る前にスキップ リストをチェックすることで、同じモジュールを再度読み取らないようにすることです。その周り。

だから私の質問は、スキップリストに保存したモジュール名のデータが以前に開かれている場合、どのように取得するのですか? そのモジュールが以前に開かれた場合、行 m2 = module item str2 は read 関数を置き換えるのに十分でしょうか?

以下は、オブジェクトのインリンクの属性を取得する私の試みです:

Skip sInlink = create()

void get_object_inlinks (Object obj)
{
   string str, str2
   LinkRef lk = null
   Object o = null

   for lk in all (obj <- "*") do
   {
     ModName_ mn = source(lk)
     str = fullName(mn)
     if (!find(sInlink, str, str2))
     {
        m2 = read(str, false)
        put(sInlink, str, str)
     }
     else
        m2 = module item str2

     if (m2 != null)
     {
        o = gotoObject(sourceAbsNo(lk), m2)
        // get object o attributes
        ...
     }
   }
}
4

1 に答える 1

0

モジュールを再読したくない理由はありますか? モジュールが開かれると、毎回閉じない限り、モジュールを再度読み取ってもモジュールは再度開かれません。

ただし、別の方法として、モジュール名の代わりにモジュール ハンドルをスキップ リストに格納することもできます。

put(sInlink, str, m2)

次に、代わりに:

if(!find(sInlink, str, str2))

使用する:

if(!find(sInlink, str, m2))

が見つかった場合strは、モジュール ハンドルを に置きますm2。そうでない場合は、そのまま読み進めることができます。

これがまだない場合に備えて、スキップ リストをループし、コードの最後にあるすべてのモジュールを閉じる必要があります。

for m2 in sInlink do
{
  if(!null m2) close m2
}

幸運を!

于 2013-06-03T15:20:26.070 に答える