Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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

Последний раз редактировалось Admin, 09.07.2018 в 21:19.
Ответить с цитированием
  #2  
Старый 09.07.2018, 22:42
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от alexsis_76
...код сохранения в файл
А нужно было показать наполнение AData, может в итерациях цикла сбой, напр. результат последней в оно не добавляется
Ответить с цитированием
  #3  
Старый 10.07.2018, 00:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Скорее, там символ #0 где-нить проскакивает. Вот данные и обрезаются.
Пиши сразу в TFileStream, без промежуточной String (которая у тебя text).
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter