Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Запись массива объектов в фаил  (Прочитано 8206 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Roof
Гость
« : 01-02-2007 16:15 » new

Доброго времени суток, госпада!

Есть класс:

ref class REW
{
public:
   REW(void);
   
    String^ RName;
   double A;
   double B;
   double C;
   double D;
   double E;

};

Делаем массив объектов этого класса:

array<REWr^>^ ROT = gcnew array<REW^>(10);
int i;
      
for(i=0; i != ROT->Length; ++i)
   {
   ROT[i] = gcnew REW();  // получаем объекты этого класса ROT[0(......ROT[9]      
   }

как я понимаю эти объекты имеют тип cli::array

вопрос такой как эти объекты (массив) сохранить в фаил? Здесь была моя ладья...

заранее всем благодарен в оказании посильной помощи.
« Последнее редактирование: 01-02-2007 16:39 от Алексей1153++ » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 01-02-2007 19:51 » 

В какой файл? Если в текстовый, то лучше в XML.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Roof
Гость
« Ответ #2 : 01-02-2007 19:59 » 

С этим я разобрался Внимание! Говорит и показывает..., можно и xml Да-да

но возник вопрос когда этот код находится в теле функции main все ОК.

Код:
FileStream^ file = gcnew FileStream("C:\\Documents and Settings\\Covex\\R3.dat", FileMode::Create);
 IFormatter^ formatter = (IFormatter^)gcnew BinaryFormatter();

    array<REW^>^ ROT = gcnew array<REW^>(10);
   int i;
    for(i=0; i != ROT->Length; ++i)
   {
       ROT[i] = gcnew REW();
   }

    formatter->Serialize(file, ROT);
    file->Close();


когда выношу в его отдельную функцию
Код:
void SafeMe()
{
FileStream^ file = gcnew FileStream("C:\\Documents and Settings\\Covex\\R3.dat", FileMode::Create);
 IFormatter^ formatter = (IFormatter^)gcnew BinaryFormatter();
    array<REWr^>^ ROT = gcnew array<REW^>(10);
   int i;
    for(i=0; i != ROT->Length; ++i)
   {
       ROT[i] = gcnew REW();
   }
}


потом ее вызываю из обработчика нажатия кнопки:
Код:
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
{
extern void SafeMe();
void SafeMe();
 }

 то компилятор ошибок не выдаёт но и фаил не создаётся?!
ПАЧАМУ??? Здесь была моя ладья...
« Последнее редактирование: 02-02-2007 16:08 от Алексей1153++ » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 01-02-2007 20:07 » 

Потому что это не вызов, а декларация.
Цитата
extern void SafeMe();
void SafeMe();
Во второй строчке нужно убрать void.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Roof
Гость
« Ответ #4 : 01-02-2007 20:57 » 

To dimka, действительно, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines