Tôi đang sử dụng một MemoryStream để xây dựng một mảng byte tôi cần phải gửi đến một server.I có thre câu hỏi:MemoryStream và xây dựng một mảng byte
1) Có cách nào tốt hơn để xây dựng một loạt các byte hơn thế này?
2) Tại sao mã pice này viết không có thật trong luồng bộ nhớ của tôi?
var
serial : word;
MS : TMemoryStream;
const
somebytes : array [0..1] of byte = ($72,$72);
...
begin
MS := TMemoryStream.Create();
try
MS.Write(somebytes[0],2);
serial := $3E6C;
MS.Write(serial,2);
finally
MS.Free;
end;
Sử dụng trình gỡ lỗi tôi thấy rằng trong luồng được thêm giá trị $ 6F32 thay vì $ 3E6C.
3) Nếu tôi gọi
MS.Position := 2;
và sau đó tôi truy cập PByte (MS.Memory)^tại sao tôi nhận được byte đầu tiên trong dòng thay vì thứ ba?
Để đọc một byte tại một vị trí cụ thể, hãy sử dụng 'MS.Read (SomeByte, 1)' sau khi thiết lập vị trí. –