如题~
用delphi 程序实现。
用delphi 程序实现。
解决方案 »
- TwwDBLookupCombo 时间格式转换
- 散分, BS一下liangqingzhi (老之)和zuoansuifeng (饭是用来吃的,老婆是用来过日子的,分当然是用来抢的,我抢,狂抢ING~~~)
- 怎么判断一个窗体已经存在啊??是什么属性,拜托
- 请教,怎样才能在程序将字倒着打印出来?急啊!请各帮帮忙啦!
- 怎样保持numlock始终是亮的?
- 老问题?没搞定!:(
- 谁有向表中存、取图片内容(不是存文件名)的好方法,谢谢
- 请教高手关于visual sourcesafe的问题.
- 我有一个想法……大家看看……(100分)
- 有谁知道点样能不通过邮件服务器的smtp来发信?如有正确的答案,给100分
- 可视化继承得到的MDI子窗口,使用DLL包装,无法被MDI主窗体装载,十万火急!!!!(1000分不食言)
- 请问RichView部件在那个选项卡利?我怎么找不到啊??另外它的用法和RichEdit部件一样吗??
如果文件比较大
一般查找是很快的,主要时间在装入内存上
大体代码为
aa:=Tstringlist.create;
aa.loadformfile('yourfile');
use pos('substr',aa.text);
//这里,你也可以用TstringList的Find方法查找
function Find(const S: string; var Index: Integer): Boolean; virtual;
謝謝~
但是我想要的是在记事本上控制光标移动到第一次出现的关键字的位置.如果没法,也可以考虑把txt内容放在memo上,在memo上定位,当然这样使用起来没有上面那样方便.
procedure TForm1.Button1Click(Sender: TObject);
var
vHandle: THandle;
vBuffer: PChar;
vLength: Integer;
vIndex: Integer;
vString: string;
begin
vHandle := Memo1.Handle; { TODO : 得到句柄 }
vLength := SendMessage(vHandle, WM_GETTEXTLENGTH, 0, 0);
if vLength <= 0 then Exit;
Inc(vLength);
GetMem(vBuffer, vLength);
try
SendMessage(vHandle, WM_GETTEXT, vLength, Integer(vBuffer));
vString := Edit1.Text; //输入字符
vIndex := Pos(vString, vBuffer);
if vIndex <= 0 then Exit;
Dec(vIndex);
SendMessage(vHandle, EM_SETSEL, vIndex, vIndex + Length(vString));
finally
FreeMem(vBuffer, vLength);
end;
end;
---------->
果然是高手啊,太歷害了!用memo可以實現了。
不知在記事本上有沒有辦法實現呢?
var
Found:Longint;
startpos,Toend:integer;
//startpos从选择点到结束点的长度
begin
with Editor do
begin
if sellength<>0 then
startpos:=selstart+sellength
else
startpos:=0;
Toend:=length(text)-startpos;
Found:=FindText(finddialog1.FindText,startpos,Toend,[stMatchCase]);
if Found<>-1 then
begin
setfocus;
Selstart:=Found;
sellength:=Length(finddialog1.FindText);
end
else
messagedlg('没有你想要找的内容或已查找完毕',mtconfirmation,[mbYes],0);
end;
end;//替换
var
Selpos:integer;
begin
with Replacedialog1 do
begin
Selpos:=pos(FindText,Editor.Lines.Text);
if Selpos>0 then
begin
Editor.SelStart:=Selpos-1;
Editor.SelLength:=length(Findtext);
Editor.SelText:=Replacetext;
end
else
messagedlg(Concat('could not find"',Findtext,'"in Editor.'),mtError,[mbYes],0);
end;
end;这是我以前作记事本的一段源码..应该对你有点用
我的专家分都是从数据库,报表这些方面赚来的
其它方面我都好菜的说.只要你得到记事本中Edit的句柄就可以了
----->
这个我还不会呢,我只会得到记事本的handle
vhandle:= FindWindow(nil, '11.txt - 记事本'); { TODO : 得到句柄 }
我瞎试了一下,再加上这句,就刚好得到记事本上edit的handle,哈哈.现在功能都可以实现了.
vhandle:=getwindow(vhandle,gw_child);凑巧而已,不知按正确的操作方法的话应该如何写呢?
vHandle := FindWindow('Notepad', nil);
vHandle := GetWindow(vHandle, GW_CHILD);