|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Записать в базу данных шестнадцатеричную переменную
Привет всем. Вопрос. Записываю в базу данных SQL Server в поле типа binary(50) переменную равную r.intv2 := $FFFF;. В базу значение записывается равное 0x8E0014000000FFFF00000000...., от куда берутся первые шесть байт и как мне их убрать. Код программы:
Код:
var Form1: TForm1; type TTest = packed record intv2 : integer; end; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var dp : TParameter; ms : TMemoryStream; r : TTest; begin r.intv2 := $FFFF; ADOQuery1.SQL.Text := 'INSERT INTO qwe(qwe) VALUES (:qwe)'; dp := ADOQuery1.Parameters.ParamByName('qwe'); ms := TMemoryStream.Create(); ms.Write(r, sizeof(r)); dp.LoadFromStream(ms, ftBlob); ADOQuery1.ExecSQL(); end; Может кто подскажет более правильное решение.... |
#2
|
||||
|
||||
Посмотри, что в стриме. Попробуй стриму задать размер с твое поле и записать туда нули.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Цитата:
Если же я заменяю ftBlob на ftBytes, то всё нормально сохраняет: |