Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Array of PIDL zusammenbauen ?? (https://www.delphipraxis.net/29005-array-pidl-zusammenbauen.html)

sieppl 2. Sep 2004 13:53


Array of PIDL zusammenbauen ??
 
Hallo,

viele IShellFolder-Befehle erwarten einen Array of PIDL:

Zitat:

apidl
[in] Address of an array of pointers to ITEMIDLIST structures, each of which uniquely identifies a file object or subfolder relative to the parent folder. Each item identifier list must contain exactly one SHITEMID structure followed by a terminating zero.
Ich habe ein bisschen herumprobiert, habe aber leider den Array nicht zusammenbauen können. Es sollte auch so sein, dass er zur Laufzeit mitwächst, da zum Zeitpunkt der Erstellung des Array die Anzahl der enthaltenden PIDLs nicht feststeht.
Kann doch nicht so schwer sein, oder?

sieppl 4. Sep 2004 09:15

Re: Array of PIDL zusammenbauen ??
 
manachmal ist die unterstützung im forum wirklich entäuschend. Es hat etwas länger gedauert, aber so eine einfache lösung mal gerade zu posten wäre nicht viel arbeit gewesen:
Delphi-Quellcode:
//zunächst den array deklarieren
APidl: array of PItemIDlist;

//den dynamischen array füllen

SetLength(APidl, Length(APidl)+1);
APidl[High(APidl)] := PIDL; //irgendeine PItemIDList

//Jetzt zum Beispiel dem GetUIObjectOf-Befehl den Array übergeben
//wichtig ist nur das man das 'nullte' Element als StartAdresse übergibt..

IShellFolder.GetUIObjectOf(handle,Length(APidl),APIdl[0], ...

//zum schluss die PIDLs aus dem Array wieder freigeben
//..habe ich mal über eine For-Schleife gemacht

for I := 0 to Length(APidl)-1 do
  Allocator.Free(APidl[I]); //Allocator ist ein IMalloc..
Ich hoffe ich werde jemanden helfen, der irgendwann vor dem gleichen Problem steht. Das sieht jetzt zwar trivial aus, aber man muss erstmal aus der MSDN-Beschreibung schlau werden.. :nerd:

Grüße

Sebastian


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 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