SuggestArticle()
****************


FUNKTION
========

   protected varargs int SuggestArticle(string name);


DEFINIERT IN
============

   /std/thing/language.c


ARGUMENTE
=========

   name
        Der Name zur Entscheidungshilfe.


BESCHREIBUNG
============

   Diese Funktion versucht herauszufinden, ob der Artikel zu diesem Objekt
   ein unbestimmter oder besser ein bestimmter Artikel sein sollte. Die
   Vorgehensweise ist folgende: Gibt es in der Umgebung dieses Objektes
   ein weiteres Objekt, das den Namen name besitzt, so wird ein
   unbestimmter Artikel vorgeschlagen, ansonsten ein bestimmter.


RUeCKGABEWERT
=============

   0, wenn ein unbestimmter Artikel geeignet ist, ansonsten 1.


BEMERKUNGEN
===========

   Der Vergleich erfolgt mittels der Property P_NAME. Um Erfolg zu haben,
   sollte man diese Funktion daher in der Form

   SuggestArticle(QueryProp(P_NAME))

   aufrufen.


SIEHE AUCH
==========

   QueryArticle(), name(), /std/thing/language.c

Last modified: Wed May 8 10:25:34 1996 by Wargon
