2015-02-05 56 views
-1

我的應用程序的可執行文件駐留在somwhere/appDir/bin中。我希望它打開somwhere/appDir/data中的文件。它在Win7,Win8和Vista上運行良好,但在XP上失敗。我的代碼是:當執行到達src->exists()../的路徑無法在win XP和Qt上運行

QString dirPath = QCoreApplication::applicationDirPath(); 
QFile* src;  
src = new QFile(dirPath + "/../data/file.txt"); 
qDebug()<<src->exists(); 

應用程序崩潰。當路徑中沒有..時,一切正常。爲什麼?除了從路徑字符串中剝離目錄名之外,還有其他方法可以到達父目錄嗎?

回答

0

您可以從dirPath中刪除最後一個目錄名稱。

QStringList dirPathSplitted = dirPath.split("/"); 
dirPathSplitted.removeLast(); 
QString dirPath = dirPathSplitted.join("/"); 
src = new QFile(dirPath + "/data/file.txt"); 

我不知道這是否是最好的解決方案,但它可能工作。如果它不適用於WinXP,它可能是一個錯誤。你可能會考慮報告它。但是,如果以上在XP上工作,它也應該在其他人上工作。