Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизКак прочитать в Array поле Binary ? Найти похожие ветки
← →
Sasha_M © (2004-02-19 17:59) [0]Вот текст программы:
Var
Ar : Array [0..1000] of Byte;
f : TField;
i : Cardinal;
begin
For i:=0 to 1000 do Ar[i]:=0;
f:=ADOQuery1.FieldByName("Reg_vBinary");
ADOQuery1.GetFieldData(f,Addr(Ar));
Если смотреть утилитой SQL Server Query Analyzer - она дает результат 0x93B2000038B0090003000100760000... , а в Delphi в Array [17,32,0,0,0,0,0,0,160,61,23,0,0,0,0,0,0,0,0,0,0,...].
Если массив сначало заполнять чем-то отличным от нуля, то при обращении к .GetFieldData( вылазит ошибка "Invalid variant operation".
При чтении других полей (не "Reg_vBinary", других типов) все Ок!
P.S.: С базами на Делфи работаю в первый раз! Базу создавал не я!
← →
ZrenBy © (2004-02-19 18:07) [1]procedure TForm1.Button3Click(Sender: TObject);
var V:Variant; S:String; i:Integer;
begin
ADODataSet1.CommandText := "select * from TBL_B where ID=1";
ADODataSet1.Open;
V := ADODataSet1.Fields[1].Value;
ADODataSet1.Close;
S := "0x";
for i:=0 to(VarArrayHighBound(V,1))do S:=S+IntToHex(V[i],2);
Memo1.Lines.Text := S;
end;
← →
Sasha_M © (2004-02-19 18:56) [2]Попытался проверить - лезет ошибка "List index out of bounds (1)" на строке V:=....
А что я делал не правильно ? (или все правильно, но там Hex, а там Dec)?
← →
ZrenBy © (2004-02-19 19:04) [3]V := ADODataSet1.FieldByName("Reg_vBinary").Value;
← →
Sasha_M © (2004-02-19 19:24) [4]Теперь на строке for i:=0 .... - ошибка "Variant is not an array". ЗАСАДА! Никогда не любил тип Variant!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.054 c