下面这段代码实在是看不懂 delphi的语法看不明白 能帮忙解释一下 ‘
帮我看看用vb.net的语法是怎么写的 感激不尽了
Delphi, CB:
procedure TFPProcess.SaveFPData(AQuery: TADOQuery; AFingerID: Integer; AFPData: OleVariant);
var
pData: PChar;
begin
with AQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
Open;
if IsEmpty then
Append
else
Edit;
FieldByName('FingerID').Value := AFingerID;
//保存指纹模板
with TBlobStream(CreateBlobStream(FieldByName('Template'), bmWrite)) do begin
pData := VarArrayLock(AFPData);
try
Write(pData^, VarArrayHighBound(AFPData, 1) - VarArrayLowBound(AFPData, 1) + 1);
finally
VarArrayUnlock(AFPData);
end;
Free;
end;
Post;
Close;
end;
end;
procedure TFPProcess.GetFPData(AQuery: TADOQuery; AFingerID: Integer; var AFPData: OleVariant);
var
pData: PChar;
begin
with AQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
Open;
//读取数据
if not IsEmpty then
with TBlobStream(CreateBlobStream(FieldByName('Template'), bmRead)) do begin
AFPData := VarArrayCreate([0, Size + 1], varByte);
pData := VarArrayLock(AFPData);
try
Read(pData^, Size);
finally
VarArrayUnlock(AFPData);
end;
Free;
end;
Close;
end;
end;
帮我看看用vb.net的语法是怎么写的 感激不尽了
Delphi, CB:
procedure TFPProcess.SaveFPData(AQuery: TADOQuery; AFingerID: Integer; AFPData: OleVariant);
var
pData: PChar;
begin
with AQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
Open;
if IsEmpty then
Append
else
Edit;
FieldByName('FingerID').Value := AFingerID;
//保存指纹模板
with TBlobStream(CreateBlobStream(FieldByName('Template'), bmWrite)) do begin
pData := VarArrayLock(AFPData);
try
Write(pData^, VarArrayHighBound(AFPData, 1) - VarArrayLowBound(AFPData, 1) + 1);
finally
VarArrayUnlock(AFPData);
end;
Free;
end;
Post;
Close;
end;
end;
procedure TFPProcess.GetFPData(AQuery: TADOQuery; AFingerID: Integer; var AFPData: OleVariant);
var
pData: PChar;
begin
with AQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
Open;
//读取数据
if not IsEmpty then
with TBlobStream(CreateBlobStream(FieldByName('Template'), bmRead)) do begin
AFPData := VarArrayCreate([0, Size + 1], varByte);
pData := VarArrayLock(AFPData);
try
Read(pData^, Size);
finally
VarArrayUnlock(AFPData);
end;
Free;
end;
Close;
end;
end;
with do
begin
end
的用法不习惯??
with ado do
beginend针对ado控件进行操作相当于ado.sql.text
ado.open
......
blob字段的数据必须单独修改提交。
ole数据读写前加封锁。
procedure TFPProcess.SaveFPData(AQuery: TADOQuery; AFingerID: Integer; AFPData: OleVariant);
var
pData: PChar;
begin
with AQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID)); //从表zkFingerPrint中取数据
Open;
if IsEmpty then //如果没数据,则添加
Append
else
Edit;
FieldByName('FingerID').Value := AFingerID;//给字段 FingerID赋值
//保存指纹模板
with TBlobStream(CreateBlobStream(FieldByName('Template'), bmWrite)) do begin //想Blob字段Template中写数据
pData := VarArrayLock(AFPData); //锁定数组,并返回一个指针
try
Write(pData^, VarArrayHighBound(AFPData, 1) - VarArrayLowBound(AFPData, 1) + 1);
finally
VarArrayUnlock(AFPData); //解锁
end;
Free;
end;
Post; //提交
Close;
end;
end;
//下面的与上面雷同
procedure TFPProcess.GetFPData(AQuery: TADOQuery; AFingerID: Integer; var AFPData: OleVariant);
var
pData: PChar;
begin
with AQuery do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM zkFingerPrint WHERE FingerID = ' + IntToStr(AFingerID));
Open;
//读取数据
if not IsEmpty then
with TBlobStream(CreateBlobStream(FieldByName('Template'), bmRead)) do begin
AFPData := VarArrayCreate([0, Size + 1], varByte);
pData := VarArrayLock(AFPData);
try
Read(pData^, Size);
finally
VarArrayUnlock(AFPData);
end;
Free;
end;
Close;
end;
end;