Indyを介してTMemoryStreamを送信するための最良の方法は何ですか?
現時点で私が試しているのは:
procedure TClientForm.IdTCPClient1Connected(Sender: TObject);
begin
IdTCPClient1.IOHandler.Write(KStore.Size);
KStore.Position := 0;
IdTCPClient1.IOHandler.Write(KStore);
Memo1.Lines.Add('Client connected with server');
end
そしてサーバー側で:
function MemoryStreamToString(M: TMemoryStream): string;
begin
SetString(Result, PChar(M.Memory), M.Size div SizeOf(Char));
end;
procedure TClientForm.IdTCPServer1Connect(AContext: TIdContext);
var
LStore: TMemoryStream;
Size: Int64;
LStore := TMemoryStream.Create;
LStore.Position := 0;
Size := AContext.Connection.IOHandler.ReadInt64();
AContext.Connection.IOHandler.ReadStream(LStore,Size);
end;
しかし、エラーがないにもかかわらず、もう一方の端でそのメモリストリームを文字列関数に使用すると、????????????????????が返されます。保存先のテキストファイルにあります。