AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit SHGetKnownFolderPath

Ein Thema von Andidreas · begonnen am 22. Nov 2013 · letzter Beitrag vom 25. Nov 2013
 
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Probleme mit SHGetKnownFolderPath

  Alt 22. Nov 2013, 10:20
Delphi-Version: XE
Hallo zusammen,

ich habe mir vor einiger Zeit eine Funktion gebastelt über die ich unter Windows 7 die Standard Pfade von Windows auslesen kann:

Delphi-Quellcode:

  //Constants
  const
    FOLDERID_Desktop: KNOWNFOLDERID = '{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}'; //CSIDL_DESKTOPDIRECTORY
    FOLDERID_LocalAppData: KNOWNFOLDERID = '{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}'; //CSIDL_LOCAL_APPDATA
    FOLDERID_ProgramData: KNOWNFOLDERID = '{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}'; //CSIDL_COMMON_APPDATA
    FOLDERID_PuplicDesktop: KNOWNFOLDERID = '{C4AA340D-F20F-4863-AFEF-F87EF2E6BA25}'; //CSIDL_COMMON_DESKTOPDIRECTORY
    FOLDERID_Fonts: KNOWNFOLDERID = '{FD228CB7-AE11-4AE3-864C-16F3910AB8FE}'; //CSIDL_FONTS


//******************************************************************************
// fnGetKnownFolderPath --> Get Constant Special Item ID Path from Windows *
// *
// Only for WIN 7 *
// WIN XP has to use fnGetShellFolder in this Unit *
// *
// Parameter --> iCSIDL (Constant Special Item ID) *
// Return --> Boolean True/False *
//******************************************************************************

function fnGetKnownFolderPath(sKnownFolderID : String) : String;

var
sPath : LPWSTR;

begin

  //Set Result
  Result := EmptyStr;

  {$IFDEF VER220}
  If sKnownFolderID = 'FOLDERID_Desktop'        Then SHGetKnownFolderPath(FOLDERID_Desktop,0, 0, sPath);
  If sKnownFolderID = 'FOLDERID_LocalAppData'   Then SHGetKnownFolderPath(FOLDERID_LocalAppData,0, 0, sPath);
  If sKnownFolderID = 'FOLDERID_ProgramData'    Then SHGetKnownFolderPath(FOLDERID_ProgramData,0, 0, sPath);
  If sKnownFolderID = 'FOLDERID_PuplicDesktop'  Then SHGetKnownFolderPath(FOLDERID_PuplicDesktop,0, 0, sPath);
  If sKnownFolderID = 'FOLDERID_Fonts'          Then SHGetKnownFolderPath(FOLDERID_Fonts,0, 0, sPath);
  {$ENDIF}

  //Set Result
  Result := sPath;

end;
Nun hab ich mit der Funktion das folgende Problem...

Wir haben ein Hauptprogramm was das UI darstellt...
Über das UI kann der User diverse Module aufrufen die in DLLs ausgelagert sind (die DLLs werden dynamisch gelinkt)...

Rufe ich die Funktion im Hauptprogramm auf, habe ich kein Problem...
Rufe ich die Funktion aber in einer DLL auf bekomme ich einen Runtime Error 216...

Woran kann das liegen? Ist in der Funktion was falsch Programmiert?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
 


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 20:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz