Heim  >  Artikel  >  Backend-Entwicklung  >  Scintilla-Benutzerhandbuch (2) – Volltextsuche und -änderung

Scintilla-Benutzerhandbuch (2) – Volltextsuche und -änderung

黄舟
黄舟Original
2017-01-17 10:26:252205Durchsuche

In Scintilla folgt auf jedes Zeichen ein Byte, das den Zeichenstil darstellt. Das Zeichenbyte und das Stilbyte bilden zusammen eine Zeicheneinheit. Die 8 Bits des Stilbytes sind in zwei Teile unterteilt: Zeichenstil und Zeichenindikator. Der Zeichenindikator eines Textstücks kann über die SCI_INDICATORFILLRANGE-Nachricht festgelegt werden. Standardmäßig sind die unteren 5 Bits der Zeichenstil und die höheren 3 Bits der Zeichenindikator. Daher können 32 Zeichenstile vorhanden sein. 3 unabhängige Zeichenindikatoren, die verwendet werden können, um Syntaxfehler, veraltete Namen, fehlerhafte Einrückungen und andere Informationen anzuzeigen. Sie können die SCI_SETSTYLEBITS-Nachricht verwenden, um Zeichenstilbits auf bis zu 7 Bits festzulegen, und der Rest wird dem Zeichenindikator zugewiesen.
Position gibt die Position des Zeichens oder den Leerpunkt vor dem Zeichen in Scintilla an. Die Position des ersten Zeichens ist 0, die des zweiten Zeichens 1 und so weiter. Wenn das Dokument nLen-Zeichen enthält, ist die Position des letzten Zeichens nLen – 1. Der Cursor steht zwischen zwei Zeichen und kann vor dem ersten Zeichen (0) und nach dem letzten Zeichen (nLen) positioniert werden.
Wenn zwei Zeichen als ein Zeichen behandelt werden, kann der Cursor nicht zwischen den beiden Zeichen stehen. Diese Situation tritt normalerweise auf, wenn Multibyte-Zeichen wie Chinesisch verwendet werden oder wenn das Zeilenendezeichen CRLF ist. Die Konstante INVALID_POSITION (-1) stellt eine unzulässige Position dar.
Aus Leistungsgründen haben alle Textzeilen die gleiche Höhe: die Höhe der größten Schriftart im aktuellen Stil.

SCI_GETTEXT, SCI_SETTEXT

1) SCI_GETTEXT(int length, char *text)
Text abrufen:
(1) Wenn Text 0 ist, wird die gesamte Dokumentlänge len + 1;(2) Wenn die Länge 0 ist, wird 0 zurückgegeben.
(3) Wenn der Text nicht 0 und die Länge größer als 0 ist, wird die Länge – 1 zurückgegeben. Der Text wird mit Zeichen der Länge – 1 ab Position 0 und a gefüllt 0 Terminator. Wenn die Länge größer als die Dokumentlänge ist, werden die zusätzlichen Positionen mit Nullzeichen 0 gefüllt.


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)

Setzen Sie den Dokumenttext auf Text, eine konstante Zeichenfolge, die mit 0 endet. Wenn der Text 0 ist, geben Sie FALSE (0) zurück, andernfalls geben Sie TRUE (1) zurück.

SCI_SETSAVEPOINT
SCI_SETSAVEPOINT
Legen Sie den Speicherpunkt fest, der Dokumentstatus bleibt unverändert und gibt TRUE (1) zurück. Die SCI_SETSAVEPOINT-Nachricht löst die Ereignisbenachrichtigung SCN_SAVEPOINTREACHED aus. Wenn sich der Dokumentstatus in „Geändert“ ändert, wird die Ereignisbenachrichtigung SCN_SAVEPOINTLEFT ausgelöst.


SCI_GETLINE

SCI_GETLINE(int line, char *text)

Rufen Sie den Text der angegebenen Zeile ab und geben Sie die Länge des Textes der angegebenen Zeile (einschließlich der Zeile) zurück Terminator). Die Zeilennummer beginnt bei 0. Wenn die Zeilennummer größer als die maximale Zeilennummer ist, wird 0 zurückgegeben. Wenn der Text 0 ist, wird die Länge der angegebenen Textzeile direkt zurückgegeben. Wenn der Text nicht 0 ist, wird der Text mit der angegebenen Textzeile gefüllt, der Abschluss 0 wird jedoch nicht automatisch festgelegt.

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_REPLACESEL

SCI_REPLACESEL(eb3ae17112958a950f284bf658cc0d85, const char *text)

Ersetzen Sie den ausgewählten Text. Text ist eine konstante Zeichenfolge, die mit 0 endet. Wenn kein Text ausgewählt ist, wird der Text an der aktuellen Position eingefügt. Nach dem Ersetzen befindet sich der Cursor hinter dem eingefügten Text und die Ansicht scrollt automatisch, sodass der Text sichtbar ist. Wenn der Text 0 ist, geben Sie FALSE (0) zurück, andernfalls geben Sie TRUE (1) zurück.

SCI_SETREADONLY, SCI_GETREADONLY

1) SCI_SETREADONLY(bool readOnly)

Legen Sie das Dokument als schreibgeschützt fest und geben Sie TRUE (1) zurück. Wenn sich das Dokument im schreibgeschützten Zustand befindet und das Dokument geändert wird, wird die Ereignisbenachrichtigung SCN_MODIFYATTEMPTRO ausgelöst.
2) SCI_GETREADONLY
Den schreibgeschützten Status des Dokuments abrufen und TRUE (1) oder FALSE (0) zurückgeben.

SCI_GETTEXTRANGE

SCI_GETTEXTRANGE(eb3ae17112958a950f284bf658cc0d85, TextRange *tr)

Den angegebenen Textbereich abrufen, wenn tr 0 ist, 0 zurückgeben, andernfalls die Textlänge zurückgeben (nicht enthalten) 0-Terminator) und füllt tr.lpstrText mit dem angegebenen Textbereich und einem 0-Terminator. Wenn tr.chrg.cpMax -1 ist, bedeutet dies das Ende des Dokuments. Sie müssen sicherstellen, dass der Zeichenpuffer tr.lpstrText groß genug ist ((tr.chrg.cpMax - tr.chrg.cpMin) + 1).

SCI_GETSTYLEDTEXT

SCI_GETSTYLEDTEXT(eb3ae17112958a950f284bf658cc0d85, TextRange *tr)

Ruft den angegebenen Bereich von Stiltext ab, ähnlich wie SCI_GETTEXTRANGE, aber die erforderliche Zeichenpuffergröße ist SCI_GETTEXTRANGE 2 Mal (2 * (tr.chrg.cpMax - tr.chrg.cpMin) + 2). Scintilla hängt automatisch zwei Null-Terminatoren an das Ende von tr.lpstrText an.

SCI_ALLOCATE

SCI_ALLOCATE(int bytes, eb3ae17112958a950f284bf658cc0d85)

Ordnet einen Puffer zu, der groß genug ist, um Bytes der angegebenen Größe aufzunehmen, und gibt TRUE (1) zurück. Der Puffer wird nur dann neu zugewiesen, wenn die angegebene Größe größer als die aktuelle Puffergröße ist. Andernfalls erfolgt keine Verarbeitung.

SCI_ADDTEXT

SCI_ADDTEXT(int length, const char *s)

Fügt die angegebene Länge des angegebenen Textes an der aktuellen Position ein, s ist eine konstante Zeichenfolge, die mit 0 endet , gib 0 zurück. Nach dem Einfügen von Text befindet sich die aktuelle Position hinter dem eingefügten Text, die Ansicht scrollt jedoch nicht automatisch, um ihn sichtbar zu machen.

SCI_ADDSTYLEDTEXT

SCI_ADDSTYLEDTEXT(int length, cell *s)

Stiltext an der aktuellen Position einfügen, die Verarbeitungsmethode ähnelt SCI_ADDTEXT und es wird 0 zurückgegeben.

SCI_APPENDTEXT

SCI_APPENDTEXT(int length, const char *s)

Text am Ende des Dokuments einfügen Die Verarbeitungsmethode ähnelt SCI_ADDTEXT und es wird 0 zurückgegeben .

SCI_INSERTTEXT

SCI_INSERTTEXT(int pos, const char *text)
Text an der angegebenen Position einfügen. Die Verarbeitungsmethode ähnelt SCI_ADDTEXT und gibt 0 zurück. Wenn pos -1 ist, bedeutet dies, dass an der aktuellen Position eingefügt wird.

SCI_CLEARALL

SCI_CLEARALL
Es sei denn, das Dokument ist schreibgeschützt, löschen Sie alle Zeichen aus dem Dokument und geben Sie 0 zurück.

SCI_CLEARDOCUMENTSTYLE

SCI_CLEARDOCUMENTSTYLE
Alle Stilinformationen des Dokuments löschen und 0 zurückgeben. Dies wird normalerweise verwendet, wenn das Dokument neu gestaltet werden muss.

SCI_GETCHARAT

SCI_GETCHARAT(int position)
Gibt das Zeichen an der angegebenen Position zurück. Wenn die Position kleiner als 0 oder größer als das Ende des Dokuments ist, wird 0 zurückgegeben.

SCI_GETSTYLEAT

SCI_GETSTYLEAT(int position)
Gibt den Stil an der angegebenen Position zurück. Wenn die Position kleiner als 0 oder größer als das Ende des Dokuments ist, wird 0 zurückgegeben.

SCI_SETSTYLEBITS, SCI_GETSTYLEBITS

1) SCI_SETSTYLEBITS(int bits)
Setzt die Stilbitbreite in Bytes und gibt TRUE (1) zurück. Der Standardwert beträgt 5 Bit, der Höchstwert kann auf 7 Bit eingestellt werden. Die restlichen Bits werden zur Darstellung von Zeichenindikatoren verwendet.
2) SCI_GETSTYLEBITS
Gibt die Stilbitbreite in Bytes zurück.

SCI_TARGETASUTF8 *

SCI_TARGETASUTF8(eb3ae17112958a950f284bf658cc0d85, char *s)
Konvertieren Sie die Zielzeichenfolge in das UTF8-Kodierungsformat, geben Sie die kodierte Textlänge zurück und kodieren Sie die Bytes werden in s gefüllt. Diese Nachricht ist nur auf der GTK+-Plattform verfügbar.

SCI_ENCODEDFROMUTF8 *

SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded)
Konvertieren Sie die UTF8-Formatzeichenfolge in das Dokumentkodierungsformat und geben Sie die konvertierte Bytelänge zurück und füllen Sie die konvertierte aus Bytes in kodiert. Diese Nachricht ist nur auf der GTK+-Plattform verfügbar.

SCI_SETLENGTHFORENCODE

SCI_SETLENGTHFORENCODE(int bytes)
Legen Sie die Dokumentkodierungslänge fest und geben Sie 0 zurück.

Das Obige ist der Inhalt des Scintilla-Benutzerhandbuchs (2) – Volltextsuche und -änderung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn