荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: duck (我是一棵树), 信区: SoftDev
标  题: [合集]这段程序在做什么事情?
发信站: 荔园晨风BBS站 (2006年01月15日22:33:36 星期天), 站内信件

☆   1  ──────────── 我是分割线 ─────────────────☆
发信人: limee (lily), 信区: SoftDev
标  题: 这段程序在做什么事情?
时  间: 2005年10月31日21:54:43 星期一

delphi的版本和C++Build版本
procedure TForm1.Search1Click(Sender: TObject);stdcall;
var
   Size : Integer;
   Buffer : PChar;
begin
   if (FindDialog1.Execute()) then
   begin
     Size := Memo1.SelLength;
     Size : Size + 1;
     GetMem(Buffer,Size);
     Memo1.GetSelTextBuf(Buffer,Size);
     FindDialog1.FindText := Buffer;
     FreeMem(Buffer);
end;
void __fastcall TForm1::Search1Click(TObject *Sender)
{
  if (FindDialog1->Execute())
 {
  int Size = Memo1->SelLength;
  Size++;
  char *Buffer = new char[Size];
  Memo1->GetSelTextBuf(Buffer,Size);
  FindDialog1->FindText = Buffer;
  delete Buffer;
  }
}


☆   2  ──────────── 我是分割线 ─────────────────☆
发信人: duck (Delphi小王子), 信区: SoftDev
标  题: Re: 这段程序在做什么事情?
时  间: 2005年11月01日18:13:02 星期二

这段代码做以下东西:

   if (FindDialog1.Execute()) then  //如果查找窗口打开则执行以下动作
   begin
     Size := Memo1.SelLength;       //获得文本框内选择的字符串的长度
     Size : Size + 1;
     GetMem(Buffer,Size);           //在内存中创建空间
     Memo1.GetSelTextBuf(Buffer,Size);//设置Size
     FindDialog1.FindText := Buffer;//设置查找窗口中的文字
     FreeMem(Buffer);               //释放空间
end;

这段代码是要把文本框中选择的文字自动作为查找窗口内的查找内容,
但是有个错误,FindDialog1.Execute()事件是在按下"查找下一个时发生的"
所以这段代码不会执行的,如果要做到把文本框的选择内容自动填进查找窗口内
应该在按下按钮时执行

     Size := Memo1.SelLength;       //获得文本框内选择的字符串的长度
     Size : Size + 1;
     GetMem(Buffer,Size);           //在内存中创建空间
     Memo1.GetSelTextBuf(Buffer,Size);//设置Size
     FindDialog1.FindText := Buffer;//设置查找窗口中的文字
     FreeMem(Buffer);               //释放空间

然后执行FindDialog1.Execute打开查找窗口,
而查找动作在FindDialog1Find过程中定义
另外:
     Size : Size + 1;要写成     Size := Size + 1;
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.111.118]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.111.118]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店