0

我遇到了这个令人难以置信的疯狂错误!我将 idhttpserver,webbrowser 放到一个新的移动 android 应用程序上。

我希望服务器向浏览器提供内容。它在 Windows 上运行良好,但在我的 android 设备上失败。我测试了一个 tcpserver 和 tcpclient。我可以让客户端连接,但是当我启动 writeln 和 readln 时出现分段错误。

即使我在调试应用程序的情况下运行仍然崩溃......这是代码片段。

procedure TForm37.Button1Click(Sender: TObject);
begin
  IdHTTPServer1.Bindings.Add;
  try
    IdHTTPServer1.Active := true; 
    if IdHTTPServer1.Active then
      Button1.Text := 'Server Started';
  except on E: Exception do
    Button1.Text := 'Server Failed';
  end;
end;

procedure TForm37.Button2Click(Sender: TObject);
var
  astring : string;
begin
  try
    astring := IdHTTP1.Get('http://10.0.1.78:6000/');
    // or  astring := IdHTTP1.Get('http://127.0.0.1:6000/');
    ShowMessage(astring);
  except on E: Exception do
    Button2.Text := 'connection failed';
  end;
end;

procedure TForm37.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentText := 
    '<html><head><title>My First Response</title></head>' +
    '<body>Command: ' + ARequestInfo.Command +
    '<br />Host: ' + ARequestInfo.Host +
    '<br />URI: ' + ARequestInfo.URI +
    '<br />UserAgent: ' + ARequestInfo.UserAgent +
    '</body></html>';
end;
4

1 回答 1

0

这个答案肯定很不受欢迎。我也在尝试使用 XE5 开发一个 FM HD Android Datasnap 应用程序,而且我每时每刻都会遇到分段错误 (11)!这是完全不可预测的。编译为 Win32 目标不会产生错误。例如:按钮的事件处理程序将在第一次单击按钮时成功执行并完成,然后在第二次单击时它将无缘无故地产生分段错误。在这一点上,我的应用程序几乎没有任何用处,但我花了好几个小时试错一个错误才能让它完成它的工作。我个人认为 Delphi XE5 中的 Android 开发实际上并不可行,除非你碰巧已经使用其他开发者开发 Android 应用程序。环境和/或您整天都没有比与之抗争更好的事情要做。

于 2013-11-19T15:58:32.907 回答