private BinaryWriter writer = null; // реализует двочную запись данных #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> public File() { stamps = new Stamp[COUNT_STAMPS]; for (int index = 0; index < COUNT_STAMPS; index++) { stamps[index] = new Stamp(); } block_size = BLOCK_SIZE; area_size = DATA_AREA_SIZE; stamp_offset = BASE_STAMPS_OFFSET; data_offset = BASE_DATA_OFFSET; p_count = 0; default_file_size = (long)Math.Pow(1024, 3); }
/// <summary> /// Инициализирует новый экземпляр класса /// </summary> public File() { stamps = new Stamp[COUNT_STAMPS]; for (int index = 0; index < COUNT_STAMPS; index++) { stamps[index] = new Stamp(); } block_size = BLOCK_SIZE; area_size = DATA_AREA_SIZE; stamp_offset = BASE_STAMPS_OFFSET; data_offset = BASE_DATA_OFFSET; p_count = 0; default_file_size = (long)Math.Pow(1024, 3); }
protected long block_offset; // смещение по которому выполнять запись блока данных /// <summary> /// Выполнить инициализацию смещений /// </summary> private void InitializeOffsets() { if (Stamps != null && Stamps.Length > 0) { List <Stamp> stamps = new List <Stamp>(); foreach (var stam in Stamps) { if (stam.DateTime > 0) { if (stam.F_Offset == stam.S_Offset) { stamps.Add(stam); } } } if (stamps.Count > 0) { int index = 0; Stamp max = stamps[0]; for (int i = 1; i < stamps.Count; i++) { if (stamps[i].DateTime >= max.DateTime) { index = i; max = stamps[i]; max.index = i; } } stam_index = index; block_offset = max.F_Offset; CalculateBlockOffset(); } else { stam_index = 0; block_offset = DataOffset; } } }