ShowPropList()

FUNKTION:
     void ShowPropList(string *props);

DEFINIERT IN:
     /std/thing/util.c

ARGUMENTE:
     props
          Array von Strings mit den Namen der Properties, die ausgegeben
          werden sollen.

BESCHREIBUNG:
     Gibt die Inhalte der in props angegebenen Properties aus.

RUeCKGABEWERT:
     keiner

BEISPIELE:
     Sei test.c folgendes Programm:

     inherit "std/thing";
     inherit "std/thing/util";

     create() {
       ::create();

       SetProp(P_SHORT, "Kurz");
       SetProp(P_NAME, ({ "Name", "Namens", "Namen", "Namen" }));
       SetProp("me", this_object() );
     }

     Mit xcall test->ShowPropList( ({ P_SHORT, P_NAME, "me" }) ); erhielte
     man dann folgende Ausgabe:

     *short: "Kurz"
     *name: ({ "Name", "Namens", "Namen", "Namen" })
     *me: OBJ(/players/wargon/test#12345)

BEMERKUNGEN:
     Mit dem Befehl xprops des MGtools lassen sich uebrigens saemtliche
     Properties eines Objekte auf einen Schlag ausgeben.

SIEHE AUCH:
     /std/ting/util.c

----------------------------------------------------------------------------
Last modified: Wed May 8 10:25:26 1996 by Wargon
