Форум: "Сети";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизLoadFromStream Найти похожие ветки
← →
Ozone © (2004-11-01 10:03) [0]Не знал куда запостить... думаю если что, модераторы подправят.
Получаю от клиента стрим (Indy):
AThread.Connection.ReadStream(_file, StrToInt(size), false);
В этом стриме лежит jpg-картинка.
Когда делаю
jpg: TJpegImage;
{...}
jpg.LoadFromStream(_file);
jpg.SaveToFile("..."); // для проверки
То в итоге файл = 0 байт.
А если просто
_file.SaveToFile("...")
то все нормально...
В чем грабли, подскажите...
← →
Reindeer Moss Eater © (2004-11-01 10:10) [1]В чем грабли, подскажите...
В алгоритме получающем size
← →
Verg © (2004-11-01 10:17) [2]......
_file.Position := 0; // Не это ли ?
jpg.LoadFromStream(_file);
.....
← →
Reindeer Moss Eater © (2004-11-01 10:19) [3]SaveToFile все равно и без этого позиционируется в начало.
← →
Verg © (2004-11-01 10:21) [4]
> Reindeer Moss Eater © (01.11.04 10:19)
> SaveToFile все равно и без этого позиционируется в начало.
А LoadFromStream у TJpegImage ?
← →
Ozone © (2004-11-01 10:23) [5]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) [6]У него файло нулевого размера получается.
Отсюда вывод, что ошибон раньше, в приеме потока.
← →
Reindeer Moss Eater © (2004-11-01 10:27) [7]Зачем эти лишние преобразования размера в строку?
Где трассировка принятой от клиента длины?
Где результаты её сравнения с размером оригинального файла?
← →
Ozone © (2004-11-01 10:35) [8]Reindeer Moss Eater © (01.11.04 10:27) [7]
// Зачем эти лишние преобразования размера в строку?
??? просто не знаю как передать и получить просто число
//Где трассировка принятой от клиента длины?
//Где результаты её сравнения с размером оригинального файла?
Debugger показал следующее :
size = _file.size
← →
Ozone © (2004-11-01 10:35) [9]Удалено модератором
Примечание: Дубль...
← →
Verg © (2004-11-01 10:46) [10]
> Reindeer Moss Eater © (01.11.04 10:23)
> У него файло нулевого размера получается.
Ну конечно. так как jpg получился пустой, так как его загрузили из потока, находящегося к этому моменту в конце посли приема из сокета.
Я не знаю как делает именно TJpegImage, но вот TBitmap
procedure TBitmap.LoadFromStream(Stream: TStream);
begin
ReadStream(Stream, Stream.Size - Stream.Position);
end;
← →
Verg © (2004-11-01 10:47) [11]Удалено модератором
Примечание: Дубль...
← →
Ozone © (2004-11-01 10:47) [12]Verg © (01.11.04 10:17) [2]
Вы оказались правы... Спасибо.
← →
Rouse_ © (2004-11-01 15:26) [13]Удалено модератором
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.054 c