在流

时间:2018-01-11 11:33:49

标签: delphi stream filestreams tstream

我需要此代码中的帮助

这是所有代码

请求:TIdHTTPRequestInfo

回应:TIdHTTPResponseInfo

JQuery:TResourceStream

procedure TServer.ActiveServer;
begin
  DefaultPort := 8117;
  Active := True;
  OnCommandGet := FServerCommandGet;
  JQuery := TResourceStream.Create(HInstance,'JQuery',RT_RCDATA);
end;

function TServer.FindFiles: Boolean;
var
  Stream : TStream;
begin
  if Request.Document = '/jquery.js' then
  begin
    Response.ContentType := 'application/x-javascript';
    Stream := TStream.Create;
    Stream.Position := 0;
    Stream.CopyFrom(JQuery,JQuery.Size);
    Response.ContentStream := Stream;
    Result := True;
  end else
    Result := False;
end;

错误:TStream.Seek未实现

问题在于TStream中的TResourceStream副本

1 个答案:

答案 0 :(得分:2)

TStream是一个抽象类,所以它不能直接使用,你必须使用它的后代。例如TResourceStream

P.S:我看到你正在与Indy打交道,在分配给ContentStream时不需要释放流,Indy会为你处理。

function TServer.FindFiles: Boolean;
var
  Stream : TResourceStream;
begin
  if Request.Document = '/jquery.js' then
  begin
    Response.ContentType := 'application/x-javascript';
    Response.ContentStream := TResourceStream.Create(HInstance, 'JQuery', RT_RCDATA);
    Result := True;
  end else
  begin
    Result := False;
  end;
end;