1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. Neron
  2. Neron
  3. Neron
  4. Neron
  5. Neron
    Дроп не работает :D
    Сообщение от: Neron, 2 июн 2015 в разделе: JD Разработки
  6. Neron
  7. Neron
  8. Neron
  9. Neron
  10. Neron
    5500 никуда уже не лезет :|
    Сообщение от: Neron, 28 май 2015 в разделе: Продам
  11. Neron
  12. Neron
  13. Neron
  14. Neron
  15. Neron
  16. Neron
  17. Neron
  18. Neron
  19. Neron
  20. Neron
    Ну как и многие мне интересно написать какой нибудь редактор и начал с самого простого. на форуме нашел тему как делается редактор для DynamicObjects сделал по примеру открывает изменяет но не сохраняет. Подскажите почему он сохраняет исходный файл а больше ничего не изменяет. private void открытьToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog OpenFile = new OpenFileDialog(); OpenFile.Filter = "Data files(*.data)|*.data"; if (OpenFile.ShowDialog() == DialogResult.OK) { Resources.ChangeFile.Open(OpenFile.FileName); } dataGridView1.Rows.Clear(); for (int i = 0; i < Resources.ChangeFile.Objects.Length; i++) { dataGridView1.Rows.Add(Resources.ChangeFile.Objects[I].ID, Resources.ChangeFile.Objects[I].Path); } } private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog SaveFile = new SaveFileDialog(); SaveFile.Filter = "Data files(*.data)|*.data"; if (SaveFile.ShowDialog() == DialogResult.OK) { byte[] FileArray = Resources.ChangeFile.Save(); Directory.CreateDirectory(Path.GetDirectoryName(SaveFile.FileName)); File.WriteAllBytes(SaveFile.FileName, FileArray); } } namespace Editor.Resources { class ChangeFile { public static int Sign = 1347242308; public static Resources.Object[] Objects; static MemoryStream MemoryStreamReader; static MemoryStream MemoryStreamWriter; static BinaryReader FileReader; static BinaryWriter FileWriter; public static void Open(string FileLoad) { byte[] Filearray = File.ReadAllBytes(FileLoad); MemoryStreamReader = new MemoryStream(Filearray); FileReader = new BinaryReader(MemoryStreamReader); int inSign = FileReader.ReadInt32(); if (inSign != Sign) throw new Exception("Неверный тип файла."); readObjects(); FileReader.Close(); MemoryStreamReader.Close(); } static void readObjects() { int count = FileReader.ReadInt32(); Objects = new Object[count]; for (int i = 0; i < count; i++) { Objects[I].ID = FileReader.ReadInt32(); Objects[I].Path = readString(); } } static string readString() { int Length = FileReader.ReadInt32(); byte[] strArr = FileReader.ReadBytes(Length); string result = Encoding.GetEncoding(936).GetString(strArr, 0, Length); //Кодировка (Encoding.GetEncoding(936)) захардкоженна а не передана в параметре, тк //в PW почти везде используется именно она //Но для гибкости можно передавать кодировку и в параметре return result; } public static byte[] Save() { MemoryStreamWriter = new MemoryStream(GetFileSize()); FileWriter = new BinaryWriter(MemoryStreamWriter); FileWriter.Write(Sign); writeObjects(); byte[] result = MemoryStreamWriter.ToArray(); FileWriter.Close(); MemoryStreamWriter.Close(); return result; } static void writeObjects() { FileWriter.Write(Objects.Length); for (int i = 0; i < Objects.Length; i++) { FileWriter.Write(Objects[I].ID); writeString(Objects[I].Path); } } static int GetFileSize() { int Size = 8; for (int i = 0; i < Objects.Length; i++) { Size += 8; byte[] tmpArr = Encoding.GetEncoding(936).GetBytes(Objects[I].Path); Size += tmpArr.Length; } return Size; } static void writeString(string Value) { byte[] strArr = Encoding.GetEncoding(936).GetBytes(Value); FileWriter.Write(strArr.Length); FileWriter.Write(strArr); } } } И есть еще вопрос: в редакторе для DynamicObjects всего 1 структура но есть и файлы в которых их больше 1,2 кто сможет объяснить как обращаться не только к 1 но и к 2 или оболее структурам и получать значения. Заранее спасибо.
    Автор темы: Neron, 14 май 2015, ответов - 14, в разделе: .NET