Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Проблемка, посоветуйте плиз (двоичные данные)   Найти похожие ветки 

 
неважно   (2003-10-22 17:23) [0]

В общем нужно мне хранить в МС СКЛ данные полученные с модема, т.е. бинарные. в принципе 500 байт хватит.
я сделал в таблице поле varbinary(500). Как понимаю надо работать с этими полями как Blob ? Пробую по разному, не получается, сейчас останавился на :
передаю в хранимую процедуру
with ADOStoredProc do
Begin
ProcedureName:="PR_INSJOB";
Parameters.Clear;
Parameters.CreateParameter("BUF",ftBlob,pdInput,500,null);
S:=TMemoryStream.Create;
S.Clear;
S.SetSize(len);
S.Write(BUF,len);
// Parameters.ParamByName("BUF").LoadFromStream(S,ftBlob);
Parameters.ParamByName("BUF").LoadFromFile("debug.txt",ftBlob);
S.SaveToFile("debug.txt");
Parameters.CreateParameter("LENBUF",ftInteger,pdInput,100,null);
Parameters.ParamValues["LENBUF"]:=len;
Prepared:=true;
ExecProc;

У меня в результате в таблицу пишется только 1 байт, хотя в файл пишется весь буфер :(

2) Как потом считать ?
пробую через TBlobField ошибку выдаёт.

Кстати работаю через АДО.

Подскажите плиз как лучше сделать.


 
Митяй ©   (2003-10-22 17:32) [1]

"Котёнка с таким именем, во дворе ждут одни неприятности."
Г-ну Неважно.
С уважением, Митяй!


 
ZrenBy ©   (2003-10-22 17:36) [2]

Попробуй так

var V:Variant;
V := VarArrayCreate([0,499],varByte);

ADO.Parameters.CreateParameter("@V",ftBytes,pdInput,500, V);

Во всяком случае я с binary(8) именно так работаю


 
ZrenBy ©   (2003-10-22 17:37) [3]

Попробуй так

var V:Variant;
V := VarArrayCreate([0,499],varByte);

ADO.Parameters.CreateParameter("@V",ftBytes,pdInput,500, V);

Во всяком случае я с binary(8) именно так работаю


 
оченьважно   (2003-10-22 17:37) [4]

Удалено модератором
Примечание: А ты тут причем?


 
оченьважно   (2003-10-22 17:45) [5]

Удалено модератором
Примечание: А ты тут причем?


 
оченьважно   (2003-10-22 19:08) [6]

Удалено модератором
Примечание: А ты тут причем?


 
ZrenBy ©   (2003-10-23 09:40) [7]


var wS : WideString;
V,V2 : Variant;
i : Integer;
S : String;
begin
V := VarArrayCreate([0,499],varByte);
for i := 0 to 499 do V[i] := i mod 255;
S := "0x";
for i := 0 to 499 do S := S+ IntToHex(V[i],2);

wS := "insert into TBL_B (ID,B500)values(1,"+S+")";

ADOCommand1.CommandText := wS;
ADOCommand1.Execute;

V2 := VarArrayCreate([0,25],varByte);
for i := 0 to 25 do V2[i] := i mod 255;
S := "0x";
for i := 0 to 25 do S := S+ IntToHex(V2[i],2);

wS := "insert into TBL_B (ID,B500)values(2,"+S+")";

ADOCommand1.CommandText := wS;
ADOCommand1.Execute;
end;

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;

ADODataSet1.CommandText := "select * from TBL_B where ID=2";
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);
Memo2.Lines.Text := S;
end;


 
Polevi ©   (2003-10-23 10:20) [8]

BinToHex - и сохраняй в Varchar поле



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-40918
3APA3A
2003-10-25 15:52
2003.11.13
Как создать autoincrement ное поле


3-40909
Term
2003-10-20 13:00
2003.11.13
Помогите сообразить


3-41095
Zn
2003-10-22 16:36
2003.11.13
Ошибка переполнения в IBQuery.


1-41428
Elic
2003-10-29 07:20
2003.11.13
LoadFromStream для ТImage.Picture


3-41074
alexsc
2003-10-23 17:31
2003.11.13
вопрос