Entwickler-Ecke
Sonstiges (Delphi) - Wie den Pfad "C:\Dokumente und Einstellungen\USER" auslesen?
del1312 - Do 30.11.06 12:27
Titel: Wie den Pfad "C:\Dokumente und Einstellungen\USER" auslesen?
hab folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| function GetSpecialFolder(iGUID: integer): string; var shellMalloc : IMalloc; ppidl : PItemIdList; begin ppidl := nil; try if SHGetMalloc(shellMalloc) = NOERROR then begin SHGetSpecialFolderLocation(Form1.Handle, iGUID, ppidl); SetLength(Result, MAX_PATH); if not SHGetPathFromIDList(ppidl, PChar(Result)) then raise exception.create('SHGetPathFromIDList failed : invalid pidl'); SetLength(Result, lStrLen(PChar(Result))); end; finally if ppidl <> nil then shellMalloc.free(ppidl); end; end;
procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text:=(GetSpecialFolder(CSIDL_DESKTOP)); end; |
Dort komme ich aber eine Ebene zu weit, möchte gern nur im Verzeichnis des Users stehen.
Also statt:
"C:\Dokumente und Einstellungen\USER\Dektop"
will ich nur hier hin:
"C:\Dokumente und Einstellungen\USER"
Moderiert von
Christian S.: Quote- durch Delphi-Tags ersetztModeriert von
Christian S.: Topic aus VCL (Visual Component Library) verschoben am Do 30.11.2006 um 11:31
jasocul - Do 30.11.06 12:35
Nimm mal diesen Wert: CSIDL_PERSONAL
del1312 - Do 30.11.06 12:44
nee das hatte ich schon, aber da lande ich im Ordner "Eigene Dateien" soweit will ich ja nicht, danke aber :o)
Christian S. - Do 30.11.06 12:56
Aus der Doku:
Zitat: |
CSIDL_PROFILE (0x0028)Version 5.0. The user's profile folder. A typical path is C:\Documents and Settings\username. Applications should not create files or folders at this level; they should put their data under the locations referred to by CSIDL_APPDATA or CSIDL_LOCAL_APPDATA. |
hansa - Do 30.11.06 13:04
ecspooky hat folgendes geschrieben: |
Dort komme ich aber eine Ebene zu weit |
Und wie kommt man eine Ebene zurück ? :shock: Gehe mal in "ausführen" und gebe ein :
Ihr müßt mal etwas Kreativität mitbringen. :mrgreen: Und dann gebe mal folgendes ein :
Habe mir den Code ehrlich gesagt nicht genau angesehen, aber die Richtung müßte stimmen.
del1312 - Do 30.11.06 13:18
danke das wars: ..._PROFILE
Christian S. - Do 30.11.06 13:20
@Hansa: Man kann den Speicherort für "Eigene Dateien" beliebig festlegen. Meine "Eigenen Dateien" liegen in "D:\Eigene Dateien" und nicht "C:\Dokumente ...". Mit Deiner Methode würde man dann den völlig falschen Ordner bekommen. Ich wäre mir auch nicht sicher, ob die Ordnerstruktur in Vista genauso ist wie in XP. Daher ist der Weg über die entsprechenden Windows-Funktionen IMHO sicherer.
hansa - Do 30.11.06 13:28
Der Ordner ist schlichtweg uninteressant. Es geht um "eine Ebene zurück" und das wird auch unter Vista "Ordner\.." sein. 8)
Christian S. - Do 30.11.06 13:34
hansa hat folgendes geschrieben: |
Der Ordner ist schlichtweg uninteressant. |
Du hast völlig recht. Wenn ich einen bestimmten Ordner ermitteln will, ist der Ordner völlig uninteressant :roll:
hansa - Do 30.11.06 13:40
Christian S. hat folgendes geschrieben: |
Wenn ich einen bestimmten Ordner ermitteln will, ist der Ordner völlig uninteressant :roll: |
Christian, das da ist eines Physikers unwürdig. :mrgreen: Die Vorgehensweise ist lediglich : 1. man suche einen gegebenen Ordner. Wie ist egal. Der muß eben gefunden sein. 2. man gehe eine Verzeichnisstruktur-Ebene zurück.
Christian S. - Do 30.11.06 13:43
hansa hat folgendes geschrieben: |
Christian, das da ist eines Physikers unwürdig. :mrgreen: |
Und Dein Vorgehen eines Programmierers 8)
hansa hat folgendes geschrieben: |
Die Vorgehensweise ist lediglich : 1. man suche einen gegebenen Ordner. Wie ist egal. Der muß eben gefunden sein. 2. man gehe eine Verzeichnisstruktur-Ebene zurück. |
Und genau dieses Vorgehen ist bei obigem Problem nach hardcoden der Strings das wohl unbrauchbarste Vorgehen!
hansa - Do 30.11.06 13:52
Muß ich mich jetzt noch auf Diskussionen einlassen ? :D
Christian S. hat folgendes geschrieben: |
Und Dein Vorgehen eines Programmierers 8) |
Siehe mein Beispiel %homepath%. Was ist da jetzt hardcoded ? Das \.. ? :shock: Ist das Ganze mit %XXX% nicht vom Betriebssystem zu erhalten, dann müßte man es aber tatsächlich wohl hardcoden oder eben eine eigene Umgebebungsvariable einführen.
del1312 - Do 30.11.06 14:09
hey leute kein streit, ich danke euch für die tipps, hab das mit dem ..._PROFILE genommen und finde den weg auch am besten :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!