![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
LoadFromStream [D7, WinXP]
Ozone © (2004-11-01 10:03:00)Не знал куда запостить... думаю если что, модераторы подправят.
Получаю от клиента стрим (Indy):
AThread.Connection.ReadStream(_file, StrToInt(size), false);
В этом стриме лежит jpg-картинка.
Когда делаю
jpg: TJpegImage;
{...}
jpg.LoadFromStream(_file);
jpg.SaveToFile('...'); // для проверки
То в итоге файл = 0 байт.
А если просто
_file.SaveToFile('...')
то все нормально...
В чем грабли, подскажите...
Rouse_ (2004-11-01 15:26:00) [1]Удалено модератором
Verg (2004-11-01 10:47:00) [2]Удалено модератором
Примечание: Дубль...
Ozone (2004-11-01 10:47:00) [3]Verg © (01.11.04 10:17) [2]
Вы оказались правы... Спасибо.
Verg (2004-11-01 10:46:00) [4]
> Reindeer Moss Eater © (01.11.04 10:23)
> У него файло нулевого размера получается.
Ну конечно. так как jpg получился пустой, так как его загрузили из потока, находящегося к этому моменту в конце посли приема из сокета.
Я не знаю как делает именно TJpegImage, но вот TBitmap
procedure TBitmap.LoadFromStream(Stream: TStream);
begin
ReadStream(Stream, Stream.Size - Stream.Position);
end;
Ozone (2004-11-01 10:35:00) [5]Reindeer Moss Eater © (01.11.04 10:27) [7]
// Зачем эти лишние преобразования размера в строку?
??? просто не знаю как передать и получить просто число
//Где трассировка принятой от клиента длины?
//Где результаты её сравнения с размером оригинального файла?
Debugger показал следующее :
size =_file.size
Ozone (2004-11-01 10:35:00) [6]Удалено модератором
Примечание: Дубль...
Reindeer Moss Eater (2004-11-01 10:27:00) [7]Зачем эти лишние преобразования размера в строку?
Где трассировка принятой от клиента длины?
Где результаты её сравнения с размером оригинального файла?
Ozone (2004-11-01 10:23:00) [8]Reindeer Moss Eater © (01.11.04 10:10) [1]
size принимается за шаг до этого. А отсылается так:
// длина файла
FClient.tcpClient.WriteLn(IntToStr(MStream.Size));
// сам файл
FClient.tcpClient.WriteStream(MStream);
Reindeer Moss Eater (2004-11-01 10:23:00) [9]У него файло нулевого размера получается.
Отсюда вывод, что ошибон раньше, в приеме потока.
Verg (2004-11-01 10:21:00) [10]
> Reindeer Moss Eater © (01.11.04 10:19)
> SaveToFile все равно и без этого позиционируется в начало.
А LoadFromStream у TJpegImage ?
Reindeer Moss Eater (2004-11-01 10:19:00) [11]SaveToFile все равно и без этого позиционируется в начало.
Verg (2004-11-01 10:17:00) [12]......
_file.Position := 0; // Не это ли ?
jpg.LoadFromStream(_file);
.....
Reindeer Moss Eater (2004-11-01 10:10:00) [13]В чем грабли, подскажите...
В алгоритме получающем size