Добрый день.
Решил написать небоьшую программу, которая будет читать данные из тектового файла. Данные представляют собой простой список. Id, Name, Field1,Field2.
Для начало создал свою структуру:
struct RElement
{
int id;
QString *name;
int field1;// const;
int field2;// const;
};
void runCode(QStringList _strList)
{
QStringList strListLine,strListLineSend;
QList <RElement> codeList;
RRElement rVar;
foreach(QString str, _strList)
{
strListLine.append(str.toLower());
if(str == ";")
{
runLineCode(&codeList,strListLine);//запускаем функцию
strListLine.clear();
}
}
while(codeList.count() > 0);//oisEmpty())
{
rVar = codeList.takeFirst();
delete &rVar;
}
}
void runLineCode(QList <RElement> *listCode,
QStringList _strList)
{
int i = 0,leght;
int id = 1;
int typeVar;
QString nameTypeVar = "";
QString typeNameStr;
char ch;
RElement *var;
if((_strList[i] == "point")||(_strList[i] == "poligon")||(_strList[i] == "line"))
{
if((_strList[i] != "=")||(_strList[i] != ".")||(_strList[i] != ",")||(_strList[i] != ":"))
{
nameTypeVar = _strList[i];
if(nameTypeVar == "point")
typeVar = 1;
else
if(nameTypeVar == "poligon")
typeVar = 2;
else
if(nameTypeVar == "line")
typeVar = 3;
i++;
}
}
if((typeVar > 0) && (i > 0))
{
leght = _strList.length() - i;
while(leght >= i && _strList[i] != ";")
{
if(_strList[i] != ",")
{
var->id = id;
var->type = typeVar;
var->field1 = 1;
var->field2 = 0;
listCode->append(*var);
id++;
var = var + 1;
}
i++;
}
}
}
А какие ошибки лезут?
ну, при беглом просмотре кода, сразу же в первом блоке:
delete &rVar;
leght = _strList.length() - i;
while(leght >= i ...
void runCode(QStringList _strList)
{
QStringList strListLine,strListLineSend;
QList <RElement> codeList;
foreach(QString str, _strList)
{
strListLine.append(str.toLower());
if(str == ";")
{
runLineCode(&codeList,strListLine);//запускаем функцию
strListLine.clear();
}
}
....
}
static void deallocate(QArrayData *data)
{
Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData));
QArrayData::deallocate(data, sizeof(T), Q_ALIGNOF(AlignmentDummy));
}
void runLineCode(QList <RElement> *listCode,
QStringList _strList)
{
int i = 0,leght;
int id = 1;
int typeVar;
QString nameTypeVar = "";
QString typeNameStr;
char ch;
RElement *var;
if((_strList[i] == "point")||(_strList[i] == "poligon")||(_strList[i] == "line"))
{
if((_strList[i] != "=")||(_strList[i] != ".")||(_strList[i] != ",")||(_strList[i] != ":"))
{
nameTypeVar = _strList[i];
if(nameTypeVar == "point")
typeVar = 1;
else
if(nameTypeVar == "poligon")
typeVar = 2;
else
if(nameTypeVar == "line")
typeVar = 3;
i++;
}
}
if((typeVar > 0) && (i > 0))
{
leght = _strList.length() - 1;
while(leght >= i && _strList[i] != ";")
{
if(_strList[i] != ",")
{
var->id = id;
var->type = typeVar;
var->field1 = 1;
var->field2 = 0;
listCode->append(*var);
id++;
var = var + 1;
}
i++;
}
}
}
Причину нашёл. Я не инициализировал указатель на структкру.
var = new RVariable();
Проблема решена.
Всем спасибо!
if((_strList[i] != "=")||(_strList[i] != ".")||(_strList[i] != ",")||(_strList[i] != ":"))
if((_strList[i] == "point")||(_strList[i] == "poligon")||(_strList[i] == "line"))
{
if((_strList[i] != "=")||(_strList[i] != ".")||(_strList[i] != ",")||(_strList[i] != ":"))
{
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)