![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Посмотри, что в стриме. Попробуй стриму задать размер с твое поле и записать туда нули.
|
|
#3
|
||||
|
||||
|
Цитата:
Если же я заменяю ftBlob на ftBytes, то всё нормально сохраняет: ![]() |