動的配列の長さを文字列に変換し、長さを問い合わせる関数を書いた(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)));
。
残りのコードは非常に壊れています。配列の基本インデックスはゼロです。文字列のベースアドレスは1です。 SetLengthを呼び出すまで、文字列も配列も何も含まれていません。ループの外側で 's'の長さをチェックする必要があります。それ以外の場合は、関数が値を返さない可能性があるという警告が表示されます。なぜあなたは文字列を配列に変換していますか?次のことは、文字列に戻すことができればどうですか? –
* StrLen()*と同様の機能を調べてください。最初に* PChar *を使っていないのはなぜですか? – mghie