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--; } }
public ExcelStringBase(string str) { this.Str = str; this.Options = ExcelStringOptions.Uncompressed; }