2016-03-23 1 views
-3

Ich schreibe ein Programm, das von QT csv schreiben muss. Die Codes sind wie folgt:Schreiben Sie die CSV-Datei von QT. Es funktionierte auf Mac, aber nicht auf Windows

void MainWindow::writeUserData(){ 
CSVWriter writerHeader; 
writerHeader.setSeparator(";"); 
writerHeader.openFile(m_path+"users/header.csv"); 

QString fileName = m_path + "users/"+ m_userData["userId"] + "_" + m_userData["name"] + "_" + QDateTime::currentDateTime().toString()+".csv"; 

if(!Experiment::MAC_COMP){ 
    fileName = fileName.replace(" ","_"); 
    fileName = fileName.replace(":","_"); 
    fileName[1] =':'; 
} 

CSVWriter writerUserData; 
writerUserData.setSeparator(";"); 
writerUserData.openFile(fileName); 

QStringList header; 
QStringList d; 
QMapIterator<QString,QString> i(m_userData); 
while(i.hasNext()){ 
    i.next(); 
    header<< i.key(); 
    d<<i.value(); 
} 

writerHeader.setColumnNames(header, true); 
writerUserData.setColumnNames(header); 
writerUserData.write(d,true); 

writerHeader.closeFile(); 
writerUserData.closeFile(); 
} 

Es funktionierte perfekt auf Mac, aber konnte nicht die Datei unter Windows schreiben. Weiß jemand warum? Vielen Dank im Voraus!

+2

Kein Debugger? Versuche es härter. – Puppy

+0

Nichts besonders offensichtlich oder abscheulich im Code zur Verfügung gestellt. Starten Sie den Debugger und stellen Sie sicher, dass der zusammengesetzte Dateipfad unter Windows sinnvoll ist. – user4581301

+0

Danke für Ihre Ermutigung. Ich habe versucht, zu debuggen. Da ich Daten später in dieser Datei protokollieren muss, sagte mir das Debugging nur, dass "unmöglich, die Datei zu öffnen" und "unmöglich, in die Datei zu schreiben, weil m_Columns.empty() || m_File == NULL return false" sinnvoll ist weil die Datei nicht erstellt wurde. Wenn Sie Erfahrung haben, teilen Sie es bitte mit mir. Danke –

Antwort

0

Ich denke, das Problem könnte in der Codierung der CSV-Datei sein. Vor allem im Zeilenende-Zeichen. Ich hatte das gleiche Problem in der Vergangenheit bei der Verwendung von Qt4.x. Das Problem war in der QTextStream der readline() gelesen ganze Datei und App abgestürzt.

Verwandte Themen