首頁 後端開發 php教程 Scintilla使用指南(2) - 全文檢索與修改

Scintilla使用指南(2) - 全文檢索與修改

Jan 17, 2017 am 10:26 AM

在Scintilla中,每個字元後面,都跟有一個表示字元樣式的位元組,字元位元組和樣式位元組一起組成一個字元單元。樣式位元組的8個bit,分為兩個部分:字元樣式和字元指示器。透過SCI_INDICATORFILLRANGE訊息可以設定一段文字的字元指示器。預設低5位元為字元樣式,高3位元為字元指示器。因此,可以有32種字元樣式。 3個互相獨立的字元指示器,可以用來指示語法錯誤、不贊成的名字和壞的縮排等資訊。可以使用SCI_SETSTYLEBITS訊息設定字元樣式位最大到7個bit位,剩下的將被指派給字元指示器。
Position指示了Scintilla中的字元或字元前空白點的位置。第一個字元的position是0,第二個是1,依此類推。假如文檔包含了nLen個字符,則最後一個字符的position是nLen – 1。遊標存在於兩個字元之間,能夠被定位到第一個字元之前(0)和最後一個字元之後(nLen)。
當兩個字元被當作一個字元處理時,遊標是無法存在於兩個字元之間的。這種情況,通常發生在中文等多位元組字元或行結束符為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) 當text不為0且length大於0時,返回length – 1,text被填充為從位置0開始的length – 1個字元和一個0終結符。如果length大於文件長度,多出的位置將被填入空字元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(, const char *text)
設定文檔文字為text,text是以0結尾的常數字串。如果text為0,回傳FALSE(0),否則回傳TRUE(1)。

SCI_SETSAVEPOINT
SCI_SETSAVEPOINT
登入後複製

設定保存點,文件狀態將變成unmodified,回傳TRUE(1)。 SCI_SETSAVEPOINT訊息將會觸發SCN_SAVEPOINTREACHED事件通知。當文件狀態變成modified時,將會觸發SCN_SAVEPOINTLEFT事件通知。

SCI_GETLINE

SCI_GETLINE(int line, char *text)
取得指定行文本,傳回指定行文本長度(包含行結束符)。行號line從0開始,如果行號大於最大行號,將回傳0。當text為0時,直接返回指定行文本長度;當text不為0時,text將被填入指定行文本,但並不會自動設定結束符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_REPLACESEL

SCI_REPLACESEL(, const char *text)
替換選擇文本,text是以0結尾的常數字串。當沒有文字被選擇時,將在目前位置插入文字。替換後,遊標將處於插入文字之後,並自動捲動視圖,以使文字可見。當text為0時,傳回FALSE(0),否則回傳TRUE(1)。

SCI_SETREADONLY, SCI_GETREADONLY

1) SCI_SETREADONLY(bool readOnly)
設定文件為唯讀,回傳TRUE(1)。文件處於唯讀狀態時,當文件發生修改,將會觸發SCN_MODIFYATTEMPTRO事件通知。
2) SCI_GETREADONLY
取得文件唯讀狀態,回傳TRUE(1)或FALSE(0)。

SCI_GETTEXTRANGE

SCI_GETTEXTRANGE(, TextRange *tr)
取得指定範圍文本,如果tr為0,返回0,否則返回文本長度(不包括00的文字和一個0終結符。當tr.chrg.cpMax為-1時,表示到文檔結束位置。你必須確保tr.lpstrText字元緩衝區夠大((tr.chrg.cpMax - tr.chrg.cpMin) + 1)。

SCI_GETSTYLEDTEXT

SCI_GETSTYLEDTEXT(, TextRange *tr)
取得指定範圍樣式文本,與SCI_GETTEXTRANGE類似,但所需字元緩衝區大小是SCI_GETTEXTRANGE (2GETTEXTRAN.chg(TgRd.B. .chrg.cpMin) + 2)。 Scintilla將會自動追加2個0終結符到tr.lpstrText尾部。

SCI_ALLOCATE

SCI_ALLOCATE(int bytes, )
分配足夠大的緩衝區,以容納指定大小的位元組,傳回TRUE(1)。只有當指定大小大於目前緩衝區大小時,才會重新分配緩衝區,否則不做任何處理。

SCI_ADDTEXT

SCI_ADDTEXT(int length, const char *s)
在目前位置插入指定文字的指定長度,s是以0結尾的常數字串,傳回0。插入文字後,目前位置處於插入文字之後,但視圖並不會自動進行捲動,使其可見。

SCI_ADDSTYLEDTEXT

SCI_ADDSTYLEDTEXT(int length, cell *s)
在目前位置插入樣式文本,處理方式和SCI_ADDTEXT相似,返回0。

SCI_APPENDTEXT

SCI_APPENDTEXT(int length, const char *s)
在文檔尾部插入文本,處理方式和SCI_ADDTEXT相似,返回0。

SCI_INSERTTEXT

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(int position)
傳回指定位置的字元。當position小於0或大於文件結束位置時,傳回0。

SCI_GETSTYLEAT

SCI_GETSTYLEAT(int position)
傳回指定位置的樣式。當position小於0或大於文件結束位置時,傳回0。

SCI_SETSTYLEBITS, SCI_GETSTYLEBITS

1) SCI_SETSTYLEBITS(int bits)
設定位元組中樣式位寬,傳回TRUE(1)。預設為5個bit,最大可以設定為7位,剩餘的bit位將用來表示字元指示器。
2) SCI_GETSTYLEBITS
返回位元組中樣式位寬。

SCI_TARGETASUTF8 *

