Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Вниз

Помогите обработать HResult   Найти похожие ветки 

 
Дмитрий   (2009-04-06 10:26) [0]

Есть код:
V: Variant;
R: HResult;
D: ITextDocument;

R := D.Open(V, tomOpenExisting, 0);
case R of
 ...
end;


В MSDN сказано, что

Errors are reported by negative values, but since file operations have many kinds of errors, you may not need all of the error information provided. In particular, you may not care (or you may already know) which file facility is used, namely Microsoft Windows (pVar.vt = VT_BSTR) or OLE storage for IStorage. By masking off bit 18 of an HRESULT value, you can ignore the difference and compare to its STG_E_xxx value. For example:

HRESULT hr;
VARIANT Var;
VariantInit(&Var)

Var.vt = VT_BSTR;
Var.bstrVal = SysAllocString(L"test.txt"); // Use file command
hr = pDoc->Open(&Var, tomOpenExisting, 0);
hr &= ~0x40000; // Mask off bit 18
if(hr == STG_E_FILENOTFOUND)
{
...// the rest of the code
}

вот об этом "hr &= ~0x40000; // Mask off bit 18" я уже спрашивал на форуме, получил ответ. Теперь пытаюсь сделать аналогично:
R := R or (not $40000);
но после этой операции R совсем не равно STG_E_FILENOTFOUND...

Что у меня неправильно?


 
Palladin ©   (2009-04-06 10:31) [1]

R := R and (not $40000);


 
Palladin ©   (2009-04-06 10:40) [2]

епрст... тебе же в той ветке написали правильно... так какого хрена ты отсебятину лепишь?


 
Дмитрий   (2009-04-06 11:11) [3]

Пардон, это я "от себя" писал сюда, ошибся малость. В коде же, как ты написал, так оно и есть.

Как правильно обработать HResult в данном случае?

И ещё вопрос. Я с делфи ещё не очень знаком, скажите, если HResult составлен из нескольких флагов, как мне проверить, был ли установлен какой-то конкретный из них?

Спасибо заранее.


 
Amoeba ©   (2009-04-06 11:13) [4]


> если HResult составлен из нескольких флагов, как мне проверить,
>  был ли установлен какой-то конкретный из них?

HResult and Flag


 
Anatoly Podgoretsky ©   (2009-04-06 11:19) [5]

> Дмитрий  (06.04.2009 11:11:03)  [3]

http://www.podgoretsky.com/ddp/bits.aspx


 
Дмитрий   (2009-04-06 11:24) [6]

Т.е. так?

if R and STG_E_FILENOTFOUND <> 0 then //STG_E_FILENOTFOUND присутствует


 
Дмитрий   (2009-04-06 11:32) [7]

Всё, понял :) Большущее спасибо всем, особенно Anatoly Podgoretsky!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
2-1239343514
Гость
2009-04-10 10:05
2009.05.24
Работа с потоками.


2-1238959657
Alex112
2009-04-05 23:27
2009.05.24
К SQL-Server через ADO


15-1237378003
Styx_
2009-03-18 15:06
2009.05.24
Шестнадцатиричные числительные


2-1239624079
Dimon_
2009-04-13 16:01
2009.05.24
Распечатка html документа


2-1239613794
Iriss
2009-04-13 13:09
2009.05.24
преобразовать к типу TColor





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский