"Eigene Dateien"-Ordner ermitteln

Alles rund um die Programmierung mit Qt
Antworten
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

"Eigene Dateien"-Ordner ermitteln

Beitrag von reinki0013 »

Hallo zusammen,

also ich würde gerne bei meinem Programm aus einer Textdatei
einlesen... Soweit so gut... allerdings möchte ich gerne das Verzeichnis
festlegen, wo die zu öffnende Datei liegt.

Also mit

Code: Alles auswählen

QFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath, tr("Textdateien(*.txt) ") );
kann ich ohne probleme den Dialog öffen. Allerdings befinde ich mich dann in C:\Dokumente und Einstellungen\Besitzer
Allerdings möchte ich gerne in den Ordner "Eigene Dateien" kommen.


Hat da jemand einen Vorschlag für mich?
Oder einen Tipp??

Besten dank

Lg Reinki
mathies
Beiträge: 149
Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt

Beitrag von mathies »

ruf einfach QDir::currentPath() auf...liefert dir das aktuelle Verzeichnis als QString zurück

......
sorry, irgendwie falsch gelesen :(
Zuletzt geändert von mathies am 11. November 2008 14:59, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

In der Registry findest Du alles Nötige unter HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Dann würde ich dir empfehlen über die Registry zu gehen. QSettings bietet die nötigen funktionen dazu.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

KernelPanic hat geschrieben:Dann würde ich dir empfehlen über die Registry zu gehen. QSettings bietet die nötigen funktionen dazu.
Oder besser gleich WinAPI (SHGetSpecialFolderPath(W) ) - die Lage der Registry-Schlüssel sind nirgends festgelegt und können von Version zu Version anders sein.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Christian81 hat geschrieben:Oder besser gleich WinAPI (SHGetSpecialFolderPath(W) )
Oder SHGetSpecialFolderLocation. SHGetSpecialFolderPath gibt es erst seit Shell32.dll, Version 4.71 :-) Kam mit dem IE4.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag von reinki0013 »

hallo zusammen,

ich habe nun etwas gefunden wie ich es auch lösen kann...

Allerdings muss man bei den Projekteigenschaften "Common Language Runtime-Unterstützung" aktivieren...

danach kann man mit

Code: Alles auswählen

Pfad.sprintf("%s", System::Environment::GetFolderPath( System::Environment::SpecialFolder::MyDocuments ));
den Ordner "Eigene Dateien" ermitteln...

lg Reinki
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

reinki0013 hat geschrieben:ich habe nun etwas gefunden wie ich es auch lösen kann...
Und das Schlechteste was Du finden konntest, denn dafür muss das .Net-Framework installiert sein. Willst Du das wirklich?
Warum nicht einfach den Weg, den wir dir vorgeschlagen haben? (Ohne Gewähr, nur so aus dem Kopf)

Code: Alles auswählen

  TCHAR lpBuffer[_MAX_PATH];
  int ret = SHGetSpecialFolderPath(NULL, lpBuffer, CSIDL_PERSONAL, 0);
  QString myFilesPath = QString::fromUtf16(lpBuffer);
Das funktioniert ab Win2000 ohne zusätzliche Installationen. Für NT lege ich meine Hand nichts Feuer, zu viele schlechte Erfahrungen :-)
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

reinki0013 hat geschrieben: ich habe nun etwas gefunden wie ich es auch lösen kann...

Allerdings muss man bei den Projekteigenschaften "Common Language Runtime-Unterstützung" aktivieren...

danach kann man mit

Code: Alles auswählen

Pfad.sprintf("%s", System::Environment::GetFolderPath( System::Environment::SpecialFolder::MyDocuments ));
den Ordner "Eigene Dateien" ermitteln...

lg Reinki
Ganz schlechte Idee!
Damit mischt du Qt-Framework und .net-Framework (woher dieses System::Environment...) stammt!
Benutze die vorgeschlagene WinAPI-Funktion.

Gruß, Gérôme
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag von reinki0013 »

macman hat geschrieben:
reinki0013 hat geschrieben:ich habe nun etwas gefunden wie ich es auch lösen kann...
Und das Schlechteste was Du finden konntest, denn dafür muss das .Net-Framework installiert sein. Willst Du das wirklich?
Warum nicht einfach den Weg, den wir dir vorgeschlagen haben? (Ohne Gewähr, nur so aus dem Kopf)

Code: Alles auswählen

  TCHAR lpBuffer[_MAX_PATH];
  int ret = SHGetSpecialFolderPath(NULL, lpBuffer, CSIDL_PERSONAL, 0);
  QString myFilesPath = QString::fromUtf16(lpBuffer);
Das funktioniert ab Win2000 ohne zusätzliche Installationen. Für NT lege ich meine Hand nichts Feuer, zu viele schlechte Erfahrungen :-)
und wie soll ich das dann anwenden?
wenn ich den Quellcode so rein kopiere, kommen 7 Fehlermeldungen...

Muss ich da zusätzlich etwas inkludieren (header?) oder so?

hab leider noch keine Erfahrung damit, darum diese Fragen...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sollen wir jetzt raten wie dei Fehlermeldungen lauten oder sagst Du sie uns auch?

Wohl vergessen shlobj.h zu inkludieren. Siehe auch Doku zu ShGetSpecialFolderPath --> http://msdn.microsoft.com/en-us/library ... S.85).aspx
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag von reinki0013 »

Christian81 hat geschrieben:Sollen wir jetzt raten wie dei Fehlermeldungen lauten oder sagst Du sie uns auch?

Wohl vergessen shlobj.h zu inkludieren. Siehe auch Doku zu ShGetSpecialFolderPath --> http://msdn.microsoft.com/en-us/library ... S.85).aspx
also das war des rätsels lösung, hab das inklude nicht eingefügt...
und schon funktionierts....

jetzt hätte ich noch eine Frage...

Wie komme ich auf den Ordner "Gemeinsame Dateien"?
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

reinki0013 hat geschrieben:
Christian81 hat geschrieben:Sollen wir jetzt raten wie dei Fehlermeldungen lauten oder sagst Du sie uns auch?

Wohl vergessen shlobj.h zu inkludieren. Siehe auch Doku zu ShGetSpecialFolderPath --> http://msdn.microsoft.com/en-us/library ... S.85).aspx
also das war des rätsels lösung, hab das inklude nicht eingefügt...
und schon funktionierts....

jetzt hätte ich noch eine Frage...

Wie komme ich auf den Ordner "Gemeinsame Dateien"?
http://msdn.microsoft.com/en-us/library ... S.85).aspx

? :roll:
reinki0013
Beiträge: 174
Registriert: 11. November 2008 09:37
Wohnort: AUT

Beitrag von reinki0013 »

pfid hat geschrieben:
reinki0013 hat geschrieben:
Christian81 hat geschrieben:Sollen wir jetzt raten wie dei Fehlermeldungen lauten oder sagst Du sie uns auch?

Wohl vergessen shlobj.h zu inkludieren. Siehe auch Doku zu ShGetSpecialFolderPath --> http://msdn.microsoft.com/en-us/library ... S.85).aspx
also das war des rätsels lösung, hab das inklude nicht eingefügt...
und schon funktionierts....

jetzt hätte ich noch eine Frage...

Wie komme ich auf den Ordner "Gemeinsame Dateien"?
http://msdn.microsoft.com/en-us/library ... S.85).aspx

? :roll:
Besten dank, habs gerade auch selber gefunden, mit deutscher Beschreibung....

Besten dank für eure Hilfe...
Somit fällt auch das .NET-Framework bei meinem Programm weg...

echt toll, besten dank....

lg Reinki
Antworten