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

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

  1. Neron
  2. Neron
  3. Neron
  4. Neron
  5. Neron
  6. Neron
  7. Neron
  8. 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
  9. Neron
  10. Neron
  11. Neron
  12. Neron
  13. Neron
  14. Neron
  15. Neron
  16. Neron
  17. Neron
  18. Neron
    Тема

    Порты

    29301 29702 29712 За что на сервере отвечают следующие порты?
    Автор темы: Neron, 27 июл 2014, ответов - 4, в разделе: Оффтоп
  19. Neron
  20. Neron