GetStringListItemA

その他の関数

説明

末尾の A は ANSI(char)DLL エントリポイントを示し、ActiveX/COM の表面では Unicode 形式のみ公開される。動作は GetStringListItem と同一で、文字列引数は現在の SetAnsiMode コードページを使って解釈される

StringListID で識別される文字列リストの位置 ItemIndex にある文字列を返します。文字列リストは他の API 関数によって生成され、最も一般的な CheckFileCompliance は、検出した適合性問題ごとに 1 項目を返します

構文

Delphi

Function DLGetStringListItemA(InstanceID, StringListID, ItemIndex: Integer): PAnsiChar;

DLL

const char * DLGetStringListItemA(int InstanceID, int StringListID, int ItemIndex);

パラメータ

StringListIDCheckFileCompliance などの生成関数から返された文字列リストの ID
ItemIndex取得する項目の 1 から始まるインデックスです。最初の項目は 1、最後の項目は GetStringListCount(StringListID) です。範囲外のインデックスでは空文字列を返します

戻り値

要求されたインデックスの文字列。StringListID が無効、または ItemIndex が [1 .. GetStringListCount] の範囲外の場合は空文字列

備考

CheckFileCompliance が生成するリストでは、項目形式は CODE: human-readable description で、CODE は CheckFileCompliance ページに記載された 5 桁の問題コード(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;

関連項目

GetStringListCount、ReleaseStringList、CheckFileCompliance