{{div_begin}} [[← 9 章に戻る|Palm OS Programmer's API Reference/9]] [[↑トップへ|Palm OS Programmer's API Reference]] [[11 章に進む →|Palm OS Programmer's API Reference/11]] {{div_end}} {{div_begin style="margin-bottom:-10px"}} !!!10 検索 {{div_end}} {{div_begin "style='position:absolute;right:0px;font-size:70%;margin-right:15px;margin-top:15px;width:250px;'"}} *{{goto Find Functions,検索関数}} **{{goto FindDrawHeader,FindDrawHeader}} **{{goto FindGetLineBounds,FindGetLineBounds}} **{{goto FindSaveMatch,FindSaveMatch}} **{{goto FindStrInStr,FindStrInStr}} {{div_end}} {{div_begin "style='position:relative;padding:0px;padding-right:5px;padding-left:10px;margin-right:250px;margin-top:20px;width:auto;border-right:dotted;border-right-width:2px;border-right-color:silver;'"}} この章では、ヘッダ ファイル {{span style='color:blue;font-family:monospace;',Find.h}} で定義されている、グローバル検索機能について説明します。 追加情報は、''Palm OS Programmer's Companion, vol. I'' の[[「テキスト」|Palm OS Programmer's Companion Volume I/8]]を参照してください。 !!{{anchor Find Functions}}検索関数 {{goto top,^TOP^}} !{{anchor FindDrawHeader}}FindDrawHeader 関数 {{goto top,^TOP^}} '''目的''' 見つかったアイテムのリストを、アプリケーションごとに、切り分けるヘッダ ラインを描きます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Find.h}} '''Prototype''' Boolean FindDrawHeader ( FindParamsPtr findParams, Char const *title ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ findParams}} **{{goto sysAppLaunchCmdFind,sysAppLaunchCmdFind|Palm OS Programmer's API Reference/1}} 開始コードのパラメータ ブロックへのポインタ *{{span style='color:blue;font-family:monospace;',→ title}} **現在のアプリケーションのためのタイトルとして表示される文字列 '''返り値''' スクリーンが埋められた(訳者注: 描かれた)場合は、{{span style='color:blue;font-family:monospace;',true}} を返します。これが起きた場合、アプリケーションは検索を終了すべきです。 '''コメント''' この関数を、あなたのアプリケーションの {{goto sysAppLaunchCmdFind,sysAppLaunchCmdFind|Palm OS Programmer's API Reference/1}} 開始コードへの応答の始めに、一度呼び出します。この関数はアプリケーションの検索結果のためのヘッダを描きます。ヘッダはあなたのアプリケーションからの検索結果と他のアプリケーションからの検索結果を切り分けます。 あなたのアプリケーションが複数のデータベースを検索する場合、あなたはデータベース間のセパレータとしても {{span style='color:blue;font-family:monospace;',FindDrawHeader}} を使用するかもしれません。 !{{anchor FindGetLineBounds}}FingGetLineBounds 関数 {{goto top,^TOP^}} '''目的''' 一致するものを表示するために使用可能な検索結果ダイアログの中の次の行の境界を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Find.h}} '''Prototype''' void FindGetLineBounds( const FindParamsType *findParams, RectanglePtr r ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ findParams}} **{{goto sysAppLaunchCmdFind,sysAppLaunchCmdFind|Palm OS Programmer's API Reference/1}} 開始コードのパラメータ ブロックへのポインタ *{{span style='color:blue;font-family:monospace;',← r}} **結果を表示するための次の行を保持しているべき領域の境界 '''返り値''' 返り値はありません。 !{{anchor FindSaveMatch}}FindSaveMatch 関数 {{goto top,^TOP^}} '''目的''' レコードとテキスト検索で一致するレコード内の位置を保存します。この情報は保存され、それにより、あとで一致したものへのナビゲートが可能です。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Find.h}} '''Prototype''' Boolean FindSaveMatch ( FindParamsPtr findParams, UInt16 recordNum, UInt16 pos, UInt16 fieldNum, UInt32 appCustom, UInt16 cardNo, LocalID dbID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ findParams}} **{{goto sysAppLaunchCmdFind,sysAppLaunchCmdFind|Palm OS Programmer's API Reference/1}} 開始コードのパラメータ ブロックへのポインタ *{{span style='color:blue;font-family:monospace;',→ recordNum}} **レコード インデックス。このパラメータは {{goto sysAppLaunchCmdGoTo,sysAppLaunchCmdGoTo|Palm OS Programmer's API Reference/1}} のパラメータ ブロックの中の {{span style='color:blue;font-family:monospace;',recordNum}} フィールドをセットします。 *{{span style='color:blue;font-family:monospace;',→ pos}} **一致文字列のレコード開始点からのオフセット。このパラメータは {{goto sysAppLaunchCmdGoTo,sysAppLaunchCmdGoTo|Palm OS Programmer's API Reference/1}} のパラメータ ブロックの中の {{span style='color:blue;font-family:monospace;',matchPos}} フィールドをセットします。 *{{span style='color:blue;font-family:monospace;',→ fieldNum}} **文字列が見つかったフィールド番号。このパラメータは {{goto sysAppLaunchCmdGoTo,sysAppLaunchCmdGoTo|Palm OS Programmer's API Reference/1}} のパラメータ ブロックの中の {{span style='color:blue;font-family:monospace;',matchFieldNum}} フィールドをセットします。 *{{span style='color:blue;font-family:monospace;',→ appCustom}} **一致したものと一緒にアプリケーションが保存することができる臨時データ。このパラメータは {{goto sysAppLaunchCmdGoTo,sysAppLaunchCmdGoTo|Palm OS Programmer's API Reference/1}} のパラメータ ブロックの中の {{span style='color:blue;font-family:monospace;',matchCustom}} フィールドをセットします。 *{{span style='color:blue;font-family:monospace;',→ cardNo}} **一致するものを保持するデータベースのカード番号。このパラメータは {{goto sysAppLaunchCmdGoTo,sysAppLaunchCmdGoTo|Palm OS Programmer's API Reference/1}} のパラメータ ブロックの中の {{span style='color:blue;font-family:monospace;',dbCardNo}} フィールドをセットします。 *{{span style='color:blue;font-family:monospace;',→ dbID}} **一致するものを保持するデータベースのローカル ID。このパラメータは {{goto sysAppLaunchCmdGoTo,sysAppLaunchCmdGoTo|Palm OS Programmer's API Reference/1}} のパラメータ ブロックの中の {{span style='color:blue;font-family:monospace;',dbID}} フィールドをセットします。 '''返り値''' スクリーンが埋められた(訳者注: 描かれた)場合は、{{span style='color:blue;font-family:monospace;',true}} を返します。これが起きた場合、アプリケーションは検索を終了すべきです。 '''コメント''' あなたのアプリケーションが一致文字列を持つレコードを見つけた({{goto FindStrInStr,FindStrInStr()}} または {{goto TxtFindString,TxtFindString()|Palm OS Programmer's API Reference/55}} が {{span style='color:blue;font-family:monospace;',true}} を返す)とき、この関数を呼び出します。この関数はあなたが渡す情報を保存します。ユーザが検索結果ダイアログの中のこの選択をクリックした場合、その情報は所得され、{{goto sysAppLaunchCmdFind,sysAppLaunchCmdFind|Palm OS Programmer's API Reference/1}} 開始コードのパラメータ ブロックをセット アップするために使用されます。 あなたは {{span style='color:blue;font-family:monospace;',appCustom}} フィールドを、ユーザが選択したレコードへナビゲートするために必要となるかもしれないいずれかのアプリケーション指定データのために、使用することができます。ローカライズすることができるアプリケーションのために {{span style='color:blue;font-family:monospace;',appCustom}} に一致文字列の長さをセットするのが一般的です。なぜなら、グローバル検索機能は、マルチ-バイト文字セットを持つシステム上では、一致文字列の長さを正確に決定することができないからです。{{span style='color:blue;font-family:monospace;',TxtFindString}} 関数は正確にシングル-バイト文字をそれらのマルチ-バイト等価物に一致させ(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)、一致文字列の長さを返します。あなたが {{span style='color:blue;font-family:monospace;',TxtFindString}} の返り値を {{span style='color:blue;font-family:monospace;',appCustom}} パラメータとして {{span style='color:blue;font-family:monospace;',FindSaveMatch}} に渡した場合、{{span style='color:blue;font-family:monospace;',sysAppLaunchCmdGoTo}} パラメータ ブロックの {{span style='color:blue;font-family:monospace;',matchCustom}} フィールドは一致文字列の長さを保持します。 あなたのアプリケーションがさらに多くのカスタム情報を要求する場合、あなたはその情報を機能(feature)の中に保存し、機能番号を {{span style='color:blue;font-family:monospace;',appCustom}} フィールドの中に保存することができます。更なる情報は、[[「機能マネージャ」|Palm OS Programmer's API Reference/34]]を参照してください。 !{{anchor FindStrInStr}}FindStrInStr 関数 {{goto top,^TOP^}} '''目的''' 文字列の case-blind prefix search (訳者: 先頭文字が大文字か小文字かは気にしない検索という意味だと思われる)を実行します。この関数は見つける文字列がすでに検索のために正規化されていると仮定します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Find.h}} '''Prototype''' Boolean FindStrInStr ( Char const *strToSearch, Char const *strToFind, UInt16 *posP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ strToSearch}} **検索する文字列。 *{{span style='color:blue;font-family:monospace;',→ strToFind}} **見つけるテキスト文字列の正規化バージョン。 *{{span style='color:blue;font-family:monospace;',← pos}} **一致するものが見つかった場合、一致するものの {{span style='color:blue;font-family:monospace;',strToSeach}} 内のオフセットを保持します。 '''返り値''' 文字列が見つかった場合は、{{span style='color:blue;font-family:monospace;',true}} を返します。{{span style='color:blue;font-family:monospace;',FindStrInStr}} は単語の先頭のみを一致させます; つまり、{{span style='color:blue;font-family:monospace;',FindStrInStr}} が {{span style='color:blue;font-family:monospace;',true}} を返すためには、{{span style='color:blue;font-family:monospace;',strToFind}} は単語の 1 つの接頭辞でなけらばならないということです。 '''コメント''' テキスト マネージャをサポートするシステムでは、この関数を使用しないでください。その代わり、マルチ-バイト文字を保持する文字列の検索を行い、一致テキストの長さを返す {{goto TxtFindString,TxtFindString()|Palm OS Programmer's API Reference/55}} を使用してください。 テキスト マネージャをサポートしないシステムへの下位互換性のためには、PalmOSGlue ライブラリの中にある {{span style='color:blue;font-family:monospace;',TxtGlueFindString}} を使用してください。{{span style='color:blue;font-family:monospace;',TxtGlueFindString}} は、テキスト マネージャが存在する場合は {{span style='color:blue;font-family:monospace;',TxtFindString}} を呼び出し、存在しない場合は {{span style='color:blue;font-family:monospace;',FindStrInStr}} を呼び出します。更なる情報は、[[第 80 章 「PalmOSGlue ライブラリ」|Palm OS Programmer's API Reference/80]] を参照してください。 探索文字列を正規化する手法はさまざまで、Palm OS のバージョンとデバイスでサポートされている文字エンコードに依存します。 {{goto sysAppLaunchCmdFind,sysAppLaunchCmdFind|Palm OS Programmer's API Reference/1}} 開始コードのパラメータ ブロックの {{span style='color:blue;font-family:monospace;',strToFind}} フィールドの中にある、あなたのアプリケーションに渡される文字列はすでに正規化されています。それを直接 {{span style='color:blue;font-family:monospace;',FindStrInStr, TxtFindString, TxtGlueFindString}} に渡すことができます。あなた自身の正規化された検索文字列を作成する必要がある場合は、PalmOSGlue ライブラリの中にある {{span style='color:blue;font-family:monospace;',TxtGluePrepFindString}} を使用してください。 {{div_end}} {{div_begin "style='border-top:solid;border-top-width:1px;border-top-color:silver;'"}} [[← 9 章に戻る|Palm OS Programmer's API Reference/9]] [[↑トップへ|Palm OS Programmer's API Reference]] [[11 章に進む →|Palm OS Programmer's API Reference/11]] {{div_end}}