⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transinterface.pas

📁 一个很好的学习例子,有需要的请下载研究,
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    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 + -