Главная страница
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.042 c
2-1129802515
Андрей__
2005-10-20 14:01
2005.11.13
DBLookUpComboBox


14-1129818458
Santrope
2005-10-20 18:27
2005.11.13
Установка Консультатнт Плюс. Нужна помощь.


6-1122897901
Dr.Nemo
2005-08-01 16:05
2005.11.13
Чат на DELPHI при помощи арены на php


2-1129547718
Parth
2005-10-17 15:15
2005.11.13
Консольное приложение: иероглифы


3-1128406913
sergling
2005-10-04 10:21
2005.11.13
При переносе сервера interbase перестали открывать некоторые табл