write_data()
============

SYNOPSIS
--------
::

        string write_data(string file, int start, int anzahl)

BESCHREIBUNG
------------
::

        Diese Funktion macht genau das, was write_file() tut (also siehe dort),
        allerdings stellt sie sicher, dass <file> immer mit einem /data/
        beginnt (setzt es also notfalls davor).
        Es wird also immer irgendwo unterhalb von /data/ geschrieben.

        Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
        ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
        Code getrennt abgelegt sind. Dies vereinfacht z.B. die
        Datensicherung.

BEISPIEL
--------
::

        # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
        -> schreibt in das File /data/d/ebene/zesstra/blupp.
        # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
        -> tut dasselbe.

SIEHE AUCH
----------
::

        read_data()
        read_file(E), write_file(E), read_bytes(E), write_file(E)

