解决方案 »
- 用delphi写activeX控件,放到vb.net2005线程中去跑,退出就会报错
- 如何保证udp接收数据时客户端先发送的数据,服务器端先收到。(分不够再加)
- 求救:已经获得 查询数据库的记录 存在数据集中 可以对数据集合中定位一组数据查询
- Panel上放Image,如何让Image后面的字能够被看到?
- 大家帮帮我,关于数据查询,我头都有大了。百分相送。
- 在程序运行期间如何动态增删字段?
- 是不是在倒分,大家自己看看,我也不知道~~~~~~
- 关于dbgrid的问题,我的执行时程序行颜色为什么不会变,这段程序应当如何改?如果这的不能实现请说明原因?
- 关于TListItem的Data属性
- 32bit 深度历险变成了sex站点
- DLL回调函数,无法正常调用,不知道哪出错了[100分求解]
- 初学的一个小问题,请大家帮忙看一下,关于创建类的实例
// s 要搜索的内容
function findfile(const Flod,s:string):tstringlist;
var
sr:TSearchRec; //定义 TSearchRec 结构变量
Attr: Integer; //文件属性
begin
if DirectoryExists(Flod) then //判断文件夹是否存在
begin
Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件
if FindFirst(Flod + '*'+s+'*.txt',Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
begin
repeat //如果有第一个就继续找
//找到指定条件的文件
until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
end;
FindClose(sr); //需要结束搜索, 搜索是内含句柄的
end;
end;
// s 要搜索的内容
function findfile(const Flod,s:string):tstringlist;
var
sr:TSearchRec; //定义 TSearchRec 结构变量
Attr: Integer; //文件属性
begin
if DirectoryExists(Flod) then //判断文件夹是否存在
begin
Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件
if FindFirst(Flod + '*'+s+'*.txt',Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
begin
repeat //如果有第一个就继续找
result:=result + ',' + sr.name //找到指定条件的文件
until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
end;
FindClose(sr); //需要结束搜索, 搜索是内含句柄的
end;
end;
可以实现,但如果txt中指定的内容有多处存在,如何处理?是只搜索第一个,还是都要搜索到?如果都要搜索到,那就不是你本贴标题上的小问题了。
主要就是实现文本查找、匹配,如果不追求性能应当不复杂
想研究一下,可参考grep源码
按你的要求我改了下[code=Delphi(Pascal//参数说明: Flod 文件夹后面带 \
// s 要搜索的内容
function findfile(const Flod,s:string):tstringlist;
var
sr:TSearchRec; //定义 TSearchRec 结构变量
Attr: Integer; //文件属性
f:TFileStream;
str:string;
begin
if DirectoryExists(Flod) then //判断文件夹是否存在
begin
Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件
if FindFirst(Flod + '*.txt',Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
begin
repeat //如果有第一个就继续找
//主要是这里 找到文件后进行文件内容的匹配
try
f:=TFileStream.Create(sr.Name,fmopenread);
setlength(str,f.Size);
f.Read(str[1],f.Size);
if pos(s,str)>0 then
result.Add(sr.name);
setlength(str,0);
finally
f.Free;
end;
until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
end;
FindClose(sr); //需要结束搜索, 搜索是内含句柄的
end;
end;[/code]
// s 要搜索的内容
function findfile(const Flod,s:string):tstringlist;
var
sr:TSearchRec; //定义 TSearchRec 结构变量
Attr: Integer; //文件属性
f:TFileStream;
str:string;
begin
if DirectoryExists(Flod) then //判断文件夹是否存在
begin
Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件
if FindFirst(Flod + '*.txt',Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
begin
repeat //如果有第一个就继续找
//主要是这里 找到文件后进行文件内容的匹配
try
f:=TFileStream.Create(sr.Name,fmopenread);
setlength(str,f.Size);
f.Read(str[1],f.Size);
if pos(s,str)>0 then
result.Add(sr.name);
setlength(str,0);
finally
f.Free;
end;
until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
end;
FindClose(sr); //需要结束搜索, 搜索是内含句柄的
end;
end;
setlength(str,f.Size);
f.Read(str[1],f.Size);
if pos(s,str)>0 then这四句话是什么意思?小弟新手,请各位老手继续带一下,非常感谢!!!