国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

在BCB中實(shí)現(xiàn)TRichEdit的自動(dòng)格式化

2019-11-17 05:24:51
字體:
供稿:網(wǎng)友

  原文是以Delphi為例子,原作:張晶晶。原出處已不知。

ccrun(老妖)將其改為C++Builder例子。已編譯通過。

這是一個(gè)注冊EXE,OBJ,BIN三種類型文件,當(dāng)其被RichEdit打開時(shí)會(huì)自動(dòng)轉(zhuǎn)換為16進(jìn)制顯示的例子
--------------------------------------------------------------------------------
步驟:

第一:要從TCoriversion派生出一個(gè)新類
第二:重載CorrvertReadStream函數(shù)
第三:在主窗體的OnCreate函數(shù)中登記文件類型。用RichEdit的.RegisterConversionFormat函數(shù)

//---------------------------------------------------------------------------
// 從TCoriversion派生出一個(gè)新類
class THexConversion : public TConversion
{
public:
    virtual int __fastcall ConvertReadStream(TStream *pStream,
            char *pSrcBuffer, int nBufSize);
};
//---------------------------------------------------------------------------
// 重載 ConvertReadStream 函數(shù)
int __fastcall THexConversion::ConvertReadStream(TStream *pStream,
        char *pSrcBuffer, int nBufSize)
{
    String strTemp;
    unsigned char szDstBuffer[16];
    int n;
    int nResult;

    if(nBufSize <= 82)
        return 0;
    // 行號(hào),類似UtrlEdit,用8位來表示
    strTemp = strTemp.s    n = pStream->Read(szDstBuffer, 16);
    if(n == 0)
        return 0;
    // 顯示字符的ASCII值,四個(gè)一組,中間用空格分隔
    for(int i=0; i<n; i++)
    {
        AppendStr(strTemp, IntToHex(szDstBuffer[i], 2) + ' ');
        if((i+1) % 4 == 0)
            AppendStr(strTemp, ' ');
    }
    String str;
    str.StringOfChar(' ', 65 - strTemp.Length());
    AppendStr(strTemp, str + "; ");

    // 顯示實(shí)際的Ascii字符,假如是非可打印字符,用'.'代替
    for(int i=0; i<n; i++)
    {
        if((szDstBuffer[i] < 32) (szDstBuffer[i] > 126))
            szDstBuffer[i] = '.';
        AppendStr(strTemp, (char)szDstBuffer[i]);
    }

    AppendStr(strTemp, "/n");
    StrCopy(pSrcBuffer, strTemp.c_str());
    nResult = strTemp.Length();

    // 顯示加載進(jìn)度
    Form1->Process(pStream->Position);
    
application->ProcessMessages();

    return nResult;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    // 登記文件類型
    RichEdit1->RegisterConversionFormat(NULL, "bin", __classid(THexConversion));
    RichEdit1->RegisterConversionFormat(NULL, "obj", __classid(THexConversion));
    RichEdit1->RegisterConversionFormat(NULL, "exe", __classid(THexConversion));
}
//---------------------------------------------------------------------------
// 自定義函數(shù),須在.h文件中TForm1類中聲明一下,例如:
// public:
//     void __fastcall Process(int nPos);
//
// 為防止不負(fù)責(zé)任的轉(zhuǎn)載者,在些注明原作及修改者信息,請見諒。
// 原作:張晶晶
// 修改:ccrun(老妖),歡迎光臨C++Builder研究: http://www.ccrun.com
//---------------------------------------------------------------------------
void __fastcall TForm1::Process(int nPos)
{
    // 顯示加載進(jìn)度
    StatusBar1->SimpleText = "正在處理... " + String(nPos);
    StatusBar1->Update();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    RichEdit1->Lines->LoadFromFile("C://123//123.exe");
    StatusBar1->SimpleText = "加載完成!";
}
//---------------------------------------------------------------------------


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 祥云县| 勃利县| 孟津县| 荔波县| 元氏县| 平泉县| 临汾市| 长阳| 昌平区| 涡阳县| 吉木乃县| 东宁县| 饶河县| 罗源县| 河曲县| 甘南县| 离岛区| 若尔盖县| 咸丰县| 册亨县| 海阳市| 行唐县| 松原市| 江孜县| 浮梁县| 樟树市| 漯河市| 华池县| 肥城市| 奉节县| 通渭县| 佛冈县| 会东县| 罗江县| 河南省| 乌审旗| 随州市| 萨迦县| 甘洛县| 廊坊市| 潞城市|