📄 transinterface.pas
字号:
if Result then
begin
AStream.Position := 0;
APairList.LoadFromStream(AStream);
end;
finally
AStream.Free;
end;
end;
function TScanClient.AddListValuePair(AID: string;
APair: TListValuePair): boolean;
var
AStream: TMemoryStream;
ACmd: TMethodDefine;
AIDSize: integer;
begin
AStream := TMemoryStream.Create;
try
ACmd := mdAddListValuePair;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AIDSize := Length(AID);
AStream.Write(AIDSize, SizeOf(Integer));
AStream.Write(AID[1], AIDSize);
APair.SaveToStream(AStream);
Result := fTransClient.Operate(AStream);
finally
AStream.Free;
end;
end;
function TScanClient.InternalGetParameters(
const AObjectLevel: TStorageObjectLevel;
AParamList: TParameterList): boolean;
var
AStream: TTempFileStream;
ACmd: TMethodDefine;
begin
AStream := TTempFileStream.Create(Temp_Prefix);
try
case AObjectLevel of
solFolder: ACmd := mdGetFldParameters;
solTransaction: ACmd := mdGetTxnParameters;
solDocument: ACmd := mdGetDocParameters;
else begin
Result := false;
Raise Exception.CreateRes(@RS_InvaildObjectLevel);
exit;
end
end;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AParamList.SaveToStream(AStream);
Result := fTransClient.Retrieve(AStream);
if Result then
begin
AStream.Position := 0;
AParamList.LoadFromStream(AStream);
end;
finally
AStream.Free;
end;
end;
function TScanClient.GetFolderParameters(
AParamList: TParameterList): boolean;
begin
Result := InternalGetParameters(solFolder, AParamList);
end;
function TScanClient.GetTransactionParameters(
AParamList: TParameterList): boolean;
begin
Result := InternalGetParameters(solTransaction, AParamList);
end;
function TScanClient.GetDocumentParameters(
AParamList: TParameterList): boolean;
begin
Result := InternalGetParameters(solDocument, AParamList);
end;
function TScanClient.InternalGetParameter(
const AObjectLevel: TStorageObjectLevel; AID: String;
AParameter: TParameter): boolean;
var
AStream: TTempFileStream;
ACmd: TMethodDefine;
begin
AStream := TTempFileStream.Create(Temp_Prefix);
try
case AObjectLevel of
solFolder: ACmd := mdGetFldParameter;
solTransaction: ACmd := mdGetTxnParameter;
solDocument: ACmd := mdGetDocParameter;
else begin
Result := false;
Raise Exception.CreateRes(@RS_InvaildObjectLevel);
exit;
end
end;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AParameter.ID := AID;
AParameter.SaveToStream(AStream);
Result := fTransClient.Retrieve(AStream);
if Result then
begin
AStream.Position := 0;
AParameter.LoadFromStream(AStream);
end;
finally
AStream.Free;
end;
end;
function TScanClient.GetFolderParameter(AID: String;
AParameter: TParameter): boolean;
begin
Result := InternalGetParameter(solFolder, AID, AParameter);
end;
function TScanClient.GetTransactionParameter(AID: String;
AParameter: TParameter): boolean;
begin
Result := InternalGetParameter(solTransaction, AID, AParameter);
end;
function TScanClient.GetDocumentParameter(AID: String;
AParameter: TParameter): boolean;
begin
Result := InternalGetParameter(solDocument, AID, AParameter);
end;
function TScanClient.InternalAddParameter(
const AObjectLevel: TStorageObjectLevel; AParameter: TParameter): boolean;
var
AStream: TTempFileStream;
ACmd: TMethodDefine;
begin
AStream := TTempFileStream.Create(Temp_Prefix);
try
case AObjectLevel of
solFolder: ACmd := mdAddFldParameter;
solTransaction: ACmd := mdAddTxnParameter;
solDocument: ACmd := mdAddDocParameter;
else begin
Result := false;
Raise Exception.CreateRes(@RS_InvaildObjectLevel);
exit;
end
end;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AParameter.SaveToStream(AStream);
Result := fTransClient.Operate(AStream);
finally
AStream.Free;
end;
end;
function TScanClient.AddFolderParameter(AParam: TParameter): boolean;
begin
Result := InternalAddParameter(solFolder, AParam);
end;
function TScanClient.AddTransactionParameter(AParam: TParameter): boolean;
begin
Result := InternalAddParameter(solTransaction, AParam);
end;
function TScanClient.AddDocumentParameter(AParam: TParameter): boolean;
begin
Result := InternalAddParameter(solDocument, AParam);
end;
function TScanClient.InternalUpdateParameter(
const AObjectLevel: TStorageObjectLevel;
AParameter: TParameter): boolean;
var
AStream: TTempFileStream;
ACmd: TMethodDefine;
begin
AStream := TTempFileStream.Create(Temp_Prefix);
try
case AObjectLevel of
solFolder: ACmd := mdUpdateFldParameter;
solTransaction: ACmd := mdUpdateTxnParameter;
solDocument: ACmd := mdUpdateDocParameter;
else begin
Result := false;
Raise Exception.CreateRes(@RS_InvaildObjectLevel);
exit;
end
end;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AParameter.SaveToStream(AStream);
Result := fTransClient.Operate(AStream);
finally
AStream.Free;
end;
end;
function TScanClient.UpdateFolderParameter(AParam: TParameter): boolean;
begin
Result := InternalUpdateParameter(solFolder, AParam);
end;
function TScanClient.UpdateTransactionParameter(
AParam: TParameter): boolean;
begin
Result := InternalUpdateParameter(solTransaction, AParam);
end;
function TScanClient.UpdateDocumentParameter(AParam: TParameter): boolean;
begin
Result := InternalUpdateParameter(solDocument, AParam);
end;
function TScanClient.InternalDeleteParameter(
const AObjectLevel: TStorageObjectLevel; AParamID: string): boolean;
var
AStream: TTempFileStream;
ACmd: TMethodDefine;
AParam: TParameter;
begin
AStream := nil;
AParam := nil;
try
case AObjectLevel of
solFolder: ACmd := mdDeleteFldParameter;
solTransaction: ACmd := mdDeleteTxnParameter;
solDocument: ACmd := mdDeleteDocParameter;
else begin
Result := false;
Raise Exception.CreateRes(@RS_InvaildObjectLevel);
exit;
end
end;
AStream := TTempFileStream.Create(Temp_Prefix);
AParam := TParameter.Create;
AParam.ID := AParamID;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AParam.SaveToStream(AStream);
Result := fTransClient.Operate(AStream);
finally
AParam.Free;
AStream.Free;
end;
end;
function TScanClient.DeleteFolderParameter(AID: String): boolean;
begin
Result := InternalDeleteParameter(solFolder, AID);
end;
function TScanClient.DeleteTransactionParameter(AID: String): boolean;
begin
Result := InternalDeleteParameter(solTransaction, AID);
end;
function TScanClient.DeleteDocumentParameter(AID: String): boolean;
begin
Result := InternalDeleteParameter(solDocument, AID);
end;
function TScanClient.GetAllRejectedFolders(
AFolders: TFolderList): boolean;
{var
AStream: TTempFileStream;
ACmd: TMethodDefine; }
begin
Result := InternalGetFolderList(mdGetAllRejectedFolder, AFolders);
{ AStream := TTempFileStream.Create(Temp_Prefix);
try
ACmd := mdGetAllRejectedTrans;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
Result := fTransClient.Retrieve(AStream);
if Result then
begin
AStream.Position := 0;
ATransList.LoadFromStream(AStream);
end;
finally
AStream.Free;
end; }
end;
function TScanClient.GetAllReleaseFolders(AFolders: TFolderList): boolean;
begin
Result := InternalGetFolderList(mdGetAllReleaseFolder, AFolders);
end;
function TScanClient.InternalGetFolderList(ACmd: TMethodDefine;
AFolders: TFolderList): boolean;
var
AStream: TTempFileStream;
begin
AStream := TTempFileStream.Create(Temp_Prefix);
try
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
AFolders.SaveToStream(AStream);
Result := fTransClient.Retrieve(AStream);
if Result then
begin
AStream.Position := 0;
AFolders.LoadFromStream(AStream);
end;
finally
AStream.Free;
end;
end;
function TScanClient.GetBranchID: string;
var
AStream: TMemoryStream;
ACmd: TMethodDefine;
ASize: integer;
begin
AStream := TMemoryStream.Create;
try
ACmd := mdGetBranchID;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
if fTransClient.Retrieve(AStream) then
begin
AStream.Position := 0;
AStream.Read(ASize, Sizeof(Integer));
SetLength(Result, ASize);
AStream.Read(Result[1], ASize);
end
else Result := '';
finally
AStream.Free;
end;
end;
function TScanClient.GetReleaserCount: integer;
var
AStream: TMemoryStream;
ACmd: TMethodDefine;
begin
AStream := TMemoryStream.Create;
try
ACmd := mdGetReleaserCount;
AStream.WriteBuffer(ACmd, Sizeof(TMethodDefine));
if fTransClient.Retrieve(AStream) then
begin
AStream.Position := 0;
AStream.Read(Result, Sizeof(Integer))
end
else Result := -1;
finally
AStream.Free;
end;
end;
function TScanClient.GetTransaction(ATransaction: TTransac
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -