我正在寻找一种方法从当前的Internet Explorer URL返回一个字符串作为字符串。
这种方法使用dde。它非常快并且运行良好,除了它返回一个非常长的字符串,两个部分都带有引号。
uses
ddeman;
function GetURL(Service: string): string;
var
ClDDE: TDDEClientConv;
temp: PAnsiChar;
begin
Result := '';
ClDDE := TDDEClientConv.Create(nil);
with ClDDE do
begin
SetLink(Service, 'WWW_GetWindowInfo');
temp := RequestData('0xFFFFFFFF');
Result := StrPas(temp);
StrDispose(temp);
CloseLink;
end;
ClDDE.Free;
end;
例如,这会返回: “http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg”, “http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg”
但我只是在没有引号的第一个逗号之前找到第一部分: http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg
对于另一种方法的任何建议或如何解析字符串以产生没有引号而只显示字符串的第一部分的结果?
答案 0 :(得分:2)
您可以自己解析字符串:
// Extract string up to position of the ,
Temp := Copy(Temp, 1, Pos(',', Temp) - 1);
// Remove double-quotes from resulting string
Temp := StringReplace(temp, '"', '', [rfReplaceAll]);
这是一个示例控制台应用程序,它使用您提供的示例响应上面的逻辑,并将最终内容输出到控制台:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
LinkStr = '"http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg","http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg"';
var
Temp: string;
begin
Temp := Copy(LinkStr, 1, Pos(',', LinkStr) - 1);
Temp := StringReplace(Temp, '"', '', [rfReplaceAll]);
Writeln('After: ' + Temp);
ReadLn;
end.
输出: