爲什麼SetLength(Result, Length(AValue));
給Result一個值?爲什麼Setlength給Result一個值? (delphi)
在德爾福幫助我沒有讀任何關於該setlength給結果的值。
這是我使用的函數。
function StripNonAlphaNumeric(const AValue: string): string;
var
SrcPtr, DestPtr: PChar;
begin
SrcPtr := PChar(AValue); //
SetLength(Result, Length(AValue)); // i set your length, but not your value, why do you have a value ?
DestPtr := PChar(Result);
while SrcPtr <> #0 do begin
if SrcPtr[0] in ['0'..'9','A'..'Z','a'..'z','?','.','>','<','+','-','~','!','@','#','$','%','&',
'*','(',')','_','=','{','}','[',']','|','\','/',':',';',' '] then
begin
DestPtr[0] := SrcPtr[0];
Inc(DestPtr);
end;
Inc(SrcPtr);
end;
SetLength(Result, DestPtr - PChar(Result));
end;
字符串實際上是一組動態字符。將'SetLength'調用到字符串與在動態數組上調用它沒有任何區別。在這兩種情況下,它都會設置該值的長度(如其名稱所示)。哪些數據駐留在每個數組元素中都由您來初始化。 'nil'和'0'肯定是可能的值。 –
您是否考慮過將代碼降低到最低程度,以便您(我們)能夠專注於問題/問題? – CWBudde
它完全按照文檔(來自System.SetLength()')的幫助)工作:*對於長字符串變量,SetLength將由S引用的字符串重新分配給定長度。保留字符串中現有的字符,但新分配的空間內容未定義。*注意:*對於動態數組變量,SetLength將S引用的數組重新分配給定長度。數組中的現有元素被保留,新分配的空間被設置爲0或nil。* –