示例#1
0
        protected void ReadOptionsAndString(BinaryReader br, ref int remainingSize, ref int charsRemaining, ref ushort richTextRuns, ref uint asianPhonetic)
        {
            int num;

            if ((charsRemaining > 0) || ((richTextRuns == 0) && (asianPhonetic == 0)))
            {
                this.Options = (ExcelStringOptions)br.ReadByte();
                remainingSize--;
            }
            if ((richTextRuns == 0) && (((int)(this.Options & ExcelStringOptions.RichText)) != 0))
            {
                richTextRuns   = br.ReadUInt16();
                remainingSize -= 2;
            }
            if ((asianPhonetic == 0) && (((int)(this.Options & ExcelStringOptions.AsianPhonetic)) != 0))
            {
                asianPhonetic  = br.ReadUInt32();
                remainingSize -= 4;
            }
            char[] chArray = new char[charsRemaining];
            if (((int)(this.Options & ExcelStringOptions.Uncompressed)) == 0)
            {
                for (num = 0; charsRemaining > 0; num++)
                {
                    if (remainingSize <= 0)
                    {
                        break;
                    }
                    chArray[num] = (char)br.ReadByte();
                    remainingSize--;
                    charsRemaining--;
                }
            }
            else
            {
                for (num = 0; (charsRemaining > 0) && (remainingSize > 0); num++)
                {
                    chArray[num]   = br.ReadChar();
                    remainingSize -= 2;
                    charsRemaining--;
                }
            }
            this.Str = new string(chArray, 0, chArray.Length - charsRemaining);
            while (true)
            {
                if ((richTextRuns <= 0) || (remainingSize <= 0))
                {
                    break;
                }
                br.ReadUInt32();
                remainingSize -= 4;
                richTextRuns   = (ushort)(richTextRuns - 1);
            }
            while (asianPhonetic > 0)
            {
                if (remainingSize <= 0)
                {
                    return;
                }
                br.ReadByte();
                remainingSize--;
                asianPhonetic--;
            }
        }
示例#2
0
 public ExcelStringBase(string str)
 {
     this.Str     = str;
     this.Options = ExcelStringOptions.Uncompressed;
 }