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 DM_StringChange möglich, wie auch die erleichterte Rückgabe als Parameter oder Rückgabewert. Der IDM übernimmt dann die Verwaltung des Speichers für den String.

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

Dialogdatei

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();
}

C-Teil

...

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

Ab IDM-Version A.06.01.a

Siehe auch

Funktionen DM_StringChange, DM_StringReturn, DM_ValueInit