Visual Basic的"Space“函数返回由指定数量的空格组成的字符串。
Visual Basic示例:
Property Get Sections() As String
Dim sBuf As String
Dim iSize As String
Dim iRetCode As Integer
    sBuf = Space$(8192)
    iSize = Len(sBuf)
    iRetCode = GetPrivateProfileString(0&, 0&, m_sDefault, sBuf, iSize, m_sPath)
    If (iSize > 0) Then
        Sections = Left$(sBuf, iRetCode)
    Else
        Sections = ""
    End If
End Property"Space“在Delphi中的等价物是什么?谢谢。
发布于 2013-03-26 22:17:46
要回答直接的问题,最接近的等价物是StringOfChar
sBuf := StringOfChar(' ', 8192);但是,如果您将问题中的代码转换为Delphi,则不会在字符串中填充空格。在分配字符串时,VB代码实际上对字符串的内容并不感兴趣,它只是使用Space$作为一种简单的方式来分配某个长度的字符串。空格被API调用返回的字符串覆盖。
在Delphi中,您可以通过以下方式分配一个长度为8192的字符串:
SetLength(sBuf, 8192);实际上,在Delphi中,您可以使用TIniFile来读取INI文件。因此,如果您实际上正在尝试翻译问题中的代码,我建议您不要这样做,而是使用Delphi的内置库。
发布于 2013-03-26 22:18:37
您可以使用StringOfChar
// set txt to 80 spaces
txt := StringOfChar(' ', 80);发布于 2013-03-27 04:09:48
或者您可以使用此函数..
 function FastDupeCharA(Chr:Char;n:integer):string;assembler;
asm
 PUSH EBX
 PUSH ESI
 PUSH EDI
 XOR EBX,EBX
 MOV BL,AL
 MOV EDI,ECX
 MOV EAX,ECX
 MOV ESI,EDX
 XOR ECX,ECX
 CALL SYSTEM.@LSTRSETLENGTH
 MOV EDI,[EDI]
 MOV BH,BL  {Fill EBX  with BL (Char)}
 PUSH BX
 SHL EBX,16
 POP BX
 CMP ESI,8
 JLE @DupCarefully
 MOVD MM0,EBX
 PUNPCKLWD MM0, MM0
 @NextFill:
 MOVQ [EDI], MM0  {Fill 8 Char}
 ADD EDI,8
 SUB ESI,8
 CMP ESI,8
 JGE @NextFill
 EMMS
 TEST ESI,ESI
 JNE @DupCarefully
 JMP @FIN
 @DupCarefully:
 {If n or esi is smal than 8 }
 MOV [EDI],BL
 DEC ESI
 JE @FIN
 MOV [EDI+1],BL
 DEC ESI
 JE @FIN
 MOV [EDI+2],BL
 DEC ESI
 JE @FIN
 MOV [EDI+3],BL
 DEC ESI
 JE @FIN
 MOV [EDI+4],BL
 DEC ESI
 JE @FIN
 MOV [EDI+5],BL
 DEC ESI
 JE @FIN
 MOV [EDI+6],BL
 DEC ESI
 JE @FIN
 MOV [EDI+7],BL
 DEC ESI
 JE @FIN
 MOV [EDI+8],BL
 DEC ESI
 JE @FIN
 @FIN:
 MOV EAX,[EDI]
 POP EDI
 POP ESI
 POP EBX
 end;https://stackoverflow.com/questions/15639254
复制相似问题