【发布时间】:2017-05-03 12:37:27
【问题描述】:
我创建了一个 VCL 应用程序,我需要创建一个在我的网络中运行的 HTTP 服务器。我创建了您可以在下面看到的代码:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
a: TStringList;
count, logN: integer;
begin
if ARequestInfo.Document = '/' then
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentText := IndexMemo.Lines.Text;
Memo1.Lines.Add(' Client: ' + ARequestInfo.RemoteIP);
end
else
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentText := '<html><body><b>404 NOT FOUND</b></body></html>';
end;
end;
现在我只有一个测试用例if ARequestInfo.Document = '/' then,但以后我会需要很多。我找到了这个解决方案:
- 在表单中添加备忘录
- 在备忘录中添加html
- 在
ContextText中加载备忘录的文本
我认为这不是很有效,因为我必须在我的表单中删除大约 20 个 TMemo 并且 HTML 将难以维护。我以为我可以用Deployment manager 加载html页面。
在 Delphi 项目的同一个文件夹中,我创建了一个名为 pages 的文件夹,它将包含 html 文件。我不确定如何使用 indy HTTP 服务器加载 html 页面,所以我的问题是:
- 是否必须将 html 页面存储在文件夹中的某个位置,然后使用 indy 加载它们?
- 我可以使用 indy 加载部署页面中包含的 html 页面吗?
注意:我想要一个 exe(即 http 服务器)而不是包含 exe + html 文件的文件夹。我找到的解决方案效果很好,因为我使用了很多TMemo 来存储代码,但这并不容易维护。
【问题讨论】: