を介してデータを送受信する単純なクライアントおよびサーバーを書き込もうとしていましTMemoryStream
た。クライアントのボタンを押すとbtnTestClick
、エラーが表示
されますAccess violation at address 005D5581 in module 'Client.exe'. Write of adress 00000000
。私は何を間違えますか?
ところで、クライアントサーバー接続は問題なく動作します。thincuzIdTCPClient1Connected
関数が書き込みを行ってい'Client Connected!'
ます。
クライアントコード
procedure TForm1.btnTestClick(Sender: TObject);
var
msRecInfo: TMemoryStream;
arrOf: array of Integer; i:integer;
begin
for i := 0 to 10 do
arrOf[i]:=random(100);
msRecInfo:= TMemoryStream.Create;
try
msRecInfo.Write(arrOf, SizeOf(arrOf));
idTCPClient1.IOHandler.Write(msRecInfo);
finally
msRecInfo.Free;
end;
end;
end
サーバーコード
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
msRecInfo: TMemoryStream;
arrOf: array of Integer; i:integer;
begin
msRecInfo:= TMemoryStream.Create;
try
AContext.Connection.IOHandler.ReadStream(msRecInfo, -1, False);
msRecInfo.Position := 0;
msRecInfo.Read(arrof, SizeOf(arrof));
finally
memo1.Lines.Add(IntToStr(arrOf[1]));
msRecInfo.Free;
end;
//AContext.Connection.IOHandler.ReadStream(msRecInfo, SizeOf(arrOf));
//msRecInfo.Read(arrOf, sizeOf(arrOf));
end;