cimforreduceloss/readxml/linetypeparser.cpp

69 lines
1.9 KiB
C++

#include "linetypeparser.h"
#include <QFile>
//#include <QMessageBox>
QSharedPointer<LineTypeParser::HashType> LineTypeParser::msharedPointer=QSharedPointer<LineTypeParser::HashType>();
LineTypeParser::LineTypeParser(QObject *parent) :
QObject(parent)
{
}
void LineTypeParser::ReadData(const QString &file)
{
if(!QFile::exists(file))
{
//QMessageBox::warning(0,"警告","线路型号文件不存在!");
return;
}
QFile _file(file);
if(_file.open(QIODevice::ReadOnly))
{
QString line;
QStringList sep;
QTextStream stream(&_file);
while(!stream.atEnd())
{
line=stream.readLine();
sep=line.split(',');
LineParameter linePara;
linePara.x=0.4;
linePara.r=sep.at(8).toDouble();
QHash<QString,LineParameter> *hash=LineTypeParser::msharedPointer.data();//仅仅为了后面使用方便。
QString lineType=sep.at(1);
lineType.remove(0,1);
lineType.remove(lineType.length()-1,1);
(*hash)[lineType.trimmed()]=linePara;
}
_file.close();
}
}
double LineTypeParser::GetReactance(const QString &file, const QString &type)
{
if(LineTypeParser::msharedPointer.isNull())
{
LineTypeParser::msharedPointer=QSharedPointer<LineTypeParser::HashType>(new HashType);
LineTypeParser::ReadData(file);
}
QHash<QString,LineParameter> hash=*LineTypeParser::msharedPointer;//仅仅为了后面使用方便。
return hash[type.trimmed()].x;
}
double LineTypeParser::GetResistance(const QString &file, const QString &type)
{
if(LineTypeParser::msharedPointer.isNull())
{
LineTypeParser::msharedPointer=QSharedPointer<LineTypeParser::HashType>(new HashType);
LineTypeParser::ReadData(file);
}
QHash<QString,LineParameter> hash=*LineTypeParser::msharedPointer;//仅仅为了后面使用方便。
return hash[type.trimmed()].r;
}