• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Sadman701

Делаю так:
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

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

Вот на выбор тебе два варианта на чистом 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

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

Barmutik

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

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

Sadman701

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

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

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

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

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!