Okno wyboru folderu

0

Mam kodzik wywołujący okno 'W poszukiwaniu folderu';

var 
    BI:TBrowseInfo;
    Buf:PChar;
    Dirs,Root:PItemIDList;
    Alloc:IMalloc;
    _dir: string;
begin
 SHGetMalloc(Alloc);
 Buf:=Alloc.Alloc(Max_Path);
 SHGetSpecialFolderLocation(Handle,CSIDL_DRIVERS,Root);
 with BI do
 begin
  hwndOwner:= Handle;
  pidlRoot:=Root; 
  pszDisplayName:=Buf;
  lpszTitle:='Wybierz katalog';
  ulFlags:=0;
  lpfn:=nil;
 end;

 try
  Dirs:=SHBrowseForFolder(BI);
  if Dir<>Nil then
  begin
   SHGetPathFromIDList(Dirs ,Buf);
   _dir := Buf;
   Alloc.Free(Dir);
  end;
 finally
  Alloc.Free(Root);
  Alloc.Free(Buf);
 end;

no i potem wykonuję jakies tam operacje na plikach z katalogu _dir, tylko że jesli użytkownik w oknie wyboru folderu kliknie 'Anuluj' to mimo to program i tak cche wykonywac operacje na pliach i wywala mi błąd. Zaznaczam ze cos takiego jak

if _dir = '' then

nie działa. Jak to zrobić żeby oprogramowac moment gdy kliknie się Anuluj.

0

Nie mam pod reka delphi...
czy dziala:

If not SHGetSpecialFolderLocation(...) then Exit;

??

0

Z helpa:
If the user chooses the Cancel button in the dialog box, the return value is NULL.

Masz w kodzie błąd - zamiast dirs jest dir
...

 Dirs:=SHBrowseForFolder(BI);
 if Dirs<>nil then
 begin

...

1 użytkowników online, w tym zalogowanych: 0, gości: 1