以下のコードで、Memo1にapplearangegrapelemonと表示したいと思っています。しかし、このコードだとエラーが出ます。for文を使えば実現できるのですが、もっと簡単に一発でできないでしょうか。型変換とか関数とかで。
procedure TForm1.Button1Click(Sender: TObject);
var
f : array[0..4] of String;
begin
f[0] := 'apple';
f[1] := 'orange';
f[2] := 'grape';
f[3] := 'lemon';
Memo1.Lines.Add(f);
end;
なさそうですね。
あったとしても、この程度ならやっぱりforなどのループでかかれると思います。
何度も出そうなコードであれば、
function StringFromArray(strings: array of String; separator: String): String;
var
i: integer;
begin
Result := '';
for i := 0 to length(strings) - 1 do
begin
if i > 0 then Result := Result + separator;
Result := Result + strings[i];
end;
end;
こんな関数を用意しておけば、再利用できます。
ユニットに分けると整理しやすいです。
にしのさん、どうもありがとうございます。
やはり、なさそうですか。残念です。
でも、関数を作っておいて利用すればいいんですね。
コードまで紹介していただき大変ありがたく思います。
ただ、恥ずかしながら、関数の使い方がよくわかりません。
2〜3時間ほど勉強し少しはわかったのですが、にしのさんに紹介していただいたコードを使いこなせません。一応、以下のあたりまで学習の結果辿り着いたのですが行き詰まってしまいました。
procedure TForm1.Button1Click(Sender: TObject);
function StringFromArray(strings: array of String; separator: String): String;
var
i: integer;
begin
Result := '';
for i := 0 to length(strings) - 1 do
begin
if i > 0 then
Result := Result + separator;
Result := Result + strings[i];
end;
end;
var
f : array[0..3] of String;
bun : string;
begin
f[0] := 'apple';
f[1] := 'orange';
f[2] := 'grape';
f[3] := 'lemon';
bun := StringFromArray(f,?);
Memo1.Lines.Add(bun);
end;
そこで再度質問なのですが、separatorは何を意味するのでしょうか?
これがどうしてもわかりません。ご教授願いたく思います。
単純につけるだけではないかもしれないので、区切り文字列としてseparator引数があります。
StringFromArray(f, ':');
とすれば、
apple:orange:grape:lemon
となります。
いらなければ、
StringFromArray(f, '');
とすれば、
appleorangegrapelemon
となります。
使わないようでしたら、引数を消して作り直してもらってもOKですよ。単なる例ですから。
separatorとはそういうことでしたか。
これは必ず役立ちそうですね。是非覚えておきたいと思います。
親切にご指導していただきどうもありがとうございました。
これからもどうぞよろしくお願いします。
ツイート | ![]() |