3.75 DM_StringInit
Mit dieser Funktion kann ein String in einen vom IDM gemanagten lokalen oder globalen bzw. statischen String umgewandelt werden. Dadurch sind weitere Manipulationen des Strings durch die Funktion
Für gemanagte Strings darf nur ein lesender Zugriff auf die String-Zeichen oder den String-Pointer erfolgen. Eine Freigabe über DM_Free() darf nicht erfolgen!
Der String wird durch diese Funktion mit NULL initialisiert.
Durch Angabe der Option DMF_StaticValue wird der String als statisch angesehen und nicht, wie sonst für lokale Strings üblich, nach der Rückkehr der Funktion freigegeben.
Grundsätzlich dürfen nur String-Argumente oder lokale bzw. globale Strings gemanagt werden.
DM_Boolean DML_default DM_EXPORT DM_StringInit
(
DM_String * pstring,
DM_Options options
)
Parameter
-> DM_String * pstring
Dieser Parameter verweist auf den String-Pointer der zu initialisieren ist und gemanagt werden soll.
-> DM_Options options
Hier sind folgende Optionen möglich:
Option |
Bedeutung |
---|---|
DMF_StaticValue |
Der pstring-Parameter wird als statische bzw. globale String-Referenz initialisiert. |
Rückgabewert
DM_TRUE |
String wurde erfolgreich initialisiert und ist nun gemanagt. |
DM_FALSE |
Der String konnte nicht gemanagt oder initialisiert werden. |
Beispiel
dialog YourDialog function string FormatString(integer Op, string String); on dialog start { print FormatString (-1, "**"); // set decoration print FormatString (0, "hello world"); // print with decoration exit(); }
... DM_String DML_default DM_ENTRY FormatString (DM_Integer Op, DM_String String) { static DM_String decoration = NULL; DM_String newstring; if (!decoration) { /* static initialization */ DM_StringInit(&decoration, DMF_StaticValue); DM_StringChange(&decoration, "-", 0); /* above can be done simpler via: * DM_StringChange(&decoraton, "-", DMF_StaticValue); */ } switch(Op) { case -1: /* change decoration */ DM_StringChange(&decoration, String); return &decoration; case 1: /* decor only at the beginning */ DM_StringChange(&newString, decoration, 0); DM_StringChange(&newString, String, DMF_AppendValue); break; case 2: /* decor only at the end */ DM_StringChange(&newString, String, 0); DM_StringChange(&newString, decoration, DMF_AppendValue); break; default: DM_StringChange(&newString, decoration, 0); DM_StringChange(&newString, String, DMF_AppendValue); DM_StringChange(&newString, decoration, DMF_AppendValue); break; } return newstring; /* also possible: return DM_StringReturn(&newstring, 0); */ }
Verfügbarkeit
Siehe auch