Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 14.04.12 18:21 
Hallo,
bei einer langen Suche im Forum habe ich eine Vielzahl von Beiträgen zum Problem Anwenderverzeichnis gefunden.
Besonders interessant finde ich
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  pIdL: PItemIDList;
  Path: Array [0..Max_Path] Of Char;
Begin
  // ItemIdList für den Favorites Ordner holen
  SHGetSpecialFolderLocation (0, CSIDL_APPDATA, pIdL);
  // ItemIdList in String umwandeln lassen
  SHGetPathFromIDList (pIDL, Path);
  // String (Verzeichnis) in Messagebox anzeigen lassen
  MessageDlg (Path, mtInformation, [mbOK], 0);
end;

da dort kein(!) ActiveX verwendet wird und ich auch gern auf ActiveX verzichten möchte.
Allerdings habe ich gelesen, dass SHGetPathFromIDList Speicherplatz reserviert, der nicht automatisch freigegeben wird. Weiß jemand, wie ich den Speicher freigeben kann?

Beste Grüße
Mathematiker

Moderiert von user profile iconNarses: 2. Frage entfernt.
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mo 16.04.12 09:57 
Hallo,
es tut mir leid, dass ich nerve. 40 Leute haben bisher meine Anfrage angesehen und leider keine Antwort.
Wenn die Frage wirklich zu dämlich :bawling: ist, dann sagt es mir bitte.
Beste Grüße
Mathematiker
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 16.04.12 10:16 
Moin!

user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Wenn die Frage wirklich zu dämlich :bawling: ist, dann sagt es mir bitte.
Schonmal von der MSDN-Library gehört? :zwinker:

Wie hier nachzulesen ist, ist die Funktion SHGetSpecialFolderLocation() veraltet und sollte durch SHGetFolderLocation() ersetzt werden. Weiterhin ist hier der Grund für das "Speicher-Problem":
MSDN-Library hat folgendes geschrieben:
A PIDL specifying the folder's location relative to the root of the namespace (the desktop). It is the responsibility of the calling application to free the returned IDList by using [url=msdn.microsoft.com/e...CoTaskMemFree[/url].
Folglich ist es nicht unbedingt nötig, in Delphi die ActiveX-Unit einzubinden, aber die meisten werden zu faul gewesen sein, diese Funktion selbst nochmal zu kapseln, da sie dort (vermutlich?) schon drin ist. :nixweiss: Das ändert aber nix an der Eigentümerschaft an dem Speicher, du musst also auf jeden Fall selbst freigeben. :idea:

Ich habe diese ganze Problematik jetzt nicht im Detail untersucht, sondern lediglich den Einstieg in die Doku gesucht. ;) Für weitere Details bitte selbst :les: .

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: Mathematiker