Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание из StringGrid в vector, возникает ошибка при считывании в vector 
:(
    Опции темы
mal1na
Дата 2.6.2011, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток, форумчане.
Возникла проблема с использованием контейнеров при считывании данных из СтрингГрида. 
В стринггриде задаются координаты точек (x,y,z) для построения графика. Кол-во точек может быть неограничено. Считываю из в контейнер . компилируется. а при попытки построить график выдает ошибку.  Project raised exception class std::out_of_range with message "Exception Object Address: 0x1E6973A'

пробовала разными способами считывать, ни в какую, либо эта ошибка либо пишет , что данные не являются float.

вот код. Помогите, пжлст!!. Что я делаю не так?

класс графика
Код
class TGraphicTable : public TObject3D{
private:
    int FPoint;
//контейнеры соответсвенно для X, Y, Z
    std::vector <float> FPX;
    std::vector <float> FPY;
    std::vector <float> FPZ;
    
public:
    int GetPoint(void){return FPoint;}
    void SetPoint( int point ){ FPoint = point;}

   //функции для контейнеров соответсвенно для X, Y, Z
   std::vector <float> GetFPX(){ return FPX;}
   void SetFPX( std::vector<float>&p ){FPX = p;}
   std::vector <float> GetFPY(){ return FPY;}
   void SetFPY( std::vector<float>&p ){FPY = p;}
   std::vector <float> GetFPZ(){ return FPZ;}
   void SetFPZ( std::vector<float>&p ){FPZ = p;}

    TGraphicTable(){
       FPoint=1;//инициализирую кол-во точек (пока 1)
       FPX.push_back(0.0);
       FPX.push_back(5.0);
       FPX.push_back(10.0);
       FPY.push_back(0.0);
       FPY.push_back(5.0);
       FPY.push_back(10.0);
       FPZ.push_back(0.0);
       FPZ.push_back(5.0);
       FPZ.push_back(10.0);
       //    = std::vector <float>( 0.0f, 1.0f, 10.0f);
      // FPY = std::vector <float>( 0.0f, 1.0f, 10.0f);
      // FPZ = std::vector <float>( 0.0f, 1.0f, 10.0f);
      
    }
    virtual ~TGraphicTable(){}
    virtual void Draw(void);
};


и непосредственно использую функции для контейнеров в другом Unit
Код
std::vector <float> X;
       std::vector <float> Y;
       std::vector <float> Z;

...
int point=gtable->GetPoint();
       int i=1;
       while (i<MassivPoints->RowCount)
       {
       X.push_back(StrToFloat(MassivPoints->Cells[1][i]));
       Y.push_back(StrToFloat(MassivPoints->Cells[2][i]));
       Z.push_back(StrToFloat(MassivPoints->Cells[3][i]));
        i++;
       }   
//присваиваю Vector Х вектору FRX Из класса TGpraphicTable
       gtable->SetFPX(X);
       gtable->SetFPY(Y);
       gtable->SetFPZ(Z);



Буду очень признательна, если поможете!
PM MAIL   Вверх
ZVano
Дата 2.6.2011, 11:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

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



Лучше объедини координаты в структуру:
Код

struct T3DCoordinate{
  int X;
  int Y;
  int Z;
  T3DCoordinate(int newX. int newY, int newZ){
    X = newX;
    Y = newY;
    Z = newZ;
  }
};
typedef vector<T3DCoordinate> T3DCoordinates;

class TGraphicTable : public TObject3D{
private:
  T3DCoordinates coordinates;

TGraphicTable(){
   coordinates.push_back(T3DCoordinate(1, 2, 3));
   coordinates.push_back(T3DCoordinate(4, 5, 6));
   coordinates.push_back(T3DCoordinate(7, 8, 9));
}



--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
xvr
Дата 2.6.2011, 12:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Индексы строк и колонок в StringGrid'е считаются с нуля. У тебя - с 1

PM MAIL   Вверх
mal1na
Дата 2.6.2011, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



xvr, дело в том, что мне и надо, чтобы с 1. так в нулевой строке у меня записано X Y Z, а в нулевом столбцу идет перечисление точек.
так что . если считывать с ), то в контейнере будет не нужная мне информация, ну и никак с++ не сможет строку символов перевести в float.


ZVano, спасибо. попытаюсь)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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