Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Как сохранять загружать динамический массив из файла
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию Как сохранять загружать динамический массив из файла - 25.03.2006, 07:09

Доброе время суток !
Народ подскажите пожалуйста , как сохранять/загружать динамический массив в/из файла? Приведите пожалуйста примерчик !




P.S Заранее пасибо
Ответить с цитированием
  (#2 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 25.03.2006, 13:17

Динамический массив строк
Код:
TStringList* sl = new TStringList;
...
sl->LoadFromFile( "c:myfile.txt" );
...
sl->SaveToFile( "c:myfile.txt" );
...
delete sl;
Ответить с цитированием
  (#3 (permalink)) Старый
sq-Weezee sq-Weezee вне форума
Member
 
Сообщений: 251
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.02.2006
По умолчанию 25.03.2006, 19:59

Если загружаю файл так :
Код:
void __fastcall TAproxForm::N9Click(TObject *Sender)
{
        DestructArray();
        StringGrid->Enabled = true;
        StringGrid->Visible = true;
        if (OpenDialog1->Execute())
        {
                int OFile = FileOpen(OpenDialog1->FileName,fmOpenRead);
                FileRead(OFile,&nPoint,sizeof(int*));
                FileRead(OFile,&nPol,sizeof(int*));
                FileRead(OFile,&attitudeX,sizeof(double*));
                FileRead(OFile,&_CpEr,sizeof(double*));
                FileRead(OFile,&_CpModEr,sizeof(double*));
                FileRead(OFile,&_CpKvEr,sizeof(double*));
                FileRead(OFile,&_MaxEr,sizeof(double*));
                FileRead(OFile,&_SumKvEr,sizeof(double*));
                FileRead(OFile,arrayX,sizeof(double*)*nPoint);
                FileRead(OFile,arrayY,sizeof(double*)*nPoint);
                FileRead(OFile,newX,sizeof(double*)*nPol);
                FileClose(OFile);
        }
        EditPoint->Text = nPoint;
        EditPol->Text = (nPol - 1);
        StringGrid->RowCount = (nPoint + 1);
        for ( int i = 1; i < (nPoint + 1); i++)
        {
                StringGrid->Cells[1][i+1] = "";
                StringGrid->Cells[2][i+1] = "";
        }
        for ( int i = 0; i < nPoint; i++)
        {
                StringGrid->Cells[1][i+1] = arrayX[i];//возникает ошибка EAccessViolation with message "Access violation at address......." 
                StringGrid->Cells[2][i+1] = arrayY[i];
        }
        DestructArray();
}
А если добавляю объявление этих массивов , то :
Код:
void __fastcall TAproxForm::N9Click(TObject *Sender)
{
         DestructArray();
         StringGrid->Enabled = true;
         StringGrid->Visible = true;
         if (OpenDialog1->Execute())
        {
                int OFile = FileOpen(OpenDialog1->FileName,fmOpenRead);
                FileRead(OFile,&nPoint,sizeof(int*));
                FileRead(OFile,&nPol,sizeof(int*));
                FileRead(OFile,&attitudeX,sizeof(double*));
                FileRead(OFile,&_CpEr,sizeof(double*));
                FileRead(OFile,&_CpModEr,sizeof(double*));
                FileRead(OFile,&_CpKvEr,sizeof(double*));
                FileRead(OFile,&_MaxEr,sizeof(double*));
                FileRead(OFile,&_SumKvEr,sizeof(double*));
                arrayX = new double [nPoint];
                arrayY = new double [nPoint];
                newX = new double [nPol];
                FileRead(OFile,arrayX,sizeof(double*)*nPoint);
                FileRead(OFile,arrayY,sizeof(double*)*nPoint);
                FileRead(OFile,newX,sizeof(double*)*nPol);
                FileClose(OFile);
        }
        EditPoint->Text = nPoint;
        EditPol->Text = (nPol - 1);
        StringGrid->RowCount = (nPoint + 1);
        for ( int i = 1; i < (nPoint + 1); i++)
        {
                StringGrid->Cells[1][i+1] = "";
                StringGrid->Cells[2][i+1] = "";
        }
        for ( int i = 0; i < nPoint; i++)
        {
                StringGrid->Cells[1][i+1] = arrayX[i];
                StringGrid->Cells[2][i+1] = arrayY[i];
        }
        DestructArray();
}
ошибка не возникает , но он выводит значение этих массивов не те которые сохранял , но переменные nPol и nPoint выводит именно те ....
Чё делать ? ХЕлп плиз
P.S. кстати вот код сохранения :
Код:
void __fastcall TAproxForm::N8Click(TObject *Sender)
{
        if(SaveDialog1->Execute())
        {
                int CFile = FileCreate(SaveDialog1->FileName);
                FileWrite(CFile,&nPoint,sizeof(int*));
                FileWrite(CFile,&nPol,sizeof(int*));
                FileWrite(CFile,&attitudeX,sizeof(double*));
                FileWrite(CFile,&_CpEr,sizeof(double*));
                FileWrite(CFile,&_CpModEr,sizeof(double*));
                FileWrite(CFile,&_CpKvEr,sizeof(double*));
                FileWrite(CFile,&_MaxEr,sizeof(double*));
                FileWrite(CFile,&_SumKvEr,sizeof(double*));
                FileWrite(CFile,arrayX,sizeof(double*)*nPoint);
                FileWrite(CFile,arrayY,sizeof(double*)*nPoint);
                FileWrite(CFile,newX,sizeof(double*)*nPol);
                FileClose(CFile);
        }
}
Ответить с цитированием
  (#4 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 26.03.2006, 08:21

Ошибка в сохранении. Надо указывать sizeof(double), а не sizeof(double*). Ты же сохраняешь вещественный тип, а не указатель на него. И хотя с int и int* прокатывает, но это тоже некорретно.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический массив Serg94 С/С++ 1 13.12.2011 11:17
Динамический массив Kano184 C++ Builder 4 26.11.2006 13:04
IndexOf в С# динамический массив vlad1959 .NET 2 04.08.2006 09:54
Двухмерный динамический массив awer_ C++ Builder 4 05.11.2005 15:04
Двухмерный динамический массив в классе Dlav С/С++ 5 26.09.2005 22:21
Как создать динамический массив Pink pantera С/С++ 2 04.06.2005 20:30
Динамический двухмерный массив djonis C++ Builder 3 20.07.2004 01:23
Динамический массив TLabel Mugger C++ Builder 3 24.04.2004 10:49
Динамический массив из файла VolanD С/С++ 1 03.04.2004 13:16
Как создать динамический массив строк ZeuS С/С++ 21 04.03.2004 20:08
Динамический массив создание Anonymous C++ Builder 11 23.09.2003 12:30
Как создать динамический массив Batan Visual C++ 1 10.12.2002 17:57



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов