Показать сообщение отдельно
  #1  
Старый 09.07.2018, 15:31
alexsis_76 alexsis_76 вне форума
Прохожий
 
Регистрация: 09.07.2018
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
Печаль Ошибки в файле

Добрый день.
Проблема следующего характера.Устройство посылает в сеть udp пакеты (файл картинки 640х480),передача ведется пакетами по 1024 байта,50 пакетов 1024 и а пакет 320 байт.На стороне компьютера пакеты собираются в файл,так вот при сохранении в файл теряются байты,картинка искажается причем характер искажений постоянный(байты отсутствуют в одних и тех же позициях)размер файла меньше оригинального всегда на одну и ту же величину,сниффер показывает что все пакеты прибыли 50 пакетов 1024кб и 1-320 байт,если скопировать принятые пакеты со сниффера, то получается переданная картинка байт в байт, искажения отсутствуют,если в программе сохранять каждый блок в отдельный файл то получается 50 файлов по 1024 кб 1 по 320, получим 51520 что совпадает с размером исходного файла, при копировании в один файл его размер всегда равен 50722 кб, в какую сторону копать? переробовал все что можно, думал что заваливает пакетами-поставил задежку между посылками 1 сек -то же самое.код сохранения в файл
Код:
begin
text:='';

MemStream:= TMemoryStream.Create;
MemStream.CopyFrom(AData, AData.Size);
MemStream.Position:=0;
SetString(text, nil, MemStream.Size);
MemStream.Read(Pointer(text)^,MemStream.Size);
memo.Lines.Add(IntToStr(MemStream.Size));
AssignFile(myFile, 'video.jpg');
if FileExists ('video.jpg')
then
begin
Append (myFile);
end
else
begin
Rewrite (myFile);
end;
Write(myFile,text);
CloseFile(myFile);
MemStream.free;

end;
Админ: для оформления кода предназначен тег CODE
Ответить с цитированием