TFileStriam.Write BLOB различные результаты

Gerasimenko
Дата: 24.12.2019 15:49:44
Исходные данные:
DELPHI 7, MSSQL2008 R2
файл грузится в блоб-поле и сохраняется в varbinary(MAX):
A) с клиента средствами ADO
Б) с mssql- сервера c помощью OPENROWSET

Результат:
сохраняем из varbinary(MAX) в блоб
+ например, так

var
         myStream:TStream;
         fStream:TFileStream;
      ...
      begin
     ....
       myStream:=dsTemp.CreateBlobStream(dsTemp.FieldByName('FileValues'),bmRead);
       myStream.Position:=0;
       fStream.CopyFrom(myStream,myStream.Size);
       fStream.Write(fStream,fStream.Size);


и получаем:

из DELPHI
А) все хорошо
Б) Содержимое файла + такое же количество мусора приписанного после содержимого файла (как аски в юникод и получаем половину нужный файл целиком, половину мусора)

из MSSQL:
А) все хорошо
Б) все хорошо

CODPAGE на стороне mssql- сервера (OPENROWSET) на ситуацию не влияет.

Что характерно: размер на клиенте указан правильно, fStream.Size но жесточайше воспринимает как юникод или нечто подобное.

Чёт туплю: может кто сталкивался?

ps: можно, конечно, и через mssql выгрузить, но это не совсем то решение, которое хотелось бы
_Vasilisk_
Дата: 24.12.2019 16:00:24
Gerasimenko
fStream.Write(fStream,fStream.Size);
Это что за хрень? Чего хотелось достичь?
goldmi45
Дата: 24.12.2019 16:01:02
Gerasimenko,

а разве для записи не достаточно fStream.CopyFrom(myStream,myStream.Size); ? Зачем ещё fStream.Write(fStream,fStream.Size);
Gerasimenko
Дата: 24.12.2019 16:03:08
goldmi45
Gerasimenko,

а разве для записи не достаточно fStream.CopyFrom(myStream,myStream.Size); ? Зачем ещё fStream.Write(fStream,fStream.Size);

Как пример. И так и так. Для чистоты эксперимента.
Gerasimenko
Дата: 24.12.2019 16:04:05
_Vasilisk_,
22047863
Gerasimenko
Дата: 24.12.2019 16:08:48
Gerasimenko
_Vasilisk_,
22047863

Вопрос, в какую сторону рыть: АДО или MSSQL
_Vasilisk_
Дата: 24.12.2019 16:24:09
Gerasimenko
Как пример. И так и так. Для чистоты эксперимента.
Если у вас эксперимент подразумевает запись хрени, то почему вы удивляетесь, что записалась хрень?
Gerasimenko
Дата: 24.12.2019 16:30:50
_Vasilisk_
Gerasimenko
Как пример. И так и так. Для чистоты эксперимента.
Если у вас эксперимент подразумевает запись хрени, то почему вы удивляетесь, что записалась хрень?

Ок. Почему все же в первом случае хрень не воспринимается как хрень, а во втором воспринимается как хрень.
Сейчас танцую с бубнами и смотрю на размеры и т.д. Что попалось то и подставил в например. Суть не меняется.
В первом случае Хрень не Хрень. Во втором: хрень есть хрень
_Vasilisk_
Дата: 24.12.2019 16:34:28
Gerasimenko
Ок. Почему все же в первом случае хрень не воспринимается как хрень, а во втором воспринимается как хрень.
Потому, что в первом случае вы вополняете копирование Stream, а во втором записываете произвольные fStream.Size байт, начиная с адреса @fStream

Я еще раз спрашиваю, чего хочется достичь?
Gerasimenko
Дата: 24.12.2019 16:37:40
_Vasilisk_
Gerasimenko
Ок. Почему все же в первом случае хрень не воспринимается как хрень, а во втором воспринимается как хрень.
Потому, что в первом случае вы вополняете копирование Stream, а во втором записываете произвольные fStream.Size байт, начиная с адреса @fStream

Я еще раз спрашиваю, чего хочется достичь?
щас гляну еще раз помутневшим глазом