69 lines
1.9 KiB
C++
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;
|
|
|
|
}
|