3.74 DM_StringChange
Diese Funktion kann zur Änderung bzw. Manipulation eines gemanagten Strings verwendet werden.
Neben der reinen Ersetzung des Strings ist über die DMF_AppendValue-Option das Konkatenieren von Strings möglich.
Handelt es sich beim pstring-Parameter um einen noch ungemanagten String, so wird dieser kopiert und von da an vom IDM gemanagt. Wurde dabei noch die Option DMF_StaticValue gesetzt, wird dieser als statischer bzw. globaler String behandelt und nicht wie sonst bei der Rückkehr der Funktion wieder freigegeben.
Grundsätzlich dürfen nur String-Argumente oder lokale bzw. globale Strings gemanagt werden.
DM_Boolean DML_default DM_EXPORT DM_StringChange
(
DM_String * pstring,
DM_String newstring,
DM_Options options
)
Parameter
<-> DM_String * pstring
Dieser Parameter verweist auf die String-Referenz die manipuliert werden soll. Es kann sich dabei um einen schon gemanagten String handeln, muss es aber nicht.
-> DM_String newstring
Dieser Parameter verweist auf den String, welcher der String-Referenz (pstring-Parameter) zugewiesen oder an sie angehängt werden soll.
-> DM_Options options
Hier sind folgende Optionen möglich:
Option |
Bedeutung |
---|---|
DMF_StaticValue |
Bei der automatischen Umwandlung des pstring-Parameters in eine gemanagte String-Referenz wird diese als statische bzw. globale String-Referenz behandelt. |
DMF_AppendValue |
Der String im newstring-Parameter wird an den String im pstring-Parameter angehängt. |
Rückgabewert
DM_TRUE |
String wurde erfolgreich manipuliert. |
DM_FALSE |
Ein Fehler ist aufgetreten. Dabei kann es sich um einen falschen |
Beispiel
dialog YourDialog function anyvalue StringOf(integer I); on dialog start { print StringOf(123); print StringOf(-42); exit(); }
... DM_String DML_default DM_ENTRY StringOf(DM_Integer I) { char buf[10]; DM_String data; DM_String negative; if (I>=0) { /* return an unmanaged local string */ sprintf(buf, "%d", (int)I); data = buf; /* wrong: return data; => buf is a local char array! */ return DM_StringReturn(&data, 0); } else { /* return a managed string */ DM_StringInit(&negative, 0); /* can be omitted */ DM_StringChange(&negative, "!!negative", &data, 0); return DM_StringReturn(&negative); /* return &negative; => also possible for managed strings! */ } }
Verfügbarkeit
Siehe auch