• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Запись файлов в 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);
В чем ошибка?
 
Ну у меня твой код не компиляется ...

Вот на выбор тебе два варианта на чистом 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:\*.*')));
 
На чистом AIP ,Form1.Handle не покатит, компилятор ругается на .Handle
 
Ага... тут я не подумал ... тогда расскажи полнее что ты делаеш ?

Кто такой твой LSB1 ? Я просто резонно предположил что это TListBox... если нет то раскажи подробнее
 
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);
 
GetMem - не освобождает .. а выделяет ...

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

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

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

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab