Trec = record
tt : array[0..4] of char;
yy : array[0..4] of char;
gg : array[0..4] of char;
end;
이렇게 선언해서 구조체를 $20으로 초기화한 후 스트림으로 보내면
첫째 필드가 4문자 이하일때는 수신되기를 tt필드값만 수신되더군요.
첫째 필드가 5문자이면 그 이 다음 필드도 수신이 됩니다. 두번째 필드도
길이에 따라 세번째 필드가 수신되거나 안되거나 하구요.
이거 다 보낼려면 어떻게 해야되죠?
대신 선언을 string[5]으로 했을 경우는 첫째 필드가 4문자 이하라 하더라도
수신측에서는 다 받습니다. 단, '|1 |12 |123' 이렇게..
엉뚱한 문자 없이 순 데이타만 받아졌으면 좋겠거든요.
이거 왜 이렇죠? 좀 갈켜 주세요...
혹여.. 소스입니다.
수신..
var
hh : trec;
qq : TMemoryStream;
cc : string;
begin
qq := TMemoryStream.Create;
qq.Position := 0;
setlength(cc, numberbytes);
nmudp1.ReadStream(qq);
qq.Read(cc[1], numberbytes);
qq.Free;
end;
송신 ..
var
hh : trec;
qq : tmemorystream;
fillchar(myrec, sizeof(trec), $20);
myrec.tt := '1';//edit1.text;
myrec.yy := '12';//edit2.text;
myrec.gg := '123';//edit3.text;
qq := TMemoryStream.Create ;
qq.Write(myrec, sizeof(trec));
NMUDP1.SendStream(qq);
qq.Free;
end;
간단히 이와 같습니다요..