PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfade unter UNIX und WIndows -> wie plattformunabhängig ?



Mat
13-01-2006, 23:39
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,
_

Mat
14-01-2006, 19:13
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,
_

Mat
14-01-2006, 20:20
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,
_

Mat
14-01-2006, 21:34
vielen dank anda...natürlich funktionierts jetzt :)

Kirsche
20-01-2006, 19:45
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,