/*-----------------------------------------------------*/ public String ReplaceFieldCodes_With_Values(String aSourceTextStr, cDataObject aDataObject, String aOpenTag, String aCloseTag) { int aFirstPosition; int aLastPosition; int aLength; int aFormatFirstPosition; int aFormatLastPosition; String aValue; String aPropertyDesignator; //property key plus format string String aPropertyKey; String aFormat; //loop through document for ALL field codes while ((aFirstPosition = cLib.GetCharPostition(aSourceTextStr, aOpenTag)) >= 0) { aLastPosition = cLib.GetCharPostition(aSourceTextStr, aCloseTag); aLastPosition = aSourceTextStr.IndexOf(aCloseTag, aFirstPosition); aLength = (aLastPosition - aFirstPosition); aPropertyDesignator = aSourceTextStr.Substring(aFirstPosition + aOpenTag.Length, aLength - aOpenTag.Length); //get format string if there is one aFormatFirstPosition = cLib.GetCharPostition(aPropertyDesignator, "{"); if (aFormatFirstPosition > 0) { aFormatLastPosition = cLib.GetCharPostition(aPropertyDesignator, "}"); aPropertyKey = aPropertyDesignator.Substring(0, aFormatFirstPosition); aPropertyKey = aPropertyKey.Trim(' '); aFormat = aPropertyDesignator.Substring(aFormatFirstPosition + 1, aFormatLastPosition - aFormatFirstPosition - 1); } else { aPropertyKey = aPropertyDesignator; aFormat = ""; } //error handling for user-generated errors (if staff member incorrectly identifies a tag example: Person.LastNmae ) try { //aKey = aSourceTextStr.Substring(aFirstPosition+aOpenTag.Length, aLength-aOpenTag.Length); //aValue = aDataObject.GetRelatedPropertyString(aKey); aValue = aDataObject.GetRelatedPropertyFormattedString(aPropertyKey, aFormat); } catch { aValue = "--error--"; } aSourceTextStr = aSourceTextStr.Replace(aSourceTextStr.Substring(aFirstPosition, aLength + aCloseTag.Length), aValue); } return aSourceTextStr; }