AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi fehlende Konstanten in der Unit SHLOBJ.PAS
Thema durchsuchen
Ansicht
Themen-Optionen

fehlende Konstanten in der Unit SHLOBJ.PAS

Ein Thema von markus5766h · begonnen am 23. Mai 2009 · letzter Beitrag vom 23. Mai 2009
Antwort Antwort
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#1

fehlende Konstanten in der Unit SHLOBJ.PAS

  Alt 23. Mai 2009, 14:45
Hallo,

im Folgenden einige Konstanten, die in der Unit ShlObj.pas nicht definiert sind :

Delphi-Quellcode:

implementation

{$R *.dfm}
uses ShlObj;

Const
 CSIDL_CURR_MUSIK = $000D; // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Musik
 CSIDL_CURR_VIDEO = $000E; // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Videos
 CSIDL_LOCAL_APPDATA = $001C; // Dokumente und Einstellungen\[CurrentUser]\Anwendungsdaten
 CSIDL_COMMON_APPDATA = $0023; // Dokumente und Einstellungen\AllUsers\Anwendungsdaten
 CSIDL_WINDOWS = $0024; // Windows-Verzeichnis
 CSIDL_SYSTEM = $0025; // Windows\System32-Verzeichnis
 CSIDL_PROGRAMS_FIRST = $0026; // Programmverzeichnis der ersten(!!!) Windows-Partition,
                                           // muss nicht die aktuelle Partition sein
 CSIDL_CURR_PICTURES = $0027; // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Bilder
 CSIDL_CURRUSER = $0028; // Dokumente und Einstellungen\[CurrentUser]
 CSIDL_SYSTEM2 = $0029; // Windows\System32-Verzeichnis
 CSIDL_SHARED_FILES = $002B; // Programme\Gemeinsame Dateien
 CSIDL_COMMON_TEMPLATES = $002D; // Dokumente und Einstellungen\All Users\Vorlagen
 CSIDL_COMMON_DOKUMENTS = $002E; // Dokumente und Einstellungen\All Users\Dokumente
 CSIDL_COMMON_MANAGEMENT = $002F; // Dokumente und Einstellungen\All Users\Startmenü\Programme\Verwaltung
 CSIDL_CURR_MANAGEMENT = $0030; // Dokumente und Einstellungen\[CurrentUser]\Startmenü\Programme\Verwaltung
 CSIDL_COMMON_MUSIK = $0035; // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Musik
 CSIDL_COMMON_PICTURES = $0036; // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Bilder
 CSIDL_COMMON_VIDEO = $0037; // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Videos
 CSIDL_RESOURCES = $0038; // Windows\Resources
 CSIDL_RESOURCES_C_SPEC = $0039; // Windows\Resources\0407
 CSIDL_WINBURNING = $003B; // [microsoft brennerverzeichnis >cd burning<]

function GetSpecialFolder (aFolder: Integer): String;
var
  pIdL: PItemIDList;
  Path: Array [0..Max_Path] Of Char;
  Allocator: IMalloc;
begin
  // ItemIdList für den Ordner holen
  SHGetSpecialFolderLocation (0, aFolder, pIdL);

  // ItemIdList in String umwandeln lassen
  SHGetPathFromIDList (pIDL, Path);

  // Speicher wieder freigeben
  if Succeeded (SHGetMalloc (Allocator)) then
    begin
      Allocator.Free (pIdL);
      {$IFDEF VER100}
      Allocator.Release;
      {$ENDIF}
    end;

  Result := Path;
end;
Markus H.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: fehlende Konstanten in der Unit SHLOBJ.PAS

  Alt 23. Mai 2009, 14:47
Auch mal in die SHFolder.pas geschaut?
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#3

Re: fehlende Konstanten in der Unit SHLOBJ.PAS

  Alt 23. Mai 2009, 14:55
.. jo
bei mir sind diese Konstanten nicht(!) definiert
soll heißen: nicht alle
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: fehlende Konstanten in der Unit SHLOBJ.PAS

  Alt 23. Mai 2009, 14:56
Hallo

Anstatt eigene Konstantennamen würde ich die in Shlobj.h deklarierten verwenden. (Siehe msdn). Siehe auch unit ShellFolder;

@Muetze1: Bei älteren Delphi Versionen sind noch nicht alle Konstanten vorhanden. Bei D6, z.B. fehlt CSIDL_MYMUSIC etc.
Thomas
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: fehlende Konstanten in der Unit SHLOBJ.PAS

  Alt 23. Mai 2009, 16:14
Moin Zusammen,

Zitat von toms:
@Muetze1: Bei älteren Delphi Versionen sind noch nicht alle Konstanten vorhanden. Bei D6, z.B. fehlt CSIDL_MYMUSIC etc.
weswegen man auch immer ein, möglichst, frisches PSDK incl. der Header-Dateien zur Hand haben sollte
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: fehlende Konstanten in der Unit SHLOBJ.PAS

  Alt 23. Mai 2009, 18:29
Zitat von Christian Seehase:
weswegen man auch immer ein, möglichst, frisches PSDK incl. der Header-Dateien zur Hand haben sollte
Das hat mich gerade zu folgender Idee gebracht:
Eine Typelibrary kann ja unter anderem Konstanten, Enums, Records, Unions und Funktionsaufrufe für DLLs deklarieren.
Man könnte also die ganze Windows API in einer (oder mehreren) Typelibrary ablegen.
Keine Programmiersprache müsste sich mit den Headerfiles des PSDK auseinandersetzen, sondern nur die aktuellste TLB der Windows API importieren.
Selbst Kommentare und kontextsensitive zu jeder Funktion, Konstante,... wäre mit der TLB möglich.
Auch ältere Versionen wie D5, D6, D7 kämen so in der Genuss, auf wirklich alle Funktionen der Windows API zugreifen zu können.

Aber das wird wohl nur ein Wunschtraum bleiben...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz