63 |
|
private |
64 |
|
FItems: array of PParamBlockItemData; |
65 |
|
FBufferSize: integer; |
66 |
+ |
FFirebirdClientAPI: TFBClientAPI; |
67 |
|
procedure AdjustBuffer; |
68 |
|
procedure MoveBy(Item: PParamBlockItemData; delta: integer); |
69 |
|
procedure UpdateRequestItemSize(Item: TParamBlockItem; NewSize: integer); |
74 |
|
function Find(ParamType: byte): PParamBlockItemData; |
75 |
|
function GetItems(index: integer): PParamBlockItemData; |
76 |
|
public |
77 |
< |
constructor Create; |
77 |
> |
constructor Create(api: TFBClientAPI); |
78 |
|
destructor Destroy; override; |
79 |
|
function getBuffer: PByte; |
80 |
|
function getDataLength: integer; |
93 |
|
FOwner: TParamBlock; |
94 |
|
FOwnerIntf: IUnknown; |
95 |
|
FParamData: PParamBlockItemData; |
96 |
+ |
FFirebirdClientAPI: TFBClientAPI; |
97 |
|
protected |
98 |
|
property ParamData: PParamBlockItemData read FParamData; |
99 |
|
public |
196 |
|
|
197 |
|
TDPB = class (TCustomParamBlock<TDPBItem,IDPBItem>, IDPB) |
198 |
|
public |
199 |
< |
constructor Create; |
199 |
> |
constructor Create(api: TFBClientAPI); |
200 |
|
end; |
201 |
|
|
202 |
|
{ TTPB } |
203 |
|
|
204 |
|
TTPB = class (TCustomParamBlock<TTPBItem,ITPBItem>, ITPB) |
205 |
|
public |
206 |
< |
constructor Create; |
206 |
> |
constructor Create(api: TFBClientAPI); |
207 |
|
end; |
208 |
|
|
209 |
|
{ TSPB } |
210 |
|
|
211 |
|
TSPB = class (TCustomParamBlock<TSPBItem,ISPBItem>, ISPB) |
212 |
|
public |
213 |
< |
constructor Create; |
213 |
> |
constructor Create(api: TFBClientAPI); |
214 |
|
end; |
215 |
|
|
216 |
|
{ TSRB } |
225 |
|
|
226 |
|
TBPB = class (TCustomParamBlock<TBPBItem,IBPBItem>, IBPB) |
227 |
|
public |
228 |
< |
constructor Create; |
228 |
> |
constructor Create(api: TFBClientAPI); |
229 |
|
end; |
230 |
|
|
231 |
|
TDIRB = class (TCustomParamBlock<TDIRBItem,IDIRBItem>, IDIRB); |
277 |
|
begin |
278 |
|
FOwner.UpdateRequestItemSize(self,count + 4); |
279 |
|
Result := source.Read((FBufPtr+3)^,count); |
280 |
< |
with FirebirdClientAPI do |
280 |
> |
with FFirebirdClientAPI do |
281 |
|
EncodeInteger(Result,2,FBufPtr+1); |
282 |
|
(FBufPtr+Result + 3)^ := isc_info_end; |
283 |
|
if Result <> count then |
305 |
|
begin |
306 |
|
inherited Create; |
307 |
|
FOwner := AOwner; |
308 |
+ |
FFirebirdClientAPI := AOwner.FFirebirdClientAPI; |
309 |
|
FOwnerIntf := AOwner; |
310 |
|
FParamData := Data; |
311 |
|
end; |
312 |
|
|
313 |
|
function TParamBlockItem.getAsInteger: integer; |
314 |
|
begin |
315 |
< |
with FirebirdClientAPI, FParamData^ do |
315 |
> |
with FFirebirdClientAPI, FParamData^ do |
316 |
|
case FDataType of |
317 |
|
dtInteger: |
318 |
|
Result := DecodeInteger(FBufPtr+1,4); |
357 |
|
end; |
358 |
|
dtString2: |
359 |
|
begin |
360 |
< |
with FirebirdClientAPI do |
360 |
> |
with FFirebirdClientAPI do |
361 |
|
len := DecodeInteger(FBufPtr+1,2); |
362 |
|
SetString(Result,PAnsiChar(FBufPtr+3),len); |
363 |
|
end; |
402 |
|
P := FBufPtr + FBufLength; |
403 |
|
len := FBufLength + 2; |
404 |
|
FOwner.UpdateRequestItemSize(self,len); |
405 |
< |
with FirebirdClientAPI do |
405 |
> |
with FFirebirdClientAPI do |
406 |
|
EncodeInteger(aValue,2,P); |
407 |
|
end; |
408 |
|
end; |
438 |
|
begin |
439 |
|
if FBufLength <> 5 then |
440 |
|
FOwner.UpdateRequestItemSize(self,5); |
441 |
< |
with FirebirdClientAPI do |
441 |
> |
with FFirebirdClientAPI do |
442 |
|
EncodeInteger(aValue,4,FBufPtr+1); |
443 |
|
FDataType := dtInteger; |
444 |
|
end; |
453 |
|
if FBufLength <> 6 then |
454 |
|
FOwner.UpdateRequestItemSize(self,6); |
455 |
|
(FBufPtr+1)^ := $4; |
456 |
< |
with FirebirdClientAPI do |
456 |
> |
with FFirebirdClientAPI do |
457 |
|
EncodeInteger(aValue,4,FBufPtr+2); |
458 |
|
FDataType := dtInteger1; |
459 |
|
end; |
467 |
|
begin |
468 |
|
if FBufLength <> 7 then |
469 |
|
FOwner.UpdateRequestItemSize(self,7); |
470 |
< |
with FirebirdClientAPI do |
470 |
> |
with FFirebirdClientAPI do |
471 |
|
begin |
472 |
|
EncodeInteger(4,2,FBufPtr+1); {Encode length as two bytes} |
473 |
|
EncodeInteger(aValue,4,FBufPtr+3); |
482 |
|
begin |
483 |
|
if FBufLength <> 3 then |
484 |
|
FOwner.UpdateRequestItemSize(self,3); |
485 |
< |
with FirebirdClientAPI do |
485 |
> |
with FFirebirdClientAPI do |
486 |
|
EncodeInteger(aValue,2,FBufPtr+1); |
487 |
|
FDataType := dtShortInteger; |
488 |
|
end; |
494 |
|
begin |
495 |
|
if FBufLength <> 2 then |
496 |
|
FOwner.UpdateRequestItemSize(self,2); |
497 |
< |
with FirebirdClientAPI do |
497 |
> |
with FFirebirdClientAPI do |
498 |
|
EncodeInteger(aValue,1,FBufPtr+1); |
499 |
|
FDataType := dtTinyInteger; |
500 |
|
end; |
529 |
|
if len > 65535 then |
530 |
|
IBError(ibxStringTooLong,[aValue,65535]); |
531 |
|
FOwner.UpdateRequestItemSize(self,len + 3); |
532 |
< |
with FirebirdClientAPI do |
532 |
> |
with FFirebirdClientAPI do |
533 |
|
EncodeInteger(len,2,FBufPtr+1); |
534 |
|
if len > 0 then |
535 |
|
Move(aValue[1],(FBufPtr+3)^,len); |
639 |
|
end; |
640 |
|
end; |
641 |
|
|
642 |
< |
constructor TParamBlock.Create; |
642 |
> |
constructor TParamBlock.Create(api: TFBClientAPI); |
643 |
|
begin |
644 |
|
inherited Create; |
645 |
+ |
FFirebirdClientAPI := api; |
646 |
|
GetMem(FBuffer,128); |
647 |
|
if FBuffer = nil then |
648 |
|
OutOfMemoryError; |
808 |
|
|
809 |
|
{ TDPB } |
810 |
|
|
811 |
< |
constructor TDPB.Create; |
811 |
> |
constructor TDPB.Create(api: TFBClientAPI); |
812 |
|
begin |
813 |
< |
inherited Create; |
813 |
> |
inherited Create(api); |
814 |
|
FDataLength := 1; |
815 |
|
FBuffer^ := isc_dpb_version1; |
816 |
|
end; |
817 |
|
|
818 |
|
{ TTPB } |
819 |
|
|
820 |
< |
constructor TTPB.Create; |
820 |
> |
constructor TTPB.Create(api: TFBClientAPI); |
821 |
|
begin |
822 |
< |
inherited Create; |
822 |
> |
inherited Create(api); |
823 |
|
FDataLength := 1; |
824 |
|
FBuffer^ := isc_tpb_version3; |
825 |
|
end; |
826 |
|
|
827 |
|
{ TSPB } |
828 |
|
|
829 |
< |
constructor TSPB.Create; |
829 |
> |
constructor TSPB.Create(api: TFBClientAPI); |
830 |
|
begin |
831 |
< |
inherited Create; |
831 |
> |
inherited Create(api); |
832 |
|
FDataLength := 2; |
833 |
|
FBuffer^ := isc_spb_version; |
834 |
|
(FBuffer+1)^ := isc_spb_current_version; |
836 |
|
|
837 |
|
{ TBPB } |
838 |
|
|
839 |
< |
constructor TBPB.Create; |
839 |
> |
constructor TBPB.Create(api: TFBClientAPI); |
840 |
|
begin |
841 |
< |
inherited Create; |
841 |
> |
inherited Create(api); |
842 |
|
FDataLength := 1; |
843 |
|
FBuffer^ := isc_bpb_version1; |
844 |
|
end; |