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

