Форум: "WinAPI";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Вниз
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c