#include "linetypeparser.h" #include //#include QSharedPointer LineTypeParser::msharedPointer=QSharedPointer(); 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 *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(new HashType); LineTypeParser::ReadData(file); } QHash hash=*LineTypeParser::msharedPointer;//仅仅为了后面使用方便。 return hash[type.trimmed()].x; } double LineTypeParser::GetResistance(const QString &file, const QString &type) { if(LineTypeParser::msharedPointer.isNull()) { LineTypeParser::msharedPointer=QSharedPointer(new HashType); LineTypeParser::ReadData(file); } QHash hash=*LineTypeParser::msharedPointer;//仅仅为了后面使用方便。 return hash[type.trimmed()].r; }