我正在尝试从Google搜索结果中提取网址.我使用Indy IdHTTP从Google获取HTML结果,并使用Achmad Z的代码从页面获取链接href.如何获取每个网址的真实链接目标,而不是通过Google重定向程序的网址?
我试过了,但是在这段代码中我得到了"操作数不适用"的错误:
function ToUTF8Encode(str: string): string;
var
b: Byte;
begin
for b in BytesOf(UTF8Encode(str)) do
begin
Result := Format('%s%s%.2x', [Result, '%', b]);
end;
end;
Run Code Online (Sandbox Code Playgroud)
我使用Delphi 7和Indy 9.00.10.也许indy update会有帮助吗?
如何从Delphi中删除ListBox中的重复项?我知道这个:
for i := ListBox1.Items.Count-1 downto 1 do
for j := 0 to i-1 do
if ListBox1.Items[i] = ListBox1.Items[j] then
ListBox1.Items.Delete[i];
Run Code Online (Sandbox Code Playgroud)
但是,只有当前10个字母相同时我才需要删除重复项,所以我试过这个:
for i := ListBox1.Items.Count-1 downto 1 do
for j := 0 to i-1 do
if copy(ListBox1.Items[i],1,11) = copy(ListBox1.Items[j],1,11) then
ListBox1.Items.Delete[i];
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试删除重复项时,我得到了债券错误列表:(
将网页源下载到备忘录组件的最快方法是什么?我使用Indy和HttpCli组件.
问题是我有一个填充了100多个站点的列表框,我的程序将源代码下载到备忘录并解析该源文件的mp3文件.它类似于谷歌音乐搜索程序; 它使用Google查询来简化Google搜索.
我开始阅读导致我的问题的线程:我可以在具有解析功能的线程中创建一个IdHttp实例并告诉它解析列表框中的一半网站吗?
所以基本上当用户点击解析时,主线程应该这样做:
for i := 0 to listbox1.items.count div 2 do
get and parse
Run Code Online (Sandbox Code Playgroud)
,另一个线程应该做:
for i := form1.listbox1.items.count div 2 to form1.listbox1.items.count - 1 do
get and parse.
Run Code Online (Sandbox Code Playgroud)
,所以他们会form1.listbox2在同一时间添加解析的内容.或者在主线程中启动两个IdHttp实例可能更容易; 一个是上半部分,另一个是第二个?
为此:我应该使用Indy还是Synapse?