2.8 Behandlung von String-Parametern

Werden über die Interface-Funktionen des Dialog Managers Strings von der Anwendung aus dem Dialog abgeholt, so kopiert der Dialog Manager den entsprechenden String in einen temporären Puffer, aus dem die Anwendung dann den entsprechenden String entnehmen kann. In diesen Puffer darf nicht hineingeschrieben werden, da der Anwendung unbekannt ist, in welcher Größe der Speicherplatz für den String allokiert worden ist. Beim nächsten Aufruf an den Dialog Manager, der als Ergebnis wieder einen String liefert, wird dieser temporäre Puffer überschrieben, es sei denn, diese Funktion wurde mit der Option DMF_DontFreeLastStrings aufgerufen. Nur mit dieser Option wird der Wert des Strings nicht überschrieben. Ist diese Option nicht gesetzt, so kann auf den davor erhaltenen String nicht mehr zugegriffen werden.

Beispiele

DM_GetValue (Obj, AT_text, ...);

  // => String wird in temporären Puffer kopiert

DM_GetValue (Obj1, AT_text, ...);

  // => String wird kopiert, alter String ist nicht mehr gültig!

 

DM_GetValue(Obj, AT_text, ...);

  // => String wird in temporären Puffer kopiert

DM_GetValue(Obj1, AT_text, ...., DMF_DontFreeLastStrings);

  // => Text des Objektes wird kopiert und alter String ist noch gültig

DM_GetValueIndex(Obj2, AT_content, ...);

  // => String wird kopiert, beide davor erfragten Strings werden ungültig.

Hinweis

Da Records als Funktionsparameter ebenfalls über DM_GetValue gefüllt werden, muss in Funktionen, welche Records als Parameter nutzen, immer die Option DMF_DontFreeLastStrings benutzt werden.