Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись/чтение данных в файл. С++/CLI, в VS2008. Windows Forms.(данные: числа ) 
V
    Опции темы
maxfox
  Дата 3.9.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 29.7.2009

Репутация: нет
Всего: нет



Доброго времени суток всем.

Помогите разобраться в чтении/записи числовых данных в файл.
Пишу на с++/CLI в VS 2008 в проекте Windows Forms;

вот, что я сам смог найти по справке/книжкам:
Код

if (Form1::saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
{
       System::IO::Stream^ filedata;  //заводим переменную для файла
     filedata = System::IO::File::Open(Form1::saveFileDialog1->FileName,System::IO::FileMode::Create);  //  связываем переменную с файлом и открываем файл для чтения/записи
       int value=266;
                        cli::array<unsigned char>^ dataArray;                 //  создаём буфер для записи
             dataArray = gcnew array<unsigned char>(1);     //   инициируем размер на одно число
             dataArray[0] = value;                                           //  записываем число в буфер
       filedata->Write(dataArray,0,dataArray->Length);                //   пишем в файл
     filedata->Close();                               //закрываем файл
}


проект компилится но записывает файл очевидно, неверно. число INT обрезается одним байтом.
Понятно, что для передачи "value"  надо 4 байта вопрос в том, как в этот буфер засунуть число INT?
ведь буфер должен быть массивом типа <unsigned char>...


п.с. Неужели всё так плохо?
может хоть подскажет кто, как расчленить число на составляющие его байты, чтобы записать их в массив??

Это сообщение отредактировал(а) maxfox - 4.9.2009, 11:42
PM MAIL   Вверх
maxfox
  Дата 4.9.2009, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 29.7.2009

Репутация: нет
Всего: нет



Вопрос закрыт.
После долгого копания в справке, нашёл стандартные классы, выполняющие запись/чтение данных:

System::IO::BinaryWriter
System::IO::BinaryReader

пример кода записи:
Код

if (Form1::saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
             {
                 int mCal = 277;
                 System::IO::Stream^ filedata;
                 filedata = System::IO::File::Open(Form1::saveFileDialog1->FileName,System::IO::FileMode::Create);
                 System::IO::BinaryWriter^ bWriter = gcnew System::IO::BinaryWriter(filedata);
                 try
                 {
                     bWriter->Write(mCal);
                     bWriter->Write(mCal+155);
                 }
                 finally
                 {
                     bWriter->Close();
                 }

             }

и пример кода чтения:
Код

 if (Form1::openFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
             {
                 System::IO::Stream^ filedata;
                 filedata = System::IO::File::Open(Form1::openFileDialog1->FileName,System::IO::FileMode::Open);
                 System::IO::BinaryReader^ bReader = gcnew System::IO::BinaryReader(filedata);
                 int mCal;
                 listBox1->Items->Clear();
                 try
                 {
                     mCal = bReader->ReadInt32();
                     listBox1->Items->Add(mCal);
                     mCal = bReader->ReadInt32();
                     listBox1->Items->Add(mCal);
                 }
                 finally
                 {
                     bReader->Close();
                 }


             }

удачи в кодинге.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.