Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

DlgDirList   Найти похожие ветки 

 
alexa   (2005-09-08 22:39) [0]

Не получается верно задать путь к директории, при использовании этой функции ( Описание:
function DlgDirList(Dlg: HWnd; PathSpec: PChar; IDListBox, IDStaticPath: Integer; FileType: Word): Integer;

Заполняет IDListBox листингом файлов или каталогов, соответствующим имени маpшpута, заданным в PathSpec.

    Паpаметpы:
Dlg: Блок диалога, содеpжащий IDListBox.

PathSpec: Стpока имени маpшpута (заканчивающаяся пустым символом).

IDListBox: Идентификатоp оpгана упpавления блока списка.

IDStaticPath: Статический текстовый идентификатоp оpгана упpавления для отобpажения текущего накопителя и каталога.

    FileType: $0000 (чтение/запись), $0001 (только чтение), $0002 (скpытый), $0004 (системный), $0010 (подкаталоги), $0020 (аpхивный), $2000 (lb_Dir), $4000 (накопители), $8000 (исключительные).

    Возвpащаемое значение:
Не нуль, если листинг получен; нуль - в случае невеpного маpшpута поиска.)

Uses shellapi
begin
DlgDirList(handle,pchar("c:/*"),listBox1.Handle,0, DDL_DIRECTORY or DDL_ARCHIVE);
End;
Такой вариант не работает
___________________________________________________________________________

Uses shellapi;
Var p:^pchar;
Begin
getmem(p,300);
p^:="c:/*";
DlgDirList(handle, p^,listBox1.Handle,0, DDL_DIRECTORY or DDL_ARCHIVE);
End;
Такой тоже
___________________________________________________________________________
Uses shellapi
begin
DlgDirList(handle,0,listBox1.Handle,0, DDL_DIRECTORY or DDL_ARCHIVE);
End;
А здесь
Показывает текущий диалог
___________________________________________________________________________

Вот так тоже работает, но с использованием sendmessage.
var
 Mask: string;
 c:integer;
begin
 Mask := "c:\*";
 SendMessage(ListBox1.Handle, LB_DIR, DDL_ARCHIVE or
   DDL_DIRECTORY or DDL_DRIVES or DDL_HIDDEN or DDL_READONLY or
   DDL_READWRITE or DDL_SYSTEM, Integer(@Mask[1]));
end;
_________________________________________________________________

Скажите, пожалуйста,как правильно задать путь.
Заранее спапсибо.


 
alexa   (2005-09-09 20:48) [1]

Что никто не знает?


 
begin...end ©   (2005-09-09 21:29) [2]


> alexa   (08.09.05 22:39)
> Скажите, пожалуйста,как правильно задать путь.

Путь задать так: "C:\" или так: "C:\*".

Я чего понять не могу: почему в DlgDirList на место ресурсных идентификаторов подставляются хэндлы контролов?


 
MBo ©   (2005-09-09 21:38) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
 Pth:array[0..MAX_PATH] of Char;
begin
 Pth:="C:\*.*";
 DlgDirList(Handle,Pth,ListBox1.Handle,0,DDL_DIRECTORY or DDL_ARCHIVE);
end;


 
MBo ©   (2005-09-09 21:42) [4]

P.S.
Первый вариант не работает из-за использования константной строки там, где нужна позволяюшая модификацию, а второй, возможно - из-за извращений с памятью


 
begin...end ©   (2005-09-09 21:50) [5]

Сорри, фигню сморозил в [2].


 
alexa   (2005-09-09 22:00) [6]

Спасибо, я второй вариант пробовал, но вместо Char написал PChar случайно.
 Все правильно, там должна выделяться память под путь к файлу, поэтому обычная строка не работает.



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
5-1108464410
sau
2005-02-15 13:46
2005.11.13
TreeView и ActiveX


2-1129770852
Gale
2005-10-20 05:14
2005.11.13
Быстрая функция Pos не чувствительная к регистру ?


8-1119478025
Strech
2005-06-23 02:07
2005.11.13
масштабирование изображений


4-1126611784
S@shka
2005-09-13 15:43
2005.11.13
Как заставить Windows не подключать мышь на Com-порте


2-1129523457
bogdan
2005-10-17 08:30
2005.11.13
Задача по геометрии