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 отличается от того что записывал, куда копать?