请问怎么将控件作为参数传递阿

Y.A.K.E 2014-03-15 09:38:19
比如我有多个webborwser控件

要写一个自定义的函数
就是获取这个webborwser页面的cookie
//webbrowser1.OleObject.document.cookie



function get_cookie(webobj:TWebbrowser):string; //这里报错
begin
get_cookie:=webobj.OleObject.document.cookie;
end;



TWebbrowser如果说类名不可以传递的话,那么我换TObject 没问题.
关键是没有那个属性OleObject.document.cookie阿.
...全文
346 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
LastAvengers 2014-04-04
  • 打赏
  • 举报
回复
引用 13 楼 xunni1000 的回复:
[quote=引用 12 楼 LastAvengers 的回复:] [quote=引用 11 楼 xunni1000 的回复:] [quote=引用 5 楼 LastAvengers 的回复:] 声明里webobj:Tobject; TWebBowser(webobj).OleObject.document.cookie;
[dcc32 Error] Unit1.pas(192): E2003 Undeclared identifier: 'TWebBowser' XE5...[/quote] 虽然我打错了。。但是WebBrowser1: TWebBrowser;这种错误都查不出来? TWebBrowser(webobj).OleObject.document.cookie;[/quote] 那天其实我看到了,你看我前面连续回帖3次。。。。[/quote] 看来我似乎错了……
Y.A.K.E 2014-04-01
  • 打赏
  • 举报
回复
引用 12 楼 LastAvengers 的回复:
[quote=引用 11 楼 xunni1000 的回复:] [quote=引用 5 楼 LastAvengers 的回复:] 声明里webobj:Tobject; TWebBowser(webobj).OleObject.document.cookie;
[dcc32 Error] Unit1.pas(192): E2003 Undeclared identifier: 'TWebBowser' XE5...[/quote] 虽然我打错了。。但是WebBrowser1: TWebBrowser;这种错误都查不出来? TWebBrowser(webobj).OleObject.document.cookie;[/quote] 那天其实我看到了,你看我前面连续回帖3次。。。。
LastAvengers 2014-03-19
  • 打赏
  • 举报
回复
引用 11 楼 xunni1000 的回复:
[quote=引用 5 楼 LastAvengers 的回复:] 声明里webobj:Tobject; TWebBowser(webobj).OleObject.document.cookie;
[dcc32 Error] Unit1.pas(192): E2003 Undeclared identifier: 'TWebBowser' XE5...[/quote] 虽然我打错了。。但是WebBrowser1: TWebBrowser;这种错误都查不出来? TWebBrowser(webobj).OleObject.document.cookie;
Y.A.K.E 2014-03-19
  • 打赏
  • 举报
回复
引用 5 楼 LastAvengers 的回复:
声明里webobj:Tobject; TWebBowser(webobj).OleObject.document.cookie;
[dcc32 Error] Unit1.pas(192): E2003 Undeclared identifier: 'TWebBowser' XE5...
Y.A.K.E 2014-03-19
  • 打赏
  • 举报
回复
引用 4 楼 unearth 的回复:

//试试这样的格式
function getButton(const Ptr: Pointer): Boolean;
var
  btn: TButton;
begin
  btn := TButton(Ptr);  //将指针强制转换成TButton
  ShowMessage(btn.Caption);
end;
理论上可以,但是指针是哪里来的,求教.
Y.A.K.E 2014-03-19
  • 打赏
  • 举报
回复
引用 6 楼 sololie 的回复:
[quote=引用 3 楼 xunni1000 的回复:] [quote=引用 2 楼 sololie 的回复:] 另外你这个函数怎么是个无限递归,而且也没有返回值
还是不会阿. 在函数和过程内给函数名赋值就是返回,这个是强制返回.[/quote] 嗯,我看走眼成get_cookie(.... 递归了 俺这里编译并没有报错,你是运行时报错还是编译时报错 function get_cookie(webobj:TWebBrowser):string; //这里报错 begin get_cookie:= webobj.OleObject.document.cookie; end;[/quote] 现在也不报错了...应该是忘记uses了...
sololie 2014-03-16
  • 打赏
  • 举报
回复
另外你这个函数怎么是个无限递归,而且也没有返回值
sololie 2014-03-16
  • 打赏
  • 举报
回复
uses OleCtrls, SHDocVw;
孤独de猫 2014-03-16
  • 打赏
  • 举报
回复

//试试这样的格式
function getButton(const Ptr: Pointer): Boolean;
var
  btn: TButton;
begin
  btn := TButton(Ptr);  //将指针强制转换成TButton
  ShowMessage(btn.Caption);
end;
Y.A.K.E 2014-03-16
  • 打赏
  • 举报
回复
引用 2 楼 sololie 的回复:
另外你这个函数怎么是个无限递归,而且也没有返回值
还是不会阿. 在函数和过程内给函数名赋值就是返回,这个是强制返回.
simonhehe 2014-03-16
  • 打赏
  • 举报
回复
你的函数声明没问题. 只是提取cookie的代码错了
uses mshtml;
{$R *.dfm}
function get_cookie(webobj:TWebbrowser):string;
begin
  if (webobj = nil) or (webobj.Document = '') then
    exit('');

  get_cookie := (webobj.Document as IHTMLDocument2).cookie;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  caption := get_cookie(WebBrowser1);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('http://www.baidu.com');
end;
sololie 2014-03-16
  • 打赏
  • 举报
回复
还有,报什么错
sololie 2014-03-16
  • 打赏
  • 举报
回复
引用 3 楼 xunni1000 的回复:
[quote=引用 2 楼 sololie 的回复:] 另外你这个函数怎么是个无限递归,而且也没有返回值
还是不会阿. 在函数和过程内给函数名赋值就是返回,这个是强制返回.[/quote] 嗯,我看走眼成get_cookie(.... 递归了 俺这里编译并没有报错,你是运行时报错还是编译时报错 function get_cookie(webobj:TWebBrowser):string; //这里报错 begin get_cookie:= webobj.OleObject.document.cookie; end;
LastAvengers 2014-03-16
  • 打赏
  • 举报
回复
声明里webobj:Tobject; TWebBowser(webobj).OleObject.document.cookie;

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