Главная страница
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.024 c
14-1129812134
TButton
2005-10-20 16:42
2005.11.13
притёр


4-1126446322
Still Swamp
2005-09-11 17:45
2005.11.13
Нужен счетчик времени... что ли?


3-1127998807
Deks
2005-09-29 17:00
2005.11.13
Связанные таблицы


1-1130138943
td
2005-10-24 11:29
2005.11.13
только цифры в поле


14-1129729148
oldman
2005-10-19 17:39
2005.11.13
Это форум глючит, или мой комп?