[Python-de] Python als Makroersatz, und was zum Lachen

Gerhard Häring gh at ghaering.de
Mit Jul 30 18:39:39 EDT 2003


Gerson Kurz wrote:
> Gegeben einen C-Header, der aus Zeug wie dem folgenden besteht:
> 
> DECLARE_STRING(IDS_XYZ_STATUS_BUSY, "Busy")
> DECLARE_STRING(IDS_XYZ_STATUS_COVER_OPEN, "Cover open")
> DECLARE_STRING(IDS_XYZ_STATUS_DOOR_OPEN, "Door open")
> ....(usw, viele hundert Zeilen lang)...
> 
> möchte ich eine Datei erzeugen, die so ausschaut:
> 
> [IDS_XYZ_STATUS_BUSY]
> "Busy"
> 
> [IDS_XYZ_STATUS_COVER_OPEN]
> "Cover open"
> 
> [IDS_XYZ_STATUS_DOOR_OPEN]
> "Door open"...
> 
> Dachte ich mir, kopierst du den Auszug in ein Pythonscript und schreibst
> 
> def DECLARE_STRING(irgendwas, blabla):
> [...]

> Nun heisst es ja immer, mit Python könne man alles Makromäßige umsetzen -
> wie aber mache ich sowas? Ich will ja praktisch auf der Fliege ("on the
> fly"), neue Variablen erzeugen.

__getattr__/__setattr__ geht leider (oder zum Glück) auf Modulebene 
nicht, nur auf Klassenebene.

> Wäre es möglich, sich in den Name Lookup der Variablen zu hängen, so daß man
> z.B. bei Undeclared Identifier die Möglichkeit hat, sich 'ne neue
> anzuschaffen?
> 
> Zum lachen: Guckst du Google, suche nach Q246772, klickst du auf die
> MSDN-Seite.
> HOWTO: Retrieve and Set the Default Printer in Windows  [...]

Argh, dann lieber doch "import win32print" ;-)

-- Gerhard