![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с TStream
Grim © (2004-11-30 17:11:00)Доброго времени суток всем!
Есть такие процедуры.
type
TActorInfo = record
Model: Byte;
Number: String[10];
Course, Speed,
X, Z: Single;
Enabled: Boolean;
end;
TActorList = array of TActorInfo;
procedure Array2Stream(const A: TActorList; S: TStream);
procedure Stream2Array(var A: TActorList; S: TStream);
implementation
procedure Array2Stream(const A: TActorList; S: TStream);
var
Size, Index: Integer;
begin
// Write out the size of the array
Size := Length(A);
S.Write(Size, SizeOf(Size));
for Index := 0 to Size - 1
do S.Write(A[Index], SizeOf(TActorInfo));
end;
procedure Stream2Array(var A: TActorList; S: TStream);
var
Size, Index: Integer;
begin
S.Read(Size, SizeOf(Size));
SetLength(A, Size);
for Index := 0 to Size - 1
do S.Read(A[Index], SizeOf(TActorInfo));
end;
Когда я Делаю Array2Stream(Arr, FileStream); //записываю массив в файл
А потом Stream2Array(..., то все все перекрасно работает.
А если я скидываю массив в MemoryStream, и посылаю через idUDPClient.SendBuffer(IP, Port, MemStream, MemStream.Size);
то на другом конце массив преобразуется обратно некорректно.
Я даже на том конце сохранять в FileStream. Полученный файл совпадает по размеру, но не по содержанию - с файлом, сохраненным "здесь".
В чем может быть дело? Заранее благодарен за советы.
Grim (2004-12-01 17:01:00) [1]Только что попробовал отсылать MemStream.Memory^. Заработало! Огромное спасибо за подсказку. Я этого свойства даже не приметил.
Grim (2004-12-01 17:01:00) [2]Только что попробовал отсылать MemStream.Memory^. Заработало! Огромное спасибо за подсказку. Я этого свойства даже не приметил.
Alex_Petr (2004-11-30 19:04:00) [3]Может надо использовать MemStream.Memory ?