Esempio n. 1
0
        private void LoadPersons(string fileName, Action <IEnumerable <Person>, Exception> afterLoad)
        {
            Exception            ex      = null;
            IEnumerable <Person> persons = null;

            try
            {
                switch (Path.GetExtension(fileName))
                {
                case ".xml":
                    persons = XmlHelper.Load(fileName);
                    break;

                case ".bin":
                    persons = BinHelper.Load(fileName);
                    break;

                default:
                    throw new Exception("Неверный формат файла");
                }
            }
            catch (Exception e)
            {
                ex = e;
            }
            finally
            {
                afterLoad(persons, ex);
            }
        }
Esempio n. 2
0
        private void SavePersons(string fileName, IEnumerable <Person> persons, Action <Exception> afterSave)
        {
            Exception ex = null;

            try
            {
                switch (Path.GetExtension(fileName))
                {
                case ".xml":
                    XmlHelper.Save(fileName, persons);
                    break;

                case ".bin":
                    BinHelper.Save(fileName, persons);
                    break;

                default:
                    throw new Exception("Неверный формат файла");
                }
            }
            catch (Exception e)
            {
                ex = e;
            }
            finally
            {
                afterSave(ex);
            }
        }
Esempio n. 3
0
        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            Editor = new BinHelper(File.ReadAllBytes(openFileDialog1.FileName));

            listBox1.Items.Clear();
            foreach (string str in Editor.Import())
            {
                listBox1.Items.Add(str);
            }
        }
Esempio n. 4
0
        public void ShouldGiveBytesFromUshortLittleEndian()
        {
            ushort value  = 0x2552;
            var    result = new List <byte>();

            foreach (var b in BinHelper.GetBytes(value, EnumEndianType.LittleEndian))
            {
                result.Add(b);
            }

            Assert.That(0x52, Is.EqualTo(result[0]));
            Assert.That(0x25, Is.EqualTo(result[1]));
        }
Esempio n. 5
0
        public void ShouldGiveBytesFromUintBigEndian()
        {
            uint value  = 0x25523441;
            var  result = new List <byte>();

            foreach (var b in BinHelper.GetBytes(value, EnumEndianType.BigEndian))
            {
                result.Add(b);
            }

            Assert.That(0x25, Is.EqualTo(result[0]));
            Assert.That(0x52, Is.EqualTo(result[1]));
            Assert.That(0x34, Is.EqualTo(result[2]));
            Assert.That(0x41, Is.EqualTo(result[3]));
        }
Esempio n. 6
0
        public void ShouldGiveBytesFromUlongLittleEndian()
        {
            ulong value  = 0x25523441ABDECF90;
            var   result = new List <byte>();

            foreach (var b in BinHelper.GetBytes(value, EnumEndianType.LittleEndian))
            {
                result.Add(b);
            }

            Assert.That(0x90, Is.EqualTo(result[0]));
            Assert.That(0xCF, Is.EqualTo(result[1]));
            Assert.That(0xDE, Is.EqualTo(result[2]));
            Assert.That(0xAB, Is.EqualTo(result[3]));
            Assert.That(0x41, Is.EqualTo(result[4]));
            Assert.That(0x34, Is.EqualTo(result[5]));
            Assert.That(0x52, Is.EqualTo(result[6]));
            Assert.That(0x25, Is.EqualTo(result[7]));
        }
Esempio n. 7
0
        /// <summary>
        /// Execute the process of this action.
        /// </summary>
        public override void Execute()
        {
            if (this.Title != null)
            {
                Logger.Info(this.Title);
            }

            var msDest = this.Context.Buffers.Get <MemoryStream>(this.To.Value, true);

            using (var binaryWriter = new BinaryWriter(msDest, Encoding.Default, true))
            {
                foreach (var data in this.DataParameters)
                {
                    binaryWriter.Seek((int)data.Adress.Value, data.Adress.Origin);

                    switch (data.Type)
                    {
                    case EnumDataType.Array8:
                        byte[] bytesValue = ((JArray)data.Value).ToObject <byte[]>();
                        binaryWriter.Write(bytesValue);
                        break;

                    case EnumDataType.Array16:
                        ushort[] shortArray = ((JArray)data.Value).ToObject <ushort[]>();
                        foreach (ushort value in shortArray)
                        {
                            foreach (byte b in BinHelper.GetBytes(value, data.Endian))
                            {
                                binaryWriter.Write(b);
                            }
                        }

                        break;

                    case EnumDataType.Array32:
                        uint[] uintArray = ((JArray)data.Value).ToObject <uint[]>();
                        foreach (uint value in uintArray)
                        {
                            foreach (byte b in BinHelper.GetBytes(value, data.Endian))
                            {
                                binaryWriter.Write(b);
                            }
                        }

                        break;

                    case EnumDataType.Array64:
                        ulong[] ulongArray = ((JArray)data.Value).ToObject <ulong[]>();
                        foreach (ulong value in ulongArray)
                        {
                            foreach (byte b in BinHelper.GetBytes(value, data.Endian))
                            {
                                binaryWriter.Write(b);
                            }
                        }

                        break;

                    case EnumDataType.U8:
                        byte byteValue = Convert.ToByte(data.Value, CultureInfo.CurrentCulture);
                        binaryWriter.Write(byteValue);
                        break;

                    case EnumDataType.U16:
                        ushort ushortValue = Convert.ToUInt16(data.Value, CultureInfo.CurrentCulture);
                        foreach (byte b in BinHelper.GetBytes(ushortValue, data.Endian))
                        {
                            binaryWriter.Write(b);
                        }

                        break;

                    case EnumDataType.U32:
                        uint uintValue = Convert.ToUInt32(data.Value, CultureInfo.CurrentCulture);
                        foreach (byte b in BinHelper.GetBytes(uintValue, data.Endian))
                        {
                            binaryWriter.Write(b);
                        }

                        break;

                    case EnumDataType.U64:
                        ulong ulongValue = Convert.ToUInt64(data.Value, CultureInfo.CurrentCulture);
                        foreach (byte b in BinHelper.GetBytes(ulongValue, data.Endian))
                        {
                            binaryWriter.Write(b);
                        }

                        break;

                    case EnumDataType.Str:
                        binaryWriter.Write(((string)data.Value).ToCharArray());
                        break;
                    }
                }
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Execute the process of this action.
        /// </summary>
        public override void Execute()
        {
            if (this.Title != null)
            {
                Logger.Info(this.Title);
            }

            var msSource = this.Context.Buffers.Get <MemoryStream>(this.To.Value, true);
            var msDest   = new MemoryStream();

            msSource.Position = 0;

            byte[] bytes;
            using (var binaryReader = new BinaryReader(msSource))
                using (var binaryWriter = new BinaryWriter(msDest, Encoding.Default, true))
                {
                    long position = 0;

                    foreach (var data in this.DataParameters.OrderBy(x => x.Adress))
                    {
                        bytes    = binaryReader.ReadBytes((int)data.Adress.Value - (int)position);
                        position = data.Adress.Value;

                        binaryWriter.Write(bytes, 0, (int)data.Adress.Value);

                        switch (data.Type)
                        {
                        case EnumDataType.Array8:
                            byte[] byteArray = ((JArray)data.Value).ToObject <byte[]>();
                            binaryWriter.Write(byteArray);
                            break;

                        case EnumDataType.Array16:
                            ushort[] ushortArray = ((JArray)data.Value).ToObject <ushort[]>();
                            foreach (ushort value in ushortArray)
                            {
                                foreach (byte b in BinHelper.GetBytes(value, data.Endian))
                                {
                                    binaryWriter.Write(b);
                                }
                            }

                            break;

                        case EnumDataType.Array32:
                            uint[] uintArray = ((JArray)data.Value).ToObject <uint[]>();
                            foreach (uint value in uintArray)
                            {
                                foreach (byte b in BinHelper.GetBytes(value, data.Endian))
                                {
                                    binaryWriter.Write(b);
                                }
                            }

                            break;

                        case EnumDataType.Array64:
                            ulong[] ulongArray = ((JArray)data.Value).ToObject <ulong[]>();
                            foreach (ulong value in ulongArray)
                            {
                                foreach (byte b in BinHelper.GetBytes(value, data.Endian))
                                {
                                    binaryWriter.Write(b);
                                }
                            }

                            break;

                        case EnumDataType.U8:
                            byte byteValue = Convert.ToByte(data.Value, CultureInfo.CurrentCulture);
                            binaryWriter.Write(byteValue);
                            break;

                        case EnumDataType.U16:
                            ushort ushortValue = Convert.ToUInt16(data.Value, CultureInfo.CurrentCulture);
                            foreach (byte b in BinHelper.GetBytes(ushortValue, data.Endian))
                            {
                                binaryWriter.Write(b);
                            }

                            break;

                        case EnumDataType.U32:
                            uint uintValue = Convert.ToUInt32(data.Value, CultureInfo.CurrentCulture);
                            foreach (byte b in BinHelper.GetBytes(uintValue, data.Endian))
                            {
                                binaryWriter.Write(b);
                            }

                            break;

                        case EnumDataType.U64:
                            ulong ulongValue = Convert.ToUInt64(data.Value, CultureInfo.CurrentCulture);
                            foreach (byte b in BinHelper.GetBytes(ulongValue, data.Endian))
                            {
                                binaryWriter.Write(b);
                            }

                            break;

                        case EnumDataType.Str:
                            binaryWriter.Write(((string)data.Value).ToCharArray());
                            break;
                        }
                    }

                    int size = (int)binaryReader.BaseStream.Length - (int)position;
                    bytes = binaryReader.ReadBytes(size);

                    binaryWriter.Write(bytes, 0, size);

                    this.Context.Buffers.Add(this.To.Value, msDest);
                }
        }