Entwickler-Ecke

Dateizugriff - Systemverzeichnisse ermitteln


IhopeonlyReader - Mo 07.05.12 15:32

Moderiert von user profile iconMartok: Abgetrennt von [url=http://www.delphi-forum.de/viewtopic.php?t=109268]hier[/url]

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
wenn ich jetzt einen Pfad angeben will (mit 'C:\Users\'+GetCurrUserName+'weiterpfad')
Dieser Pfad existiert z.B. auf meinem Rechner nicht und ich wäre auch ziemlich böse, wenn er ungefragt angelegt würde. :|

Ich glaube, du suchst eher sowas hier [http://www.delphi-library.de/viewtopic.php?t=9428&start=0&postorder=asc]? Da könnte man dann z.B. das Anwendungsdatenverzeichnis nehmen und dort einen Ordner für deine Anwendung anlegen und zum Speichern der Daten/Einstellungen verwenden. :les: :idea:


Das Der Pfad bei dir nicht existiert und bei dir nicht angelegt werden soll versteh ich ;)
Ich hatte da bis jetzt eine eigene Unit geschrieben, wo ich das alles selbst ermittel :D
( Erst Nach existierender Festplatte suchen dann wenn exisiert gucken ob Festplatte+'Users' existiert wenn ja dann gib sie aus
Später dann noch benutzernamen einfügen.....
So hatte ich eigentlich die Funktion getSpecialFolder.. Selber geschrieben :D (Auchd ie einzelnen Möglichkeiten wo sich die Einstellungen unter XP / Win7,... befinden) Aber eben nicht für die SPÄTEREN Versionen von windows.. So ist die Fest implementierte von dir Vorgestellte Funktion sehr nützlich und ich kann nur Sagen :wave: DANKE :wave: :)

Mach weiter so Narses ;) Ich habe die GetSpecialfolder Funktion zwar noch nicht getestet, aber das ist genau das was ich suche (und eig schon selber geschrieben hatte^^ Aber 200 Zeilen durch 30 zu ersetzen hat was.. vorallem wenn die 30 genauer/besser sind)

EDIT: Ja, das ist genau das ist das was ich gesucht habe...

Jetzt wäre aber noch eine Konstantenliste sehr nützlich, da die CSIDL Konstanten nicht funktionieren...

einige habe ich durch TESTEN herausgefunden (Showmessage und Edit feld und dann druchprobieren^^):

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:
27:
28:
29:
30:
31:
  $001A    //Appdata\Roaming
  $001C    //Appdata\LocalRoaming\Startmenu\Programs\Startup
  $001C    //C:\Users\Benutzername\AppData\Local
  $001D    //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  $001E    //C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
  $001F    //C:\Users\Benutzername\Favorites
  $002A    //C:\Program Files (x86)
  $002B    //C:\Program Files (x86)\Common Files
  $002D    //C:\ProgramData\Microsoft\Windows\Templates
  $002E    //C:\Users\Public\Documents
  $002F    //C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
  $003B    //C:\Users\Benutzername\AppData\Local\Microsoft\Windows\Burn\Burn
  $005     //C:\Users\Benutzername\Picasa Bilder\Documents
  $006     //C:\Users\Benutzername\Favorites
  $007     //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
  $008     //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Recent
  $009     //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\SendTo
  $0010    //C:\Users\Benutzername\Desktop
  $0013    //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Network Shortcuts
  $0014    //C:\Windows\Fonts
  $0015    //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Templates
  $0016    //C:\ProgramData\Microsoft\Windows\Start Menu
  $0017    //C:\ProgramData\Microsoft\Windows\Start Menu\Programs
  $0018    //C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
  $0019    //C:\Users\Public\Desktop
  $0020    //C:\Users\Benutzername\AppData\Local\Microsoft\Windows\Temporary Internet Files
  $0021    //C:\Users\Benutzername\AppData\Roaming\Microsoft\Windows\Cookies
  $0022    //C:\Users\Benutzername\AppData\Local\Microsoft\Windows\History
  $0023    //C:\ProgramData
  $0024    //C:\Windows
  $0025    //C:\Windows\System32


Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt

Moderiert von user profile iconNarses: Beiträge zusammengefasst

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
[ Jetzt wäre aber noch eine Konstantenliste sehr nützlich, da die CSIDL Konstanten nicht funktionieren...


Hat jemand ne Konstantenliste für mich? Also sowas wie ich mir selbsterstellt hab? nur halt bitte in Ausführlich^^


Martok - Mo 07.05.12 21:19

Wie wäre es mit lesen? In user profile iconNarses' Tutorial steht drin, wo die Konstanten definiert sind. Alternativ MSDN [http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx].


IhopeonlyReader - Mo 07.05.12 22:09

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit lesen? In user profile iconNarses' Tutorial steht drin, wo die Konstanten definiert sind. Alternativ [url=http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx]MSDN[/url].


Wie gesagt, die die csidl klappen nicht , obwohl ActiveX und shlobj als Unit eingebunden sind.. Und bitte nicht gleich abfällig werden, vorallem wenn du es selbst nicht besser machst ;)


Martok - Di 08.05.12 01:26

Du hast geschrieben, "die Konstanten funktionieren nicht". Konstanten können nicht nicht funktionieren, da hab ich das wohl einfach ignoriert ;)

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
vorallem wenn du es selbst nicht besser machst ;)
Funktioniert denn das im Anhang? Sollte es jedenfalls. Zumal dein Profil sagt D7, das habe ich auch.


Andreas L. - Di 08.05.12 02:13

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit lesen? In user profile iconNarses' Tutorial steht drin, wo die Konstanten definiert sind. Alternativ [url=http://msdn.microsoft.com/en-us/library/windows/desktop/bb762494%28v=vs.85%29.aspx]MSDN[/url].


Wie gesagt, die die csidl klappen nicht , obwohl ActiveX und shlobj als Unit eingebunden sind.. Und bitte nicht gleich abfällig werden, vorallem wenn du es selbst nicht besser machst ;)


Geht es wenn du die Unit Windows einbindest?


IhopeonlyReader - Di 08.05.12 13:35

user profile iconAndreas L. hat folgendes geschrieben Zum zitierten Posting springen:


Geht es wenn du die Unit Windows einbindest?


Ist eingebunden und klappt leider nicht :(


Delete - Di 08.05.12 13:46

Und spätestens jetzt wäre es wahnsinnig interessant, was "klappt nicht" konkret bedeutet.


IhopeonlyReader - Di 08.05.12 18:25

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Und spätestens jetzt wäre es wahnsinnig interessant, was "klappt nicht" konkret bedeutet.


Undefiert, also z.B. CSIDL_APPDATA wurde als UNDEFINIERT angegeben, nach Setzen von ShlObj ans Ende bei Units (vorher wars am Anfang) klappts komischer Weise.. weiß allerdings nicht woran das liegt (
Vorher

Delphi-Quelltext
1:
2:
3:
  ShlObj, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ShellApi, Buttons, MPlayer, MMSystem,
  ComCtrls, Mask;


Jetzt:


Delphi-Quelltext
1:
2:
3:
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ShellApi, Buttons, MPlayer, MMSystem,
  ComCtrls, Mask, ShlObj;


Naja Danke :) Das Problem lag also an mir ;) (Auch wenn ich nicht wusste, dass die Reihenfolge eine Rolle spielt *Neulern)


jaenicke - Di 08.05.12 19:56

Du musst z.B. bei Verwendung von TBitmap auch die Unit Windows vor der Unit Graphics haben (oder die Unit jeweils davor schreiben, was aber auch wieder Probleme machen kann). Deshalb sollte man einfach die bei neuen Formularen vorgegebene Reihenfolge beibehalten und neue Units ans Ende schreiben. ;-)