ホームページ >バックエンド開発 >PHPチュートリアル >Scintilla ユーザーガイド (2) - 全文検索と変更
Scintilla では、各文字の後に文字スタイルを表すバイトが続きます。文字バイトとスタイル バイトは合わせて文字ユニットを形成します。スタイル バイトの 8 ビットは、文字スタイルと文字インジケータの 2 つの部分に分かれています。テキストの文字インジケーターは、SCI_INDICATORFILLRANGE メッセージを通じて設定できます。デフォルトでは、下位 5 ビットが文字スタイル、上位 3 ビットが文字インジケーターです。したがって、32 個の文字スタイルが存在する可能性があります。構文エラー、非推奨の名前、不正なインデント、その他の情報を示すために使用できる 3 つの独立した文字インジケーター。 SCI_SETSTYLEBITS メッセージを使用して文字スタイル ビットを最大 7 ビットに設定でき、残りは文字インジケーターに割り当てられます。
Position は、Scintilla 内の文字または文字の前の空白点の位置を示します。最初の文字の位置は 0、2 番目の文字は 1 などとなります。ドキュメントに nLen 文字が含まれている場合、最後の文字の位置は nLen – 1 になります。カーソルは 2 つの文字の間に存在し、最初の文字の前 (0) と最後の文字 (nLen) の後に配置できます。
2文字を1文字として扱う場合、2文字の間にカーソルを置くことはできません。この状況は通常、中国語などのマルチバイト文字、または行終端記号が CRLF の場合に発生します。定数 INVALID_POSITION (-1) は、不正な位置を表します。
パフォーマンス上の理由から、テキストのすべての行は同じ高さ、つまり現在のスタイルの最大のフォントの高さになります。
SCI_GETTEXT, SCI_SETTEXT
1) SCI_GETTEXT(int length, char *text)
テキストを取得:
(1) text が 0 の場合、ドキュメント全体の長さ len + 1 を返します
(2) length が 0 の場合、0 を返します。 (3) テキストが 0 ではなく、長さが 0 より大きい場合、長さ - 1 が返され、テキストは位置 0 から始まる長さ - 1 の文字と 0 ターミネータで埋められます。長さがドキュメントの長さより大きい場合、余分な位置はヌル文字 0 で埋められます。
unsigned int len = SendMessage(SCI_GETTEXT, 0, 0); char *chText = new char[len]; SendMessage(SCI_GETTEXT, len, (LPARAM)chText); … delete [] chText;2) SCI_SETTEXT(eb3ae17112958a950f284bf658cc0d85, const char *text)
ドキュメントのテキストを、0 で終わる定数文字列である text に設定します。テキストが 0 の場合は FALSE (0) を返し、それ以外の場合は TRUE (1) を返します。
SCI_SETSAVEPOINT SCI_SETSAVEPOINTセーブポイントを設定すると、ドキュメントのステータスが未変更に変更され、TRUE (1) が返されます。 SCI_SETSAVEPOINT メッセージは、SCN_SAVEPOINTREACHED イベント通知をトリガーします。ドキュメントのステータスが変更済みに変わると、SCN_SAVEPOINTLEFT イベント通知がトリガーされます。
指定された行のテキストを取得し、指定された行のテキストの長さ (行末文字を含む) を返します。行番号 line は 0 から始まります。行番号が最大行番号より大きい場合は 0 が返されます。 text が 0 の場合、指定されたテキスト行の長さが直接返されます。text が 0 以外の場合、テキストは指定されたテキスト行で埋められますが、ターミネータ 0 は自動的に設定されません。
unsigned int len = SendMessage(SCI_GETLINE, 1, 0); char *chText = new char[len + 1]; memset(chText, 0, len + 1);SendMessage(SCI_GETLINE, 1, (LPARAM)chText); …delete [] chText;SCI_REPLACESELSCI_REPLACESEL(eb3ae17112958a950f284bf658cc0d85, const char *text)
選択したテキストを置換します。text は 0 で終わる定数文字列です。テキストが選択されていない場合は、現在の位置にテキストが挿入されます。置換後、カーソルは挿入されたテキストの後ろに移動し、テキストが表示されるようにビューが自動的にスクロールします。テキストが 0 の場合は FALSE (0) を返し、それ以外の場合は TRUE (1) を返します。
ドキュメントを読み取り専用に設定し、TRUE (1) を返します。ドキュメントが読み取り専用状態にある場合、ドキュメントが変更されると、SCN_MODIFYATTEMPTRO イベント通知がトリガーされます。
2) SCI_GETREADONLY
ドキュメントの読み取り専用ステータスを取得し、TRUE (1) または FALSE (0) を返します。
指定されたテキスト範囲を取得します。tr が 0 の場合は 0 を返し、それ以外の場合はテキストの長さ (0 ターミネータを除く) を返し、tr.lpstrText を埋めます。テキストの指定範囲とゼロ終端文字として。 tr.chrg.cpMax が -1 の場合、ドキュメントの終わりを意味します。 tr.lpstrText 文字バッファーが十分な大きさであることを確認する必要があります ((tr.chrg.cpMax - tr.chrg.cpMin) + 1)。
SCI_GETTEXTRANGE と同様に、指定された範囲のスタイル テキストを取得しますが、必要な文字バッファ サイズは SCI_GETTEXTRANGE (2 * (tr.chrg. cpMax - tr.chrg.cpMin) + 2)。 Scintilla は、tr.lpstrText の末尾に 2 つのゼロ ターミネータを自動的に追加します。
指定されたサイズのバイトを収容するのに十分な大きさのバッファを割り当て、TRUE (1) を返します。バッファーは、指定されたサイズが現在のバッファー サイズより大きい場合にのみ再割り当てされ、それ以外の場合は処理は行われません。
指定されたテキストの指定された長さを現在の位置に挿入します。s は 0 で終わる定数文字列で、0 を返します。テキストを挿入すると、現在の位置は挿入されたテキストの後ろになりますが、ビューは自動的にスクロールしてテキストが表示されることはありません。
現在の位置にスタイルテキストを挿入します。処理方法はSCI_ADDTEXTと同様で、0を返します。
ドキュメントの末尾にテキストを挿入します。処理方法は SCI_ADDTEXT と同様で、0 を返します。
SCI_INSERTTEXT(int pos, const char *text)
指定された位置にテキストを挿入します。処理方法は SCI_ADDTEXT と同様で、0 を返します。 pos が -1 の場合、現在位置に挿入することを意味します。
SCI_CLEARALL
SCI_CLEARALL
ドキュメントが読み取り専用でない限り、ドキュメントからすべての文字を削除し、0 を返します。
SCI_CLEARDOCUMENTSTYLE
SCI_CLEARDOCUMENTSTYLE
ドキュメントのスタイル情報をすべてクリアし、0 を返します。これは通常、ドキュメントのスタイルを変更する必要がある場合に使用されます。
SCI_GETCHARAT
SCI_GETCHARAT(intposition)
指定された位置にある文字を返します。位置が 0 より小さい場合、またはドキュメントの末尾より大きい場合は、0 が返されます。
SCI_GETSTYLEAT
SCI_GETSTYLEAT(intposition)
指定された位置のスタイルを返します。位置が 0 より小さい場合、またはドキュメントの末尾より大きい場合は、0 が返されます。
SCI_SETSTYLEBITS、SCI_GETSTYLEBITS
1) SCI_SETSTYLEBITS(int bits)
スタイルビット幅をバイトに設定し、TRUE(1)を返します。デフォルトは 5 ビットで、最大値は 7 ビットに設定できます。残りのビットは文字インジケーターを表すために使用されます。
2) SCI_GETSTYLEBITS
スタイルのビット幅をバイト単位で返します。
SCI_TARGETASUTF8 *
SCI_TARGETASUTF8(eb3ae17112958a950f284bf658cc0d85, char *s)
ターゲット文字列を UTF8 エンコード形式に変換し、エンコードされたテキストの長さを返し、エンコードされたバイトを s に埋めます。このメッセージは GTK+ プラットフォームでのみ使用できます。
SCI_ENCODEDFROMUTF8 *
SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded)
UTF8 形式の文字列をドキュメントのエンコード形式に変換し、変換されたバイト長を返し、変換されたバイトをエンコードされたものに埋めます。このメッセージは GTK+ プラットフォームでのみ使用できます。
SCI_SETLENGTHFORENCODE
SCI_SETLENGTHFORENCODE(int bytes)
ドキュメントのエンコード長を設定し、0を返します。
上記は Scintilla ユーザーガイド (2) - 全文検索と変更の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。