因为Str調用的是一个网頁的源代码,要实现的功能是,找到开始与结束间的字符并返回.现在发现了一个問題,就是如何STR过长的话,b:=pos(e,Str); 总是返回0,也就是找不到...
如果找的是网頁开头的<title>,那就没問題...怎么会这样,要如何攺进?谢了...//调用
Htm:= idhttp1.get(URL);
Str:=GetStr('<H2>','</H2>',Htm);//取得开始到结束间的字符//函数
function GetStr(s:String;e:String;Str:widestring):string;
var
a, b,l: Integer;
begin
Result:='';
a:=pos(s,Str); //开始
b:=pos(e,Str); //结束
l:=length(s); //长度
Result := copy(Str,(a+l),(b-a-l));
end;
http://topic.csdn.net/u/20080109/23/88319f29-0242-4f5a-890f-0974075608b9.html
a, b: Integer;
s: string;
begin
a := PosEx('<A', Memo1.Text, 1);
if a = 0 then
a := PosEx('<a', Memo1.Text, 1);
if a = 0 then Exit; // 不存在<a或<A退出
a := PosEx('>', Memo1.Text, a + 2);
if a = 0 then Exit; // 语法错误退出
Inc(a);
b := PosEx('</A>', Memo1.Text, a);
if b = 0 then
b := PosEx('</a>', Memo1.Text, a);
if b = 0 then Exit; // 无结束标记,错误退出
s := Copy(Memo1.Text, a, b - a);
ShowMessage(s);
end;
回楼上..原因我查到了,应该不是函数的問題..进入函数GetStr后打印出来的STR,还是完整的..但是b:=pos(e,Str) 这一个过程就出错..我怀疑是POS不能过长的字符的原故...不然,您试一下:
Htm:= idhttp1.get('http://www.163.com'); 我查一下..先...
回楼上,我也试过了用PosEx 发现同样的问题,攺成POS后还是一样奇怪......