AGB  ·  Datenschutz  ·  Impressum  







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

Array of PIDL zusammenbauen ??

Ein Thema von sieppl · begonnen am 2. Sep 2004 · letzter Beitrag vom 4. Sep 2004
Antwort Antwort
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Array of PIDL zusammenbauen ??

  Alt 2. Sep 2004, 14:53
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?
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#2

Re: Array of PIDL zusammenbauen ??

  Alt 4. Sep 2004, 10:15
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..

Grüße

Sebastian
Sebastian
  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 12:30 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