828
社区成员
发帖
与我相关
我的任务
分享
function StreamToText(Stream: TMemoryStream): String;
var
tls:TStringList;
begin
Result := '';
tls := TStringList.Create;
try
tls.LoadFromStream(Stream);
Result := tls.Text;
finally
tls.Free;
end;
end;
function TextToStream(Text: string): TMemoryStream;
var
tls:TStringList;
begin
Result := TMemoryStream.Create;
tls := TStringList.Create;
try
tls.Text := Text;
tls.SaveToStream(Result);
finally
tls.Free;
end;
end;
function mysend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
ss, temp: string;
Stream, st:TMemoryStream;
begin
Stream := TMemoryStream.Create;
Stream.Write(buf,len);
Stream.Position := 0;
ss := StreamToText(Stream);
ss := StringReplace(ss, '*/*', '1/1', [rfReplaceAll, rfIgnoreCase]);
//我目的是可以任意修改buf内容长度,*/*是例子测试的
//长度不变没问题. 如果换成 111/11111 就不行了,没办法GetMeM改buf长度
st := TextToStream(ss);
st.Position := 0;
st.Read(Buf, st.Size);
Result := oldsend(s, Buf, st.Size, flags);
end;