Delphi初心者です。宜しくお願いします。
Delphi5Proを使用していて、ふと疑問があがったので、ご教授いただけますでしょうか。
procedure TForm1.Button1Click(Sender: TObject);
var
St:Tstringlist;
begin
st:= st.Create;
st.Strings[0]:='はろぅ';
ShowMessage(st.Strings[0]);
end;
上記のように書いて実行すると、エラーになってしまいますが、原因がわかりません。ヘルプには
MyStringList.Strings[0] := 'This is the first string';
とか書いてあるので、大丈夫と思ったのですが…
すみませんが、宜しくお願い致します。
とりあえず、
st:= st.Create;
⇒ st:= TStringList.Create;
としてみてはいかがでしょうか。
おおさわ様、レス有難う御座います。
おっしゃるようにやってみたのですが、
st.Strings[0]:='はろぅ';
の部分でEStringListErrorクラスの例外を生成したという事で、'リストのインデックスが範囲を超えています(0)'というメッセージが表示されてしまいます。
なんででしょう…T_T
では、
st.Strings[0]:='はろぅ';
⇒ st.Add('はろぅ');
ならどうですか?
それだとできますね…
最初に書いたように、
st:= st.Create;
と書くと、Addでも失敗するみたいですが、教えて頂いたようにすると
AddでOKみたいです。今後はTStringList.Createと書く事にしますm(_ _)m
気になるのは、ヘルプにあるようなやり方ではできないんでしょうか?
ヘルプの「TStringList.Strings」にある文章をよーく読んでいたら、
「Strings を使うと,特定位置の文字列を読み出したり変更したりでき
ます。」とありました。これって既にあるものの位置は指定できるけど
追加はAddとかを使ってね。という事になるんでしょうかねぇ?
> これって既にあるものの位置は指定できるけど
> 追加はAddとかを使ってね。という事になるんでしょうかねぇ?
そうです。ないものの中身を変更しようとするとエラーになります。
> 今後はTStringList.Createと書く事にしますm(_ _)m
これに限らず、必ず、コンストラクタはクラス参照で実行してください。
おおさわ様、anone様、本当に感謝です。
まだまだ勉強不足すぎる所がありますが、今後も精進したいと思います。
今後とも宜しくお願い致します
ツイート | ![]() |