SCI_TARGETASUTF8(, 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中文網(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 釘釘怎麼修改群組裡的個人名稱_釘釘修改群組個人名稱方法 Mar 29, 2024 pm 08:41 PM

1.首先打開釘釘。 2.打開群組聊,點選右上角的三個點。 3.找到我在本群的暱稱。 4.點選進入即可修改儲存。

如何更改使用者資料夾名稱:Win11教學 如何更改使用者資料夾名稱:Win11教學 Jan 09, 2024 am 10:34 AM

有些遊戲會自動安裝到使用者資料夾中,而且需要英文資料夾才可以,不過很多朋友不知道win11怎麼修改使用者資料夾名稱,其實我們只要修改使用者名稱就可以了。 win11修改使用者資料夾名稱:第一步,按下鍵盤「Win+R」組合鍵。第二步,在其中輸入「gpedit.msc」回車開啟群組原則編輯器。第三步,展開「windows設定」下的「安全設定「第四步,開啟「本機原則」中的「安全性選項」第五步,雙擊開啟右邊的「帳號:重新命名系統管理員帳號」原則。第六步,在下方輸入想要修改的資料夾名稱再點選「確定」儲存即可。修改使用者資料夾

抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? 抖音藍V可以改名字嗎?企業抖音藍V號名稱修改步驟有哪些? Mar 22, 2024 pm 12:51 PM

抖音藍V認證是企業或品牌在抖音平台上的官方認證,有助於提升品牌形象和可信度。隨著企業發展策略的調整或品牌形象的更新,企業可能希望更改抖音藍V認證的名字。那麼,抖音藍V可以改名字嗎?答案是可以的。本文將詳細介紹企業抖音藍V號名稱修改的步驟。一、抖音藍V可以改名字嗎?抖音藍V帳號是可以改名字的。根據抖音官方規定,企業藍V認證帳號在滿足一定條件後,可以申請修改帳號名稱。一般來說,企業需要提供相關的證明資料,如營業執照、組織機構代碼證等,以證明修改名稱的合法性和必要性。二、企業抖音藍V號名稱修改步驟有哪

修改win11視窗邊角為圓角的指南 修改win11視窗邊角為圓角的指南 Dec 31, 2023 pm 08:35 PM

很多朋友更新好win11系統後,發現win11的介面視窗採用了全新的圓角設計。但是有些人覺得不喜歡這個圓角設計,想要將它修改為曾經的介面,但卻不知道怎麼修改,下面就一起來看看吧。 win11怎麼修改圓角1、win11的圓角設計時內建的系統設置,目前無法修改。 2.所以大家如果不喜歡使用win11的圓角設計的話,可以等微軟提供修改的方法。 3.如果實在使用起來不習慣,還可以選擇退回曾經的win10系統。 4.如果大家不知道如何回退的話,可以查看本站提供的教學。 5.如果使用上方教學無法回退的話,還可

PyCharm背景色彩調整技巧:快速掌握! PyCharm背景色彩調整技巧:快速掌握! Feb 03, 2024 am 09:39 AM

快速掌握PyCharm背景顏色的修改技巧,需要具體程式碼範例近年來,Python語言在程式開發領域愈發流行,而PyCharm作為一款整合開發環境(IDE),被廣大開發者所喜愛和使用。在PyCharm中,經常會有一些開發者對IDE的介面進行個人化定制,包括背景顏色的修改。本文將介紹PyCharm背景顏色修改的技巧,並給出具體的程式碼範例,幫助讀者快速掌握這項技能。

win11電源模式修改位置與方法 win11電源模式修改位置與方法 Dec 30, 2023 pm 05:25 PM

我們在win11系統中,可以透過修改電源模式的方法,來降低我們的電池消耗,或是提高我們的系統效能。設定方法非常簡單,只要找到電源選項就可以了,下面就跟著小編一起來看一下具體的操作流程吧。 win11在哪裡修改電源模式1、先點選工作列最左邊的按鈕,開啟開始功能表。 2、然後在開始功能表上方搜尋並開啟「控制面板」3、在控制面板中,可以找到「硬體和聲音」4、進入硬體和聲音,點擊電源選項下的「選擇電源計畫」5、然後在其中就可以修改電源模式了,可以選擇平衡、節能模式或展開隱藏附加計劃,選擇高性能模式。

如何變更Windows 10工作列的顏色 如何變更Windows 10工作列的顏色 Jan 01, 2024 pm 09:05 PM

win10工作列顏色修改起來非常簡單,但是很多用戶發現設定不了,其實非常的簡單,只要在電腦的個人化裡選擇自己喜愛的顏色就可以了,要是改變不了顏色的注意詳細的設定哦。 win10工作列顏色怎麼改第一步:右鍵桌面-點選個人化第二步:顏色區域自訂第三步:選擇喜歡的顏色PS:如果你無法改變顏色,可以點選顏色->選擇顏色->自訂->預設windows模式,選擇深色即可。

Win10睡眠時間修改技巧大揭秘 Win10睡眠時間修改技巧大揭秘 Mar 08, 2024 pm 06:39 PM

Win10睡眠時間修改技巧大揭密作為目前廣泛使用的作業系統之一,Windows10擁有睡眠功能,幫助使用者在不使用電腦時節省電力並保護螢幕。然而,有時候預設的睡眠時間並不符合使用者的需求,因此了解如何修改Win10睡眠時間就顯得格外重要。本文將揭示Win10睡眠時間修改的技巧,讓您輕鬆自訂系統的睡眠設定。一、透過「設定」修改Win10睡眠時間首先,最簡單的修

See all articles