因此,我已经开始使用SMS进行游戏,并且试图让一个程序(标签和按钮)通过发布请求打开网站并显示结果。如何使用TW3HttpRequest发送POST数据
我没有问题提示/警告/错误,一切看起来不错。以下代码是对现有示例的修改。
procedure TForm1.ExecuteCmd;
var
whttp : TW3HttpRequest;
wParams : string;
begin
wHttp := TW3HttpRequest.Create;
try
whttp.OnDataReady := lambda (Sender)
if (w3Label1.caption = '') then
w3Label1.caption := wHttp.ResponseText;
end;
whttp.OnReadyStateChange := lambda (Sender)
if (wHttp.ReadyState = 4) and (wHttp.Status = 200) then
begin
if (w3Label1.caption = '') then
w3Label1.caption := wHttp.ResponseText;
end;
end;
wParams := 'cmd=TestID1';
whttp.open('POST','http://www.server1.com/executecmd.php');
whttp.RequestHeaders['Content-type'] := 'application/x-www-form-urlencoded';
whttp.Send(wParams);
finally
wHttp.free;
end;
end;
procedure TForm1.W3Button1Click(Sender: TObject);
begin
ExecuteCmd;
end;
问题是这样的,当我真正按一下按钮我收到以下错误信息: 遗漏的类型错误:无法读取空的特性“readyState的” [行#6277]
,误差值在自动生成的代码,似乎与我写的具体没有关系。如果我从我的代码中删除对ReadyState的所有引用,我仍然会收到错误消息。
我错过了什么?我觉得它与Lambda函数有关。
感谢贾布尔这正是问题了。通过取出'whttp.free;'解决了这个问题。一旦你解释了它,JavaScript是一种垃圾收集语言,它总是有意义的。我想如果我要尝试使用短信,我将不得不改变我对这些类型的事情的想法。 –