はじめまして、こんにちは。
いきなりですが質問をさせていただきます。
プログラムの作成中に、
Button1をクリックしたとき、
'ahya'と言う文字列がMemo.LinesになければMemo.Linesに'ahya'を追加。
そしてEdit1.TextをMemo.Linesに追加。
もし、'ahya'と言う文字列あれば'ahya'を追加せずに、
Edit1.TextをMemo.Linesに追加。
という動作をさせようとしましたが、
なにをどうすればいいのか根本的にわからず、質問をしました。
どなたか回答をお願いします。
Memo.Linesというのは、行について一致しているかどうか?ということでしょうか?まぁ、テキストでも大して変わりませんが。
行なら、Memo.Lines.IndexOf('ahya');で一致する行があるか調べられます。
テキストなら、AnsiPos('ahya',Memo.Text);で存在を調べられます。
あとは、
if ('ahya'がなければ) then
begin
Memo.Lines.Add('ahya');
end;
Memo.Lines.Add(Edit1.Text);
な感じで、、、
行についての一致です。忘れてました。すいません。
ソースの
>if ('ahya'がなければ) then
の部分ですが、Memo.Lines.IndexOf('ahya') と入力しても
「式の結果は Boolean 型でなければなりません」とのエラーが出ます。
ここについてはどのようにすればよいのでしょうか。
何かすごい質問ですね.
答えは,質問の文章そのまんまの気がします.
>の部分ですが、Memo.Lines.IndexOf('ahya') と入力しても
>「式の結果は Boolean 型でなければなりません」とのエラーが出ます。
そういう時は,
(1) ヘルプでTMemoのページを開き
(2) Linesプロパティを調べ
(3) Indexメソッドを調べ
という手順で調べます.このようにして,いろいろな知識を身につけて
いった方がいいと思いますよ.それでわからなかったら質問してみると
確実にものになるでしょう.
ヘルプでIndexOf(TStringsかTStringList)を引きましょう。
(TStrings:TStringListはoverrideなんで別に変わることもありません)
IndexOf メソッドを呼び出すと,文字列 S の最初に見つかった位置,または大文字小文字が S と異なるだけの文字列の最初に見つかった位置を取得できます。IndexOf は 0 から始まる文字列の添字の値を返します。このようにして S がリスト内の最初の文字列と一致した場合には IndexOf は 0を返し,S が 2 番目と一致した場合には IndexOf は 1 を返します。文字列リストにその文字列がない場合には IndexOf は -1 を返します。
というわけだそうです。
つまり、IndexOf('ahya')で'ahya'の行が無ければ、-1が帰ってくるので、
if (Memo.Lines.IndexOf('ahya') = - 1) then
begin
//このとき、'ahya'がない!!
end;
ということに、、、
補足ですが、、「式の結果は Boolean 型でなければなりません」
というのは、結局、
if (Memo.Lines.IndexOf('ahya') = - 1) then
は
if (Memo.Lines.IndexOf('ahya') = - 1) = true then
ということです。これなら、式がBoolean型であるということの意味が分かるでしょう。
>(3) Indexメソッドを調べ
間違い.IndexOfですね.
ヘルプの使い方がわからなければ質問して下さい.
あ、できました。
とーりすがり さん、 Mr.XRAY さん。
ご丁寧な回答をありがとうございました。
ツイート | ![]() |