Запись файлов в ListBox

  • Автор темы Sadman701
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sadman701

Гость
#1
Делаю так:
var
PC:Char
IDDtex,IDC_STATIC1: Integer;
************************************************************
begin
GetMem(PC, 100);
GetDlgItemText(LSB1, IDDtex, PC, 100);
DlgDirList(LSB1,Pchar('C:\'),GetDlgCtrlID(LSB1),GetDlgCtrlID(IDDtex), faAnyFile);
FreeMem(PC);
В чем ошибка?
 
B

Barmutik

Гость
#2
Ну у меня твой код не компиляется ...

Вот на выбор тебе два варианта на чистом API:

Код:
var
APath: PChar;
begin
APath := StrAlloc(100);
APath := 'C:\*.*';
DlgDirList(Form1.Handle, APath, LSB1.Handle, 0, DDL_READWRITE or DDL_DIRECTORY);
StrDispose(APath);
end;
или совсем просто

Код:
SendMessage(LSB1.Handle, LB_DIR, DDL_READWRITE + DDL_DIRECTORY, Integer(PChar('c:\*.*')));
 
S

Sadman701

Гость
#3
На чистом AIP ,Form1.Handle не покатит, компилятор ругается на .Handle
 
B

Barmutik

Гость
#4
Ага... тут я не подумал ... тогда расскажи полнее что ты делаеш ?

Кто такой твой LSB1 ? Я просто резонно предположил что это TListBox... если нет то раскажи подробнее
 
S

Sadman701

Гость
#5
GetMem(PC, 100);- освобождает память под PC;
GetDlgItemText(LSB1, IDDtex, PC, 100); - Считывает текст оpгана упpавления в IDDtex
DlgDirList(
LSB1, - хэндл лист бокса
Pchar('C:\'), - директория
GetDlgCtrlID(LSB1),- возвращает идентификатоp оpгана упpавления блока списка
GetDlgCtrlID(IDDtex), - возвращает статический текстовый идентификатоp оpгана упpавления
faAnyFile, - тип файла
);
FreeMem(PC);
 
B

Barmutik

Гость
#6
GetMem - не освобождает .. а выделяет ...

Но я не про это .. Откуда ты берёш LSB1? Почитай внимательно описание функции... в смысле что передаётся каким параметром .. почему ты первым передёш хэндл листбокса? Должен был хэндл диалога Вот вторых вторым параметром должна передоваться переменная .. т.к данная функция изменяет её.. почитай опять же хелп... Третьим параметром просто хэндл листбокса куда, четвёртым хэндл статического контрола .. если 0 то не учитывается.

И в конце что за faAnyFile ? Почитай набор возможных парметров которые передаётся последним параметром!

Ну так и напиши тогда так ...

Код:
DlgDirList(???, APath, LSB1, 0, DDL_READWRITE or DDL_DIRECTORY);

Где ??? - хэндл диалога где лежит твой листбокс
 
Статус
Закрыто для дальнейших ответов.