Пример #1
0
		/*-----------------------------------------------------*/

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