Проблема с чтением массива из BLOB поля

Lop77
Дата: 18.06.2009 11:43:19
Всем доброго дня суток.
Итак, суть проблемы. База данных (MSSQL), в ней есть таблица, которая содержит поле 'XX',
тип поля BLOB . Записываю туда динамический массив (array of word), затем считываю, так вот значения то что записываю и считываю различны...хотя размерность массивов совпадает..может кто подскажет в чем проблема? Привожу код....

Записываю
var
PackedStream : TStream;
bufX : array of word;
TempL : integer;


begin
.... {заполнение массива bufX}
....
with ADOQuery do begin
PackedStream := CreateBlobStream(FindField('XX'),bmWrite);
SizeL := length(bufX) * Sizeof(word);
PackedStream.Seek(0, soFromBeginning);
PackedStream.Write(bufX,SizeL);
PackedStream.Free;
end;
.....
end

затем считываю....

var
PackedStream : TStream;
bufX : array of word;
TempL, SizeL : integer;
stm : TmemoryStream;

begin
....
with ADOQuery do begin
PackedStream := CreateBlobStream(FindField('XX'),bmRead);
TempL := trunc(PackedStream.Size/sizeof(word));
SetLength(bufX,TempL);
PackedStream.Seek(0, soFromBeginning);
SizeL := PackedStream.Size;
stm := TMemoryStream.Create;
stm.LoadFromStream(PackedStream);
MoveMemory(bufX,stm.Memory,SizeL);
stm.Free;
end;
.....
end


Воопщем в итоге массив bufX отличается от того что записывал, куда копать?
Lop77
Дата: 18.06.2009 14:22:00
Вопрос снимается, разобрался... тема уже неакутальна..всем спасибо :-)
Lop77
Дата: 18.06.2009 14:44:01
Lop77
Вопрос снимается, разобрался... тема уже неакутальна..всем спасибо :-)

кому интересно..
ошибка была тут

MoveMemory(bufX,stm.Memory,SizeL);

заменил на
stm.Read(bufX,SizeL);