2010-05-05 75 views
0

使用ScriptGetProperties我如何在Delphi用Delphi

使用ScriptGetProperties API的Uniscribe從DLL(的usp10.dll),我發現在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或更高版本。

+0

你可以幫忙翻譯你已經知道的東西。詢問關於你不知道的事情。 – 2010-05-05 11:48:54

+0

哪個部位有問題?請注意,你實際上沒有*提出問題*。 – 2010-05-05 13:40:45

+0

Lars&Rob,我編輯了這個問題,我需要如何在Delphi中使用ScriptGetProperties API,很抱歉,如果我一開始並不清楚。 – 2010-05-05 14:31:24

回答

1

在開始使用庫之前,您需要將其頭文件翻譯爲.pas文件。請參閱Dr. Bob's header converter作爲起點。被轉換的頭只應該有結構,函數,枚舉,簡單類型等等。如果有類聲明,全局變量,宏等,你很可能需要有一箇中間的.h,你可以轉換成Delphi。

祝你好運。