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

📄 unit_global_variant.~pas

📁 a program written by delphi about middle layer
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
  For i := 1 to Length(IntToStr(iNum)) Do
    sTempStr[i + 10 - Length(IntToStr(iNum))] :=
      IntToStr(iNum)[i];
  Result := sTempStr;
end;

function SelectMessageBox(Text:string; CaptionNum: integer; Flags: integer): Integer;
begin
   result := 0;
   if CaptionNum = 1 then
   begin
      case Flags of
      1: result := Application.MessageBox(pchar(Text),'提示',MB_OK + MB_ICONEXCLAMATION + MB_DEFBUTTON1	);
      2: result := Application.MessageBox(pchar(Text),'提示',MB_OKCANCEL + MB_ICONEXCLAMATION + MB_DEFBUTTON1);
      3: result := Application.MessageBox(pchar(Text),'提示',MB_YESNO + MB_ICONEXCLAMATION + MB_DEFBUTTON1);
      end;
   end
   else if CaptionNum = 2 then
   begin
      case Flags of
      1: result := Application.MessageBox(pchar(Text),'错误',MB_OK + MB_ICONERROR + MB_DEFBUTTON1	);
      2: result := Application.MessageBox(pchar(Text),'错误',MB_OKCANCEL + MB_ICONERROR +  MB_DEFBUTTON1);
      3: result := Application.MessageBox(pchar(Text),'错误',MB_YESNO + MB_ICONERROR +  MB_DEFBUTTON1);
      end;
   end;
end;
function GetMac:string;
     procedure NBGetMac(Strings: TStrings);
      function HexBL(by: Byte): String;
      begin
        Result := Format('%x', [by]);
        if Length(Result) < 2 then
          Result := '0' + Result;
      end;
    var
      NCB: TNCB;
      Adapter: TAdapterStatus;
      LanaEnum: TLanaEnum;
      I, J: Integer;
      Str: String;
    begin
      Strings.Clear;
      ZeroMemory(@NCB,SizeOf(NCB));

      NCB.ncb_command := Chr(NCBENUM);
      NetBios(@NCB);

      NCB.ncb_buffer := @LanaEnum;
      NCB.ncb_length := SizeOf(LanaEnum);
      NCB.ncb_command := Chr(NCBENUM);
      NetBios(@NCB);

      for I := 0 to Ord(LanaEnum.length) - 1 do
      begin
        ZeroMemory(@NCB,SizeOf(NCB));
        NCB.ncb_command := Chr(NCBRESET);
        NCB.ncb_lana_num := LanaEnum.lana[I];
        NetBios(@NCB);

        ZeroMemory(@NCB,SizeOf(NCB));
        NCB.ncb_command := Chr(NCBASTAT);
        NCB.ncb_lana_num := LanaEnum.lana[I];
        StrPCopy(NCB.ncb_callname,'*');
        NCB.ncb_buffer := @Adapter;
        NCB.ncb_length := SizeOf(Adapter);
        NetBios(@NCB);

        Str := '';
        if (Adapter.xmit_success <> 0) and (Adapter.recv_success <> 0) then
        begin
          for J := 0 to 5 do
          begin
            if J > 0 then Str := Str + '-';
            Str := Str + HexBL(Byte(Adapter.adapter_address[J]));
          end;
          Strings.Add(Str);
        end;
      end;
    end;
var
  cardlist:Tstrings;
  stemp:string;

begin
  cardlist:=Tstringlist.Create;

  NBGetMac(cardlist);

  if cardlist.Count > 0 then
     stemp:=cardlist.Strings[0];

  while pos('-',stemp)>0 do
     system.Delete(stemp,pos('-',stemp),1);
  result:=stemp
end;


//为目标数据集添加所有字段
Function _AddAllFields(DestClientDataSet: TClientDataSet):Boolean;
var
  k,j: Integer;
  fTempField :TField;
begin
  Result := False;
  fTempField := TField.Create(DestClientDataSet);
  if DestClientDataSet <> Nil then
  begin
    with DestClientDataSet Do
    begin
      //首先判断该数据集是否已经存在字段定义?
      //如果没有则打开数据集,取得字段定义。
      If FieldDefs.Count = 0 then
      begin
        //此部分程序用以减少取回客户端的无用记录数。
        FetchParams;
        if Params.Count > 0 then
        begin
          for k:=0 to Params.count-1 do
          begin
            case Params[k].DataType of
              ftstring:Params[k].Value:=' ';
              ftinteger:Params[k].Value:=0;
              ftDateTime:Params[k].Value := StrToDateTime('1900-01-01');
            end;
          end;
        end;
        Open;
        CLose;
      end;
      //按照字段定义生成Field
      for j:=0 to FieldDefs.Count -1 do
      begin
        if Fields.FindField(FieldDefs[j].Name)<>nil then
          Continue;
        Case FieldDefs[j].DataType of
          ftSmallint: fTempField:=TSmallIntField.Create(DestClientDataSet);
          ftInteger:  fTempField:=TIntegerField.Create(DestClientDataSet);
          ftBoolean:  fTempField:=TBooleanField.Create(DestClientDataSet);
          ftString:   fTempField:=TStringField.Create(DestClientDataSet);
          ftDateTime: fTempField:=TDateTimeField.Create(DestClientDataSet);
          ftFloat:    fTempField:=TFloatField.Create(DestClientDataSet);
          else        Continue;
         end;
         With fTempField Do
         begin
           FieldName:=FieldDefs[j].name;
           FieldKind:=fkData	;
           Index:=j;
           Name:=DestClientDataSet.name+FieldDefs[j].name;
           DisplayLabel:= FieldDefs[j].name;
           AutoGenerateValue:=arNone;
           DataSet:=DestClientDataSet;
         end;
      end;
      Result := True;
    end;
  end;
  fTempField.Free;
end;
procedure ShowLineedt(stgReport:TDsnStage;iRepControlsNum:integer) ;
var
  i,j:integer ;
begin
  for i:=0 to TQuickRep(stgReport.Controls[iRepControlsNum]).ControlCount-1 do
    if TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i] is TQRBand then
      For j:=0 to TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controlcount-1 do
        if TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].tag = 1 then
          TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].Enabled := True ;
end ;

procedure HideLineedt(stgReport:TDsnStage;iRepControlsNum:integer) ;
var
  i,j:integer ;
begin
  for i:=0 to TQuickRep(stgReport.Controls[iRepControlsNum]).ControlCount-1 do
    if TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i] is TQRBand then
      For j:=0 to TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controlcount-1 do
        if TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].tag = 1 then
          TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].Enabled := False ;
end ;

procedure query_openwindow(mainform:tform;appserver,subsysid,userid,setflag0:pchar);external 'pu_dll_reportdesign.dll';

function ConvertDigit_old(iDigit:Double):String;
var
  iLen:integer	;
  iLoop:integer	;
  sUpperBefore,sUpperAfter:string;//小数和整数部分的大写
  sDotBefore,sDotAfter:string;//小数部分和整数部分的小写
begin
  sUpperBefore:='';
  sUpperAfter:='';
  iLen:=Length(FloatTostr(iDigit));
  if pos('.',floatTostr(iDigit))<>0 then
  begin
    sDotBefore:=Copy(floattostr(iDigit),1,Pos('.',floatTostr(iDigit))-1);
    sDotAfter:=Copy(floattostr(iDigit),Pos('.',floatTostr(iDigit))+1,iLen-Pos('.',floatTostr(iDigit)));
  end
  else
    sDotBefore:=FloatTostr(iDigit);

  iLen:=Length(sDotBefore);
  for iLoop:=1 to iLen do
    sUpperBefore:=sUpperBefore+UpperDigit(strToint(Copy(sDotBefore,iLoop,1)))+DigitDW(iLen-iLoop+1);

  iLen:=Length(sDotAfter);
  if iLen<>0 then
  begin
    if iLen=1 then
      sUpperAfter:=UpperDigit(strToint(Copy(sDotAfter,1,1)))+'角零分'
    else
      sUpperAfter:=UpperDigit(strToint(Copy(sDotAfter,1,1)))+'角'+
                   UpperDigit(strToint(Copy(sDotAfter,2,1)))+'分';
  end
  else
    sUpperAfter:='整';
  Result:=sUpperBefore+'元'+sUpperAfter;
end;

function DigitDW(iDW:integer):string;
var
  sDW:String;
begin
  if iDW=2 then
    sDW:='拾'
  else if iDW=3 then
    sDW:='百'
  else if iDW=4 then
    sDW:='仟'
  else if iDW=5 then
    sDW:='万'
  else if iDW=6 then
    sDW:='拾'
  else if iDW=7 then
    sDW:='百'
  else if iDW=8 then
    sDW:='仟'
  else if iDW=9 then
    sDW:='亿';
  Result:=sDW;
end;

function UpperDigit(iDigit:integer):string;
var
  sUpper:string;
begin
  if iDigit=0 then
    sUpper:='零'
  else if iDigit=1 then
    sUpper:='壹'
  else if iDigit=2 then
    sUpper:='贰'
  else if iDigit=3 then
    sUpper:='叁'
  else if iDigit=4 then
    sUpper:='肆'
  else if iDigit=5 then
    sUpper:='伍'
  else if iDigit=6 then
    sUpper:='陆'
  else if iDigit=7 then
    sUpper:='柒'
  else if iDigit=8 then
    sUpper:='捌'
  else if iDigit=9 then
    sUpper:='玖';

  Result:=sUpper;
end;

function ConvertDigit(iDigital: Double): String;
var
  iLen:integer	;
  iLoop:integer	;
  sTmp: String;
  bFNum: Boolean;
  sTmpStr: TStrings;//分割用临时变量

  sUpperBefore,sUpperAfter:string;//小数和整数部分的大写
  sDotBefore,sDotAfter:string;//小数部分和整数部分的小写

  function UpperNum(num:string):string;
  begin
    case strtoint(num) of
      0: result := '零';
      1: result := '壹';
      2: result := '贰';
      3: result := '叁';
      4: result := '肆';
      5: result := '伍';
      6: result := '陆';
      7: result := '柒';
      8: result := '捌';
      9: result := '玖';
    end;
  end;

  function Get1Num(var s:string):string;
  var
    iori:integer;
  begin
    result:='';
    iori:=strtoint(s);
    if iori>=1000 then
      result:=uppernum(copy(s,1,1))+'仟'
    else begin
      if (iOri>=100)  then
        result:=uppernum(copy(s,1,1))+'佰'
      else begin
        if iori>=10 then
        begin
          if length(s)>2 then
            result:=result+'零';
          s:=inttostr(strtoint(s));
          result:=result+uppernum(copy(s,1,1))+'拾'
        end
        else begin
          if iori>0 then
          begin
            if length(s)>1 then
             result:=result+'零';
            s:=inttostr(strtoint(s));
            result:=result+uppernum(copy(s,1,1))
          end else result:='';
        end;
      end;
    end;
    delete(s,1,1);
  end;

  function Get4Num(str:string):string;
  var
    sori,stemp:string;
  begin
    sori:=inttostr(strtoint(str));
    stemp:=sori;
    while length(stemp)>0 do
      result:=result+get1num(stemp);
  end;

begin
  sUpperBefore:='';
  sUpperAfter:='';
  sDotBefore := '';
  sDotAfter := '';
  sTmp := '';
  //判断传入数值的正负
  if iDigital < 0 then
    bFnum := True
  else bFnum := False;

  iDigital := Abs(iDigital);

  //首先将传入的数字分为小数点前、后两部分
  iLen:=Length(FloatTostr(iDigital));
  if pos('.',floatTostr(iDigital))<>0 then
  begin
    sDotBefore:=Copy(floattostr(iDigital),1,
                  Pos('.',floatTostr(iDigital))-1);
    sDotAfter:=Copy(floattostr(iDigital),Pos('.',floatTostr(iDigital))+1,
                  iLen-Pos('.',floatTostr(iDigital)));
  end
  else
    sDotBefore:=FloatTostr(iDigital);

  //处理整数部分

  //先将数字按照4位一组进行分割。
  sTmpStr := TStringList.Create;
  sTmpStr.Clear;
  iLen := Length(sDotBefore);
  if iLen < 4 then
    sTmpStr.Add(sDotBefore)
  else begin
    for iLoop := iLen Downto 1  Do
    begin
      sTmp := Copy(sDotBefore,iLoop,1) + sTmp;
      if (Length(sTmp) = 4) or (iLoop = 1)Then
      begin
        sTmpStr.Add(sTmp);
        sTmp := '';
      end;
    end;
  end;

  if sTmpStr.Count = 1 then
    sUpperBefore := Get4Num(sTmpStr.Strings[0])
  else if (sTmpStr.Count = 2) then
  begin
    if (Copy(sTmpStr.Strings[0],1,1) = '0') and
       (StrToInt(sTmpStr.Strings[0]) <> 0) then
    begin
      sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万零'+
                        Get4num(sTmpStr.Strings[0]);
    end
    else
      sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万'+
              Get4num(sTmpStr.Strings[0]);

  end
  else if sTmpStr.Count = 3 then
  begin

    if (Copy(sTmpStr.Strings[0],1,1) = '0') and
       (StrToInt(sTmpStr.Strings[0]) <> 0) then
    begin
      if StrToInt(sTmpStr.Strings[1]) <> 0 then
        sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万零'+
                          Get4num(sTmpStr.Strings[0])
      else sUpperBefore :='零'+ Get4num(sTmpStr.Strings[0]);
    end
    else begin
      if StrToInt(sTmpStr.Strings[1]) <> 0 then
      sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万'+
              Get4num(sTmpStr.Strings[0])
      else
        sUpperBefore := Get4num(sTmpStr.Strings[0]);
    end;

    if (Copy(sTmpStr.Strings[1],1,1) = '0') and
       (StrToInt(sTmpStr.Strings[1]) <> 0) then
    begin
      sUpperBefore := Get4Num(sTmpStr.Strings[2])+'亿零'+ sUpperBefore;
    end
    else
      sUpperBefore := Get4Num(sTmpStr.Strings[2])+'亿'+sUpperBefore;
  end;

  //处理小数部分
  iLen:=Length(sDotAfter);
  if iLen<>0 then
  begin
    if iLen=1 then
    begin
      if Copy(sDotAfter,1,1) <> '0' then
        sUpperAfter:=UpperNum(Copy(sDotAfter,1,1))+'角'
      else sUpperAfter := '整';
    end
    else begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -