아래는 레코드 선언부입니다.
Type
TMyREC = Record
A : String;
B : String;
C : String;
End;
TMyRECArray = array of TMyREC;
다음은 서버측입니다.
procedure TFormServer.IdTCPServer1Execute(AContext: TIdContext);
Var
MyRECArray : TMyRECArray;
MemoryStream : TMemoryStream;
Begin
...
...
...
SetLength(MyRECArray, 3);
MyRECArray[0].A := 'A1';
MyRECArray[0].B := 'B1';
MyRECArray[0].C := 'C1';
MyRECArray[1].A := 'A2';
MyRECArray[1].B := 'B2';
MyRECArray[1].C := 'C2';
MyRECArray[2].A := 'A3';
MyRECArray[2].B := 'B3';
MyRECArray[2].C := 'C3';
MemoryStream := TMemoryStream.Create;
MemoryStream.Write(MyRECArray, SizeOf(TMyRECArray) );
AContext.Connection.IOHandler.Write(MemoryStream, 0, True);
MemoryStream.Free;
...
...
End;
다음은 클라이언트입니다.
Var
MemoryStream : TMemoryStream;
MyRECArray : TMyRECArray;
Begin
...
...
...
MemoryStream := TMemoryStream.Create;
IdTCPClient.IOHandler.ReadStream(MemoryStream, 0, True);
MemoryStream.Position := 0;
FillChar(MyRECArray, SizeOf(TMyRECArray), 0);
MemoryStream.Read (MyRECArray, SizeOf(TMyRECArray));
MemoryStream.Free;
....
....
End;
이렇게 하면 실행에러는 없는데 클라이언트쪽에서 데이터를 확인해 보면 아무것도 없습니다.
어디가 잘못되었는지 알려주시면 감사하겠습니다.
|