![]() |
Модераторы: MetalFan |
![]() ![]() ![]() |
|
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 3 Всего: 111 |
Хочу сделать проверку файла на корректность при его открытии. Пробовал использовать функцию StgIsStorageFile, но она либо не подходит к файлам xls, либо у меня тоже руки не оттуда...
Но результат функции у меня всегда равен $80030002 (и при открытии doc файлов тоже). Что говорит об ошибке E_NOINTERFACE... Вобщем хотелось бы посмотреть на ваши варианты решения данной проблемы. |
|||
|
||||
Damarus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 1 Всего: 29 |
Нет. $80030002 - это STG_E_FILENOTFOUND:
Ошибка ясно показывает, что файл не найден. |
||||
|
|||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 3 Всего: 111 |
![]() Просто я ориентировался по этой странице: http://msdn.microsoft.com/library/default....5ee4c8ba502.asp Добавлено @ 10:46 Да и к тому же как файл может быть не найден, если excel его открывает корректно. ![]() |
|||
|
||||
Damarus |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 1 Всего: 29 |
Ну правильно:
Я плохо разбираюсь в Delphi, но возможно причина в том, что в OpenDialog1.FileName находится ANSI строка, а StgIsStorageFile требует UNICODE (PWideChar - это вроде приведение типа, как (LPWSTR)OpenDialog1.FileName в C). Извините если не прав. Это сообщение отредактировал(а) Damarus - 22.9.2006, 10:54 |
||||||
|
|||||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 3 Всего: 111 |
||||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 1 Всего: 29 |
Yanis, а что с кодировкой строки в OpenDialog1.FileName (ANSI/UNICODE)? Возможно стоит попробовать что то вроде MultiByteToWideChar? Или здесь:
ANSI-строка автоматически преобразуется в UNICODE? |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 3 Всего: 111 |
Damarus
Действительно, ты оказался прав с самого начала. Нужно было непосредственно конвертировать строку в Wide. Спасибо. Образовалась вот такая функция для проверки является ли файл структурированным хранилищем:
Может быть кому-нибудь понадобится. Damarus, спасибо! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |