Beispiel #1
0
        /// <summary>
        /// Gets string value at specified location.
        /// </summary>
        /// <param name="field">Index into record to get string.</param>
        /// <returns>String value</returns>
        public string GetString(int field)
        {
            int           bufferSize = 255;
            StringBuilder buffer     = new StringBuilder(bufferSize);
            int           error      = MsiInterop.MsiRecordGetString(this.Handle, field, buffer, ref bufferSize);

            if (234 == error)
            {
                buffer.EnsureCapacity(++bufferSize);
                error = MsiInterop.MsiRecordGetString(this.Handle, field, buffer, ref bufferSize);
            }

            if (0 != error)
            {
                throw new Win32Exception(error);
            }

            return(0 < buffer.Length ? buffer.ToString() : null);
        }