Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как прочитать в Array поле Binary ? [D6, MSSQL]


Sasha_M ©   (2004-02-19 17:59:00) 

Вот текст программы:

     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.: С базами на Делфи работаю в первый раз! Базу создавал не я!


Sasha_M   (2004-02-19 19:24:00) [1]

Теперь на строке for i:=0 .... - ошибка 'Variant is not an array'. ЗАСАДА!Никогда не любил тип Variant!


ZrenBy   (2004-02-19 19:04:00) [2]

V := ADODataSet1.FieldByName('Reg_vBinary').Value;


Sasha_M   (2004-02-19 18:56:00) [3]

Попытался проверить - лезет ошибка "List index out of bounds (1)" на строке V:=....
  А что я делал не правильно ? (или все правильно, но там Hex, а там Dec)?


ZrenBy   (2004-02-19 18:07:00) [4]

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо