0
我寫了一個函數,它通過將其轉換爲字符串並詢問長度(trim(string))給出了動態數組的長度。無效的類型:'Array'和'dynamic array'
function arraylength(a: array of char): integer;
var i: integer;
s: string;
begin
for i:=0 to high(a) do
begin
s[i] := a[i-1];
Result := length(trim(s));
end;
end;
在我的主程序中,我讀的文字轉換成字符串,將其轉換爲陣列
procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
for i:=0 to length(sString) do
begin
cChar[i] := sString[i];
end;
end;
做:
ShowMessage(IntToStr(arraylength(cChar)));
我得到的錯誤,如標題所述。
其餘的代碼非常壞。數組的基礎指數爲零。字符串的基地址是一個。除非調用SetLength,否則字符串和數組都不包含任何內容。你應該檢查循環外`s`的長度;否則,你應該得到一個警告,說明這個函數可能不會返回一個值。任何爲什麼你將字符串轉換爲數組,如果接下來的事情是把它重新寫回字符串? – 2009-08-05 13:34:45
調查* StrLen()*和類似的功能。你爲什麼不首先使用* PChar *? – mghie 2009-08-05 13:41:13