Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
1-1104994334
Zhekson
2005-01-06 09:52
2005.01.23
Типизированный StringList


1-1105544827
chir
2005-01-12 18:47
2005.01.23
Sender... кто же вызвал процедуру?...


8-1097520657
Альфред
2004-10-11 22:50
2005.01.23
Как где скачать установить компонент DelphiX


14-1104569831
Sergey_Masloff
2005-01-01 11:57
2005.01.23
Текс-текс смотрим кто вчера злоупотребил ;-)


10-1081842614
Polevi
2004-04-13 11:50
2005.01.23
BindToObject