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
“太空”的Delphi等价物是什么?感谢。
答案 0 :(得分:6)
要回答直接问题,最接近的等价物是StringOfChar
:
sBuf := StringOfChar(' ', 8192);
虽然如果你将问题中的代码翻译成Delphi,你就不会用空格填充字符串。 VB代码在分配字符串时实际上并不感兴趣,它只是使用Space$
作为分配特定长度的字符串的简单方法。这些空格将被API调用返回的字符串覆盖。
在Delphi中,您可以通过编写:
来分配长度为8192的字符串SetLength(sBuf, 8192);
实际上在Delphi中,您可以使用TIniFile
从INI文件中读取。因此,如果你真的试图翻译问题中的代码,我建议你不要这样做,而是使用Delphi的内置库。
答案 1 :(得分:3)
您可以使用StringOfChar
:
// set txt to 80 spaces
txt := StringOfChar(' ', 80);
答案 2 :(得分:-1)
或者您可以使用此功能..
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;