在BCB中实现TRichEdit的自动格式化

2016-02-19 16:32 46 1 收藏

图老师小编精心整理的在BCB中实现TRichEdit的自动格式化希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

  这是一个注册EXE,OBJ,BIN三种类型文件,当其被RichEdit打开时会自动转换为16进制显示的例子

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  --------------------------------------------------------------------------------

  步骤:

  第一:要从TCoriversion派生出一个新类

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  第二:重载CorrvertReadStream函数

  第三:在主窗体的OnCreate函数中登记文件类型。用RichEdit的.RegisterConversionFormat函数

  

//---------------------------------------------------------------------------
// 从TCoriversion派生出一个新类
class THexConversion : public TConversion
{
public:
  virtual int __fastcall ConvertReadStream(TStream *pStream,
      char *pSrcBuffer, int nBufSize);
};
//---------------------------------------------------------------------------
// 重载 ConvertReadStream 函数
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;
  // 行号,类似UtrlEdit,用8位来表示
  strTemp = strTemp.sprintf("%.8xh: ", pStream-Position);
  n = pStream-Read(szDstBuffer, 16);
  if(n == 0)
    return 0;
  // 显示字符的ASCII值,四个一组,中间用空格分隔
  for(int i=0; in; i++)
  {
    AppendStr(strTemp, IntToHex(szDstBuffer[i], 2) + ' ');
    if((i+1) % 4 == 0)
      AppendStr(strTemp, ' ');
  }
  String str;
  str.StringOfChar(' ', 65 - strTemp.Length());
  AppendStr(strTemp, str + "; ");
  // 显示实际的Ascii字符,如果是非可打印字符,用'.'代替
  for(int i=0; in; 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();
  // 显示加载进度
  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));
}
//---------------------------------------------------------------------------
// 自定义函数,须在.h文件中TForm1类中声明一下,例如:
// public:
//   void __fastcall Process(int nPos);
//
// 为防止不负责任的转载者,在些注明原作及修改者信息,请见谅。
// 原作:张晶晶
// 修改:ccrun(老妖),欢迎光临C++Builder研究: http://www.ccrun.com
//---------------------------------------------------------------------------
void __fastcall TForm1::Process(int nPos)
{
  // 显示加载进度
  StatusBar1-SimpleText = "正在处理... " + String(nPos);
  StatusBar1-Update();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  RichEdit1-Lines-LoadFromFile("C:123123.exe");
  StatusBar1-SimpleText = "加载完成!";
}
//---------------------------------------------------------------------------

来源:http://www.tulaoshi.com/n/20160219/1612373.html

延伸阅读
标签: 电脑入门
在重装系统时把C盘格式化 1、光驱启动 (1)Award Bion 4.51PG设置 重启,按DEL进入BIOS Award 4.51PG界面,用功能键区方向键选第二行"BIOS  Features Setup"(BIOS特性设置),回车进入BIOS Features Setup界面,找到第七行"Boot  Sequence",用PgUp或PgDn翻页将它右边显示的A,C,换成CDROM,C,A。 按ESC,按F1...
对于很多电脑使用者来说,对c盘这个名称并不陌生,不仅很多软件会默认储存在c盘,而且c盘里面都是电脑重要的启动系统,可想而知c盘在电脑里面的重要性了。随着电脑的使用的次数变多,人们对于一些电脑问题也就越发疑惑了。就比如如果我想格式化c盘,那么命令符号有哪些呢?如果我格式化之后会产生什么样的问题呢?以下知识为你详细解答。 ...
标签: 办公软件
在建立一个新的Word文件的时候,一般要使标题居中,设置字体、字号、字形等。我们可以把这些设置工作做成一种固定的格式,每次建立新文档时自动套用这种格式的标题。 在Word 2000中,新建一个Word文档,单击“工具”菜单中的“自动更正”命令。打开“自动更正”对话框,选择“键入时自动套用格式”选项卡,将“键入时自动应用”中的“...
标签: ASP
  如果有一个数字498.8573945,如何把它格式化成两位小数据呢?用过ASP的都知道,在VbScript里我们可以调用FormatNumber,即用FormatNumber(498.8573945,2)就可以输出:498.86。 由于JavaScript里没有这个函数,那么我们该如何实现呢?下面我就给出这个函数,大家可以把:<SCRIPT LANGUAGE=javascript src="http://img.jcwcn.com/...
一:大家可以去百度一下搜索一款U盘杀毒专家。 二:点击下载,然后安装U盘查杀软件。 三:将U盘插入电脑,打开U盘杀毒专家,选择需要扫描对象,一共有内存、本地硬盘、移动存储设备三个选项,推荐全选,然后点击开始扫描。 ...

经验教程

601

收藏

36
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部