GetStringListItemA
Разные функции
Описание
Завершающая A обозначает точку входа DLL типа ANSI (char); интерфейс ActiveX/COM предоставляет только форму Unicode. Поведение идентично GetStringListItem, а строковые аргументы интерпретируются с использованием текущей кодовой страницы SetAnsiMode
Возвращает строку в позиции ItemIndex списка строк, обозначенного StringListID. Списки строк порождают другие функции API — чаще всего CheckFileCompliance, возвращающая по одной записи на каждую найденную проблему соответствия.
Синтаксис
Delphi
Function DLGetStringListItemA(InstanceID, StringListID, ItemIndex: Integer): PAnsiChar;
DLL
const char * DLGetStringListItemA(int InstanceID, int StringListID, int ItemIndex);
Параметры
| StringListID | ID списка строк, возвращённый функцией-производителем вроде CheckFileCompliance |
|---|---|
| ItemIndex | Индекс извлекаемого элемента, начиная с 1: первый элемент — 1, последний — GetStringListCount(StringListID); индексы вне диапазона дают пустую строку |
Возвращаемое значение
Строка по запрошенному индексу либо пустая строка, если StringListID недопустим или ItemIndex вне [1 .. GetStringListCount]
Примечания
Для списков из CheckFileCompliance формат элемента — CODE: человекочитаемое описание, где CODE — один из пятизначных кодов проблем, описанных на странице CheckFileCompliance (00002, 00003, 00005, 00006, 00007, 00011, 00012). Для программной обработки отрезайте префикс до двоеточия
Пример
// Parse the issue code from each compliance issue line
var
Issues, Count, I, ColonPos: Integer;
Line, Code: WideString;
begin
Issues := PDF.CheckFileCompliance('archive.pdf', '', 1, 0);
if Issues = 0 then Exit;
Count := PDF.GetStringListCount(Issues);
for I := 1 to Count do
begin
Line := PDF.GetStringListItem(Issues, I);
ColonPos := Pos(':', Line);
if ColonPos > 0 then
Code := Trim(Copy(Line, 1, ColonPos - 1))
else
Code := Line;
if Code = '00006' then
WriteLn('Document is encrypted — cannot be PDF/A')
else
WriteLn('Issue ', Code, ': ', Line);
end;
PDF.ReleaseStringList(Issues);
end;