Использование ScriptGetProperties с Delphi - PullRequest
0 голосов
/ 05 мая 2010

Как я могу использовать ScriptGetProperties API из Uniscribe Dll (usp10.dll) в Delphi

Я нашел пример в C ++, но я не знаю, как его перевести, потому что я плохо разбираюсь в C.

const SCRIPT_PROPERTIES **g_ppScriptProperties;
int g_iMaxScript;

WCHAR *pwcInChars = L"Unicode string to itemize";
int cInChars = wcslen(pwcInChars);
const int cMaxItems = 20;
SCRIPT_ITEM si[cMaxItems + 1];
SCRIPT_ITEM *pItems = si;
int cItems;

ScriptGetProperties(&g_ppScriptProperties,
                    &g_iMaxScript);

HRESULT hResult = ScriptItemize(pwcInChars,
                                cInChars,
                                cMaxItems,
                                NULL,
                                NULL,
                                pItems,
                                &cItems);
if (hResult == 0) {
    for (int i=0; i<cItems; i++) {
        if (g_ppScriptProperties[pItems[i].a.eScript]->fComplex) {

            // Item [i] is complex script text
            // requiring glyph shaping.

        } else {

            // The text may be rendered legibly without using Uniscribe. 
            // However, Uniscribe may still be used as a means of accessing 
            // font typographic features. 
        }
    }
} else {
    // Handle the error.
}

Код Delphi должен соответствовать Turbo Delphi 2006 или более поздней версии.

1 Ответ

1 голос
/ 05 мая 2010

Прежде чем начать работу с библиотекой, вам нужно будет перевести ее заголовочный файл в файл .pas. См. Доктор. Конвертер заголовка Боба для начальной точки. Преобразуемый заголовок должен иметь только структуры, функции, перечисления, простые типы и т. Д. Если есть объявления классов, глобальные переменные, макросы и т. Д., Вам, скорее всего, понадобится промежуточный .h, который вы переводите в Delphi.

Удачи.

...