Maison  >  Article  >  développement back-end  >  Guide de l'utilisateur Scintilla (2) - Recherche et modification en texte intégral

Guide de l'utilisateur Scintilla (2) - Recherche et modification en texte intégral

黄舟
黄舟original
2017-01-17 10:26:252253parcourir

Dans Scintilla, chaque caractère est suivi d'un octet représentant le style de caractère. L'octet de caractère et l'octet de style forment ensemble une unité de caractère. Les 8 bits de l'octet de style sont divisés en deux parties : le style de caractère et l'indicateur de caractère. L'indicateur de caractère d'un morceau de texte peut être défini via le message SCI_INDICATORFILLRANGE. Par défaut, les 5 bits inférieurs sont le style de caractère et les 3 bits supérieurs sont l'indicateur de caractère. Il peut donc y avoir 32 styles de caractères. 3 indicateurs de caractères indépendants qui peuvent être utilisés pour indiquer des erreurs de syntaxe, des noms obsolètes, une mauvaise indentation et d'autres informations. Vous pouvez utiliser le message SCI_SETSTYLEBITS pour définir les bits de style de caractère jusqu'à 7 bits, et le reste sera affecté à l'indicateur de caractère.
Position indique la position du caractère ou le point vide avant le caractère dans Scintilla. La position du premier caractère est 0, celle du second est 1, et ainsi de suite. Si le document contient des caractères nLen, la position du dernier caractère est nLen – 1. Le curseur existe entre deux caractères et peut être positionné avant le premier caractère (0) et après le dernier caractère (nLen).
Lorsque deux caractères sont traités comme un seul caractère, le curseur ne peut pas exister entre les deux caractères. Cette situation se produit généralement lorsque des caractères multi-octets tels que le chinois ou lorsque la fin de ligne est CRLF. La constante INVALID_POSITION (-1) représente une position illégale.
Pour des raisons de performances, toutes les lignes de texte ont la même hauteur : la hauteur de la plus grande police du style actuel.

SCI_GETTEXT, SCI_SETTEXT

1) SCI_GETTEXT(int length, char *text)
Obtenir le texte :
(1) Lorsque le texte est 0, renvoie la longueur totale du document len ​​1 ; >(2) Lorsque la longueur est 0, renvoie 0 ;
(3) Lorsque le texte n'est pas 0 et que la longueur est supérieure à 0, renvoie la longueur – 1, le texte est rempli avec une longueur – 1 caractères à partir de la position 0 et A zéro. terminateur. Si la longueur est supérieure à la longueur du document, les positions supplémentaires seront remplies avec des caractères nuls 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)

Définissez le texte du document sur text, qui est une chaîne constante se terminant par 0. Si le texte est 0, renvoie FALSE (0), sinon renvoie TRUE (1).

SCI_SETSAVEPOINT
SCI_SETSAVEPOINT
Définissez le point de sauvegarde, le statut du document ne sera plus modifié et renverra VRAI (1). Le message SCI_SETSAVEPOINT déclenchera la notification d'événement SCN_SAVEPOINTREACHED. Lorsque le statut du document passe à modifié, la notification d'événement SCN_SAVEPOINTLEFT sera déclenchée.


SCI_GETLINE

SCI_GETLINE(int line, char *text)

Récupère le texte de la ligne spécifiée et renvoie la longueur du texte de la ligne spécifiée (y compris la ligne terminateur). Le numéro de ligne commence à 0. Si le numéro de ligne est supérieur au numéro de ligne maximum, 0 sera renvoyé. Lorsque le texte est 0, la longueur de la ligne de texte spécifiée est renvoyée directement ; lorsque le texte n'est pas 0, le texte sera rempli avec la ligne de texte spécifiée, mais le terminateur 0 ne sera pas automatiquement défini.

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)

Remplacez le texte sélectionné, le texte est une chaîne constante se terminant par 0. Lorsqu'aucun texte n'est sélectionné, le texte sera inséré à la position actuelle. Après remplacement, le curseur se trouvera derrière le texte inséré et la vue défilera automatiquement pour que le texte soit visible. Lorsque le texte est 0, renvoie FALSE (0), sinon renvoie TRUE (1).

SCI_SETREADONLY, SCI_GETREADONLY

1) SCI_SETREADONLY(bool readOnly)

Définissez le document en lecture seule et renvoyez TRUE (1). Lorsque le document est en lecture seule, lorsque le document est modifié, la notification d'événement SCN_MODIFYATTEMPTRO sera déclenchée.
2) SCI_GETREADONLY
Obtient le statut en lecture seule du document et renvoie VRAI (1) ou FAUX (0).

SCI_GETTEXTRANGE

SCI_GETTEXTRANGE(eb3ae17112958a950f284bf658cc0d85, TextRange *tr)

Obtenir la plage de texte spécifiée, si tr est 0, renvoyer 0, sinon renvoyer la longueur du texte (non inclus) terminateur 0), et remplit tr.lpstrText avec la plage de texte spécifiée et un terminateur 0. Lorsque tr.chrg.cpMax vaut -1, cela signifie la fin du document. Vous devez vous assurer que le tampon de caractères tr.lpstrText est suffisamment grand ((tr.chrg.cpMax - tr.chrg.cpMin) 1).

SCI_GETSTYLEDTEXT

SCI_GETSTYLEDTEXT(eb3ae17112958a950f284bf658cc0d85, TextRange *tr)

Obtenir la plage spécifiée de texte de style, similaire à SCI_GETTEXTRANGE, mais la taille de tampon de caractères requise est SCI_GETTEXTRANGE 2 fois (2 * (tr.chrg.cpMax - tr.chrg.cpMin) 2). Scintilla ajoutera automatiquement deux terminateurs zéro à la fin de tr.lpstrText.

SCI_ALLOCATE

SCI_ALLOCATE(int bytes, eb3ae17112958a950f284bf658cc0d85)

Alloue un tampon suffisamment grand pour accueillir des octets de la taille spécifiée, renvoie TRUE (1). Le tampon sera réaffecté uniquement si la taille spécifiée est supérieure à la taille actuelle du tampon, sinon aucun traitement ne sera effectué.

SCI_ADDTEXT

SCI_ADDTEXT(int length, const char *s)

Insérer la longueur spécifiée du texte spécifié à la position actuelle, s est une chaîne constante se terminant par 0 , renvoie 0. Après avoir inséré du texte, la position actuelle se trouve derrière le texte inséré, mais la vue ne défile pas automatiquement pour le rendre visible.

SCI_ADDSTYLEDTEXT

SCI_ADDSTYLEDTEXT(int length, cell *s)

Insérer un texte de style à la position actuelle, la méthode de traitement est similaire à SCI_ADDTEXT et 0 est renvoyé.

SCI_APPENDTEXT

SCI_APPENDTEXT(int length, const char *s)

Insérer du texte à la fin du document La méthode de traitement est similaire à SCI_ADDTEXT et 0 est renvoyé. .

SCI_INSERTTEXT

SCI_INSERTTEXT(int pos, const char *text)
Insérer du texte à la position spécifiée La méthode de traitement est similaire à SCI_ADDTEXT et renvoie 0. Lorsque pos est -1, cela signifie une insertion à la position actuelle.

SCI_CLEARALL

SCI_CLEARALL
À moins que le document ne soit en lecture seule, supprimez tous les caractères du document et renvoyez 0.

SCI_CLEARDOCUMENTSTYLE

SCI_CLEARDOCUMENTSTYLE
Effacer toutes les informations de style du document et renvoyer 0. Ceci est généralement utilisé lorsque le document doit être relooké.

SCI_GETCHARAT

SCI_GETCHARAT(int position)
Renvoie le caractère à la position spécifiée. Lorsque la position est inférieure à 0 ou supérieure à la fin du document, 0 est renvoyé.

SCI_GETSTYLEAT

SCI_GETSTYLEAT(int position)
Renvoie le style à la position spécifiée. Lorsque la position est inférieure à 0 ou supérieure à la fin du document, 0 est renvoyé.

SCI_SETSTYLEBITS, SCI_GETSTYLEBITS

1) SCI_SETSTYLEBITS(int bits)
Définit la largeur de bits du style en octets et renvoie TRUE (1). La valeur par défaut est de 5 bits et le maximum peut être fixé à 7 bits. Les bits restants seront utilisés pour représenter les indicateurs de caractères.
2) SCI_GETSTYLEBITS
Renvoie la largeur de bits du style en octets.

SCI_TARGETASUTF8 *

SCI_TARGETASUTF8(eb3ae17112958a950f284bf658cc0d85, char *s)
Convertissez la chaîne cible au format d'encodage UTF8, renvoyez la longueur du texte encodé et encodez les octets sont remplis dans l'art. Ce message est uniquement disponible sur la plateforme GTK.

SCI_ENCODEDFROMUTF8 *

SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded)
Convertir la chaîne au format UTF8 en format d'encodage de document et renvoyer la longueur d'octet convertie, et remplir le champ converti octets encodés. Ce message est uniquement disponible sur la plateforme GTK.

SCI_SETLENGTHFORENCODE

SCI_SETLENGTHFORENCODE(int bytes)
Définissez la longueur d'encodage du document et renvoyez 0.

Ce qui précède est le contenu du Guide de l'utilisateur de Scintilla (2) - Recherche et modification du texte intégral Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn