Ребят задача требует получить информацию об объекте файловой системы : файле, папке, диске. Для этого использую функцию SHGetFileInfoW - в хидере описание данной функции выглядит так :
SHSTDAPI_(DWORD_PTR) SHGetFileInfoA(LPCSTR pszPath,
DWORD dwFileAttributes,
__inout_bcount_opt(cbFileInfo) SHFILEINFOA *psfi,
UINT cbFileInfo, UINT uFlags);
SHSTDAPI_(DWORD_PTR) SHGetFileInfoW(LPCWSTR pszPath,
DWORD dwFileAttributes,
__inout_bcount_opt(cbFileInfo) SHFILEINFOW *psfi,
UINT cbFileInfo, UINT uFlags);
Мой код , который выдает ошибку:
void __fastcall Twindowsnetrepository::FormCreate(TObject *Sender)
{
UINT SysImageList;
TSHFileInfo SFI;
// char patch = '';
ListView1->LargeImages = new TImageList(this);
ListView1->SmallImages = new TImageList(this);
//Запрашиваем большие иконки
// SysImageList = SHGetFileInfo('', 0, &SFI, sizeof(SFI), SHGFI_ICON | SHGFI_SYSICONINDEX | SHGFI_LARGEICON);
if (SysImageList != 0 )
{
//Присваиваем системные иконки в ListViewl
ListView1->LargeImages->Handle = SysImageList;
ListView1->LargeImages->ShareImages = TRUE;
}
//Запрашиваем маленькие иконки
SysImageList = SHGetFileInfoW(' ', 0, &SFI, sizeof(SFI),SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
if (SysImageList != 0)
{
//Присваиваем маленькие системные иконки в ListViewlОбзор дополнительных компонентов Delphi 323
ListView1->SmallImages->Handle = SysImageList;
ListView1->SmallImages->ShareImages = TRUE;
}
}
Компилятор ругается на первый параметр функции SHGetFileInfoW: LPCWSTR pszPath -" Character constant too long (or empty)".
Как видно из сообщения компилятору не нравится "Длинная или пустая константа" - pszPath. Пробовал передавать явно через константу pszPath ,путь к файлу все равно ругается. Подскажите если сталкивались в чем тут загвоздка. Просмотрел исходники трех Filemanager без результатно , ответа на свой вопрос не нашел.