Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfade unter UNIX und WIndows -> wie plattformunabhängig ?
Gibt es eine Möglichkeit mit QT herauszufinden unter welchem Betriebssystem die Application aufgerufen wurde ? Ich habe nämlich eine Problem... Wenn ich zum Beispiel ein file lade dann sind unter UNix die "/" und windows "\". Wenn ich jetzt nur das file an sich haben will suche ich nach "/" als index von hinten und so strippe ich mir den namen ab.... Wie wird das plattformunabhängig gehandhabt ?
anda_skoa
14-01-2006, 16:21
Darum kümmert sich Qt
QFileInfo für deine Aufgabenstellung
Ciao,
_
Ah ok. damit hätte ich nur noch ein kleines Problem. Mit currentDirPath bekomme ich immer nur pfade ohne das letzte separator zeichen...
Ich bräuchte aber den currentDirpath immer mit dem letzen trennzeichen..also
/xyz/abx/ anstatt /xyz/abx
Betriebssystemabhängig müsste ich hier mit stringoperationen den separator drankleben aber geht das nicht irgendwie einfacher ?
anda_skoa
14-01-2006, 20:06
Vielleicht ist es besser du beschreibst was du eigentlich lösen möchtest.
Beispiel:
du kennst drei Dateinamen und möchtest wissen ob sie im aktuellen Verzeichnis existieren:
QDir dir = QDir::current();
QFileInfo fileInfo;
fileInfo.setFile(dir, "datei1");
if (fileInfo.exists()) // oder ähnliche Abfrage
fileInfo.setFile(dir, "datei2");
if (fileInfo.exists()) // oder ähnliche Abfrage
fileInfo.setFile(dir, "datei3");
if (fileInfo.exists()) // oder ähnliche Abfrage
Ciao,
_
danke ja...also was ich möchte:
Ich habe eine GUI eine entry in dem das output directory steht. ich habe den initial text mit QDir::currentDir() eingepfrimelt aber er zeigt dort immer nur : /dir1/dir2
wenn ich jetzt ein file generieren möchte in diesem dir2 (name ist: file1)
dann lese ich dieses entry aus und bekomme /dir1/dir2 wenn der user nichts geändert hat. (wenn er was geändert hat steht am ende immer ein "/")
so jetzt lese ich aus und hänge um das file zu öffnen file1 an........und was habe ich dann: /dir1/dir2file1 aber nicht /dir1/dir2/file1
das ist mein Problem. Ich bräuchte also den "/" hinten noch im entry als initialwert!
Da aber bei windows nicht "/" sondern "\" hinten dran sein müsste weiß ich im moment nicht wie ich dieses triviale problem eigentlich lösen soll ? :o
Danke
anda_skoa
14-01-2006, 20:29
Ohne das jetzt ausprobiert zu haben
QString dirname = lineedit->text();
QDir dir(dirname);
QFileInfo fileInfo(dir, "file1");
QString fullFileName = fileInfo.absFilePath();
Ciao,
_
vielen dank anda...natürlich funktionierts jetzt :)
Hallo Mat,
du kannst auch "/" dranhängen. Das funktioniert unter Linux und Windows. Unter Windows macht Qt automatisch das richtige Zeichen daraus. Falls du dem Benutzer Fehlermeldungen ausgeben möchtest, in denen Pfadangaben vorkommen, kannst du "/" benutzen und einrahmen mit
QString QDir::convertSeparators ( const QString & pathName ) [static]
Dadurch wird auch das richtige Zeichen verwendet.
Schöne Grüße,
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.