Function DELPHI相当于VisualBasic6函数

Function DELPHI相当于VisualBasic6函数,function,delphi,math,Function,Delphi,Math,我希望在Delphi中为以下用Visual Basic 6编写的函数提供一个等效函数: 公共函数ToString(ByVal l为长,n为整数)为字符串 '将长值转换为字符串,左填充chr$(0) 像线一样变暗 作为整数的Dim i s=“” 当l>0时执行此操作 i=l模256 s=Chr$(一)和s l=CLng((l-i)/256) 环 ToString=Right$(字符串$(n,Chr$(0))&s,n) 端函数 我尝试了以下方法,但没有成功: 函数ToString(l:Longin

我希望在Delphi中为以下用Visual Basic 6编写的函数提供一个等效函数:

公共函数ToString(ByVal l为长,n为整数)为字符串
'将长值转换为字符串,左填充chr$(0)
像线一样变暗
作为整数的Dim i
s=“”
当l>0时执行此操作
i=l模256
s=Chr$(一)和s
l=CLng((l-i)/256)
环
ToString=Right$(字符串$(n,Chr$(0))&s,n)
端函数
我尝试了以下方法,但没有成功:

函数ToString(l:Longint;n:Smallint):字符串;
变量
s:字符串;
i:Smallint;
开始
s:='';
当l>0时
开始
i:=l模256;
s:=字符串(Char(i))+s;
l:=圆形((l-i)/256);
结束;
结果:=(StringOfChar(String(Char(0))[1],n)+s,n);
结束;
(假设使用支持UNICODE的Delphi)

您正在使用字符串存储二进制值-不要这样做。字符串用于文本表示,不用于二进制存储。改用字节数组(TBytes)

如果必须(但不需要),则应使用RawByteString,如下所示

  • 它是每个字符串一个字节(与UNICODE字符串的每个字符两个字节相反)
  • 它不包含任何隐式代码页,因此不会对赋值执行来回转换
  • 您可以使用此功能:

    FUNCTION IntToBin(Value : LongWord ; CONST Len : BYTE) : RawByteString;
      VAR
        I   : INTEGER;
    
      BEGIN
        SetLength(Result,Len);
        FillChar(Result[LOW(Result)],Len,0);
        I:=HIGH(Result);
        WHILE (I>=LOW(Result)) AND (Value<>0) DO BEGIN
          Result[I]:=AnsiChar(Value MOD 256);
          Value:=Value DIV 256;
          DEC(I)
        END
      END;
    
    函数IntToBin(值:长字;常量Len:BYTE):RawByteString;
    变量
    I:整数;
    开始
    设置长度(结果,Len);
    FillChar(结果[低(结果)],Len,0);
    I:=高(结果);
    而(I>=低(结果))和(值0)确实开始
    结果[I]:=AnsiChar(值MOD 256);
    值:=值DIV 256;
    十二月(一)
    结束
    结束;
    
    inttostr:很简单,但是计算如何。我是一名中级Delphi学习者:(感谢Ken回复我:Function-ToString(1:Integer,n:Integer):String;var S:String;I:Integer-Begin S:='';End;Function-ToString(l:Longint;n:Smallint):String;var s:String;i:Smallint;begin s:'';当l>0时,begin i:=l mod 256;s:=String(Char(i))+s;l:=Round((l-i)/256);end;Result:=(StringOfChar(String(Char(0))[1],n)+s,n);end;不需要将VB代码转换为Delphi,只需使用函数ToString(l:Longint;n:Smallint):String;var fmt:String;begin fmt:=Format('%.%dd',[n]);Result:=Format(fmt,[l]);end;或者,使用,例如:
    函数ToString(l:Longint;n:Smallint):String;begin Result:=IntToStr(l);如果Length(Result)
    谢谢Remy,但它不起作用:“99999999”作为字符串应该转换为õÿ非常感谢HearWare为您提供的巨大帮助。我得到了上面描述的要点。祝您愉快!