KbmMW Bug修复及群友改进汇总(持续更新中…)

注意:本人使用的版本为4.00.03 Enterprise,以下勘误及群友改进建议本人均基于此版本验证,其他版本请自行对照验证。

异常信息被框架拦截

  • 单元:kbmMWFileClient.pas
  • 行号:238
  • Bug描述:当调用GetFile方法时,如果你用try…catch捕获异常来判断是否执行成功,就会发现不能捕获到任何异常,因为在框架中作者已经try…catch了异常,且未抛出,这就需要用raise再次抛出。
function TkbmMWCustomFileClient.GetStreamEx(Stream:TStream; RemotePath:string; const Args:array of Variant):boolean;
var
   ofs:integer;
   pct:integer;
   token:integer;
   terminate:boolean;
   v:variant;
   va:TkbmMWArrayVariant;
begin
     token:=-1;
     ofs:=0;
     va:=kbmMWConcatOpenVariantArrays([token,ofs,RemotePath],Args);
     Result:=true;
     try
        terminate:=false;
        while true do
        begin
             ResultStream.Clear;

             // Sending format: TOKEN, OFS, PATH
             va[0]:=token;
             va[1]:=ofs;
             v:=SendRequest(FFileService,FFileServiceVersion,'GET',va);
             Stream.CopyFrom(ResultStream,ResultStream.Size);

             // Result format.: TOKEN, OFS, SIZE
             if v[2]<>0 then
                pct:=trunc((v[1] / v[2])*100)
             else
                pct:=100;
             if Assigned(FOnProgress) then FOnProgress(self,pct,true,terminate);
             if terminate then
             begin
                  if not KeepPartialFileOnCancel then Result:=false;
                  break;
             end;
             if v[1]=v[2] then break;
             token:=v[0];
             ofs:=v[1];
        end;
     except
        if not KeepPartialFileOnException then Result:=false;
        raise; //fix bug
     end;
end;

基于Unidac/Oracle的连接池创建缺少参数

  • 单元:kbmMWUniDAC.pas
  • 行号:308
  • Bug描述:使用Unidac和Oracle时,创建连接池会因缺少Server而出现异常(直连方式则又需设置Port)。
procedure TkbmMWUNIDACConnection.InternalOpenConnection(ConnectionPool:TkbmMWCustomConnectionPool);
begin
     // Create new database connection using template.
     with TkbmMWUNIDACConnectionPool(ConnectionPool).FDBTemplate do
     begin
          FDatabase.Database := Database;
          FDatabase.Username := UserName;
          FDatabase.Password := Password;
          FDatabase.LoginPrompt := False;
          FDatabase.ProviderName := ProviderName;
          FDatabase.Server := Server; //Fix bug
          FDatabase.Port := Port; //Fix bug
          FDatabase.SpecificOptions.Assign(SpecificOptions);

          with TkbmMWUNIDACConnectionPool(ConnectionPool) do
               if Assigned(FOnSetupDBConnection) then FOnSetupDBConnection(self,FDatabase);
     end;
     FDatabase.Open;
end;

转载请注明:梧桐树下 » KbmMW Bug修复及群友改进汇总(持续更新中…)

与本文相关文章

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项