Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 69
1

Как узнать размер файла, к которому обращаются через OpenDialog?

12.09.2011, 10:12. Просмотров 4090. Ответов 9
Метки нет (Все метки)


Подскажите, как узнать размер файла, к которому обращаюсь через OpenDialog.
Если задано имя файла в явном виде, то
C++
1
2
3
LPCSTR zzz="c:\\123.txt";
FileHandl=CreateFileA(zzz, Generic_Read, ...);
n=GetFileSize(FileHandl, NULL);
все работает.
Если вместо zzz подставляю OpenDialog->FileName
то не работает.
Как узнать хэндл OpenDialog->FileName?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2011, 10:12
Ответы с готовыми решениями:

Узнать размер файла на удалённом хосте через powershell
Добрый бодрый! Есть необходимость узнать размер файла на удаленном хосте. Есть строка ...

Как записать данные в StringGrid через OpenDialog из файла?
Доброго времени суток! Как записать данные в StringGrid через OpenDialog из файла? Есть кнопка...

Как узнать размер файла
Как узнать размер файла в GB и MB? Добавлено через 2 часа 15 минут Понятно, всем спасибо что...

Как узнать размер файла?
Здравствуйте,нашел такой код только он чёт не правельно работает, подскажите пожалуйста If...

9
Заблокирован
Автор FAQ
12.09.2011, 13:06 2
Цитата Сообщение от Алексей_С Посмотреть сообщение
OpenDialog->FileName
попробуй OpenDialog->m_ofn.lpstrFile
или же OpenDialog->GetFolderPath() + OpenDialog->GetFileName()
GetFileName на сколько помню содержит лишь название файла и расширение...
1
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 69
12.09.2011, 23:55  [ТС] 3
Спасибо за ответ. Не помогает.
0
Заблокирован
Автор FAQ
13.09.2011, 09:11 4
Цитата Сообщение от Алексей_С Посмотреть сообщение
Спасибо за ответ. Не помогает.
Хмм, грешу на то что не совсем те что надо параметры в CreateFile передаёшь
Цитата Сообщение от Алексей_С Посмотреть сообщение
CreateFileA(zzz, Generic_Read, ...)
Привожу кусок из своей программы, код 100% работоспособный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
WIN32_FIND_DATA * CStorage::MkPathList(LPCTSTR szPath)
{
    WIN32_FIND_DATA pFILE_DATA;ULONG uIND = nStgElm; 
    pDATA[nStgElm].dwFileAttributes = GetFileAttributes(szPath);
    pDATA[nStgElm].dwReserved1      = iINDENT;
    HANDLE hFile = CreateFile(
        strcpy(pDATA[nStgElm].cFileName,szPath), 
            GENERIC_READ,
            FILE_SHARE_READ,
            NULL, 
            OPEN_EXISTING, 
            FILE_ATTRIBUTE_NORMAL,
            NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {
        uStgLen += (pDATA[nStgElm].nFileSizeLow = GetFileSize(hFile,NULL));
        CloseHandle(hFile);
    }
//...
Вот список атрибутов CreateFile
C++
1
2
3
4
5
6
7
8
CreateFile(
        strcpy(pDATA[nStgElm].cFileName,szPath), 
            GENERIC_READ,
            FILE_SHARE_READ,
            NULL, 
            OPEN_EXISTING, 
            FILE_ATTRIBUTE_NORMAL,
            NULL);
Размер файла получаю GetFileSize(hFile,NULL)
1
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 69
13.09.2011, 22:42  [ТС] 5
Размер файла я тоже получаю GetFileSize(hFile,NULL).
Весь вопрос, как получить hFile!
Если задать в явном виде исследуемый файл
LPCSTR zzz="c:\\123.txt";
то
hFile=CreateFileA(zzz, Generic_Read, ...);
это работает.
А если выбирать файл вручную после активации openFileDialog,
то выбранный файл openFileDialog->FileName имеет тип String^ и не получается преобразовать его в тип LPCSTR.
Пробовал
1) zzz=openFileDialog1->FileName;
2) zzz=Convert::ToChar(openFileDialog1->FileName);
3) strcpy(zzz,openFileDialog1->FileName);
4) zzz=reinterpret_cast<LPCSTR>(openFileDialog1->FileName);
УВЫ, не помогает.
0
Заблокирован
Автор FAQ
14.09.2011, 21:38 6
OpenDialog->m_ofn.lpstrFile,пробовал-это прямой доступ к полям файлового диалога
1
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 69
15.09.2011, 09:06  [ТС] 7
1>c:\analyz'ator\analyz'ator\Form333.h(2023): error C2039: m_ofn: не является членом "System::Windows::Forms::OpenFileDialog"
0
Заблокирован
Автор FAQ
15.09.2011, 09:34 8
Алексей_С, я понял в чём проблемма я говорил об MFC-ном CFileDialog (не о System.Windows.Forms), теперь то понял что о немного разных FileDialog говорим
в любом случае список аргументов позволяет получать хендл, туда нужно полный путь вбивать
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
CreateFile(
* * * * * * * * strcpy(pDATA[nStgElm].cFileName,szPath),
* * * * * * * * * * * * GENERIC_READ,
* * * * * * * * * * * * FILE_SHARE_READ,
* * * * * * * * * * * * NULL,
* * * * * * * * * * * * OPEN_EXISTING,
* * * * * * * * * * * * FILE_ATTRIBUTE_NORMAL,
* * * * * * * * * * * * NULL);
проблемма в только в первом параметре CreateFile -
Цитата Сообщение от Алексей_С Посмотреть сообщение
OpenDialog->FileName
- она полный путь к файлу возвращает, думаю нет вот что в MSDN-е написано (http://msdn.microsoft.com/en-u... log.aspx):

FileName Gets or sets a string containing the file name selected in the file dialog box.
(Inherited from FileDialog.)
0
932 / 757 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.09.2011, 10:05 9
Алексей_С, а что в CLR не хватает .NET-овских объектов по работе с файловой системой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
   openFileDialog1->Filter   = "Вcе файлы|*.*||";
   openFileDialog1->FileName = "";
 
   openFileDialog1->ShowDialog(this);
   if(openFileDialog1->FileName->Length > 0) {
 
         System::IO::FileInfo^ info = gcnew System::IO::FileInfo(openFileDialog1->FileName);
         // вывести в текстовое поле размер файла
         textBox1->Text =  info->Length.ToString();
   }
}
1
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 69
15.09.2011, 13:05  [ТС] 10
Всем большое спасибо за помощь!
xAtom! Огромное спасибо! Все замечательно заработало!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2011, 13:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как узнать размер файла?
Подскажите, пожалуйста, как узнать размер файла (независимо - Win98 или WinXP, Fat32 или NTFS)?

Как узнать размер файла?
1. как узнать размер файла? 2. OpenDialog1.FileName возвращает путь к файлу а как узнать только...

Как узнать размер файла?
Можете подсказать, какая функция показывает размер файла?

Как узнать размер файла?
Доброго времени суток!Я задался вопросом как определить размер файла имея путь к нему?нашел в инете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.