プロが教える店舗&オフィスのセキュリティ対策術

Form上のMemoコンポーネントにButtonを1度クリックすると

Memo1->Lines->LoadFromFile->(\"a.txt\");

a.txtをMemoに表示し、(ここまでは表示できています)

同じButtonをクリック(2回目)すると

a.txtとは違う内容をLoadFromFileを使って表示したいのですが、どのように表記したらよいのでしょうか。

ちなみにクリック3回目も違う内容の.txtを読み込みたいと思っているのですが…

アドバイスございましたら宜しくお願いします。

A 回答 (5件)

void __fastcall TForm1::Button1Click(TObject *Sender)


{
static int cnt = 0;
char fname[][10] = {"a.txt", "b.txt", "c.txt"};
Memo1->Lines->LoadFromFile(fname[cnt++ % 3]);
}
    • good
    • 0
この回答へのお礼

#4の御礼もご一緒にさせていただきます。

私の考えと、それよりもっと短い表現の両方から書いて下さり、ご親切にありがとうございました。

以前にも私の質問にyasuchさんがお答えしくれたのをおぼえております。

こんな初心者にもかかわらず、お答えを下さり、ありがとうございます。
大変参考になりました。

お礼日時:2005/01/22 14:58

void __fastcall TForm1::Button1Click(TObject *Sender)


{
static int cnt = 0;
switch(cnt) {
case 0:
Memo1->Lines->LoadFromFile("a.txt");
break;
case 1:
Memo1->Lines->LoadFromFile("b.txt");
break;
case 2:
Memo1->Lines->LoadFromFile("c.txt");
break;
}
cnt = (cnt + 1) % 3;
}
    • good
    • 0

> 1回目はa.txt


> 2回目はb.txt
> を読みこむということがSwitch~Caseでできないかなと私が考えたまでです。

…なにが問題なのかわからんです。

const char* files[N] = { "a.txt", "b.txt", ... };
int count; // 0..N-1 の範囲
を用意し、ボタンが押されるたびに ++count して
files[count] を LoadFromFile に与えればいいと思うけど。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

私の知識の乏しさから、お話が上手くできなかったみたいですみませんでした。お答えありがとうございました。

お礼日時:2005/01/22 14:54

> ButtonのClickをカウントするなんてことは可能でしょうか。



…何が問題なのかしら? カウンタとなる変数を用意して、ボタンが押されるたびにインクリメントすればいい。
    • good
    • 0
この回答へのお礼

Buttonをカウントすることによって

1回目はa.txt
2回目はb.txt

を読みこむということがSwitch~Caseでできないかなと私が考えたまでです。

まったく初心者なものですみません…。

参考書にLoadFromFileを見つけたのですが、

epistemeさんのはじめにおっしゃった文字列に置き換えるというのを、よろしければ教えて頂けませんか。

ネットでもヘルプ読んでも書き方が理解できなくて…
すみません。具体的に書いて頂けたらありがたいです。

お礼日時:2005/01/21 15:26

"a.txt"改め適当な文字列型の変数にしておいて、クリックされるたびにその内容を書き換えれば。

    • good
    • 0
この回答へのお礼

お早くお返事ありがとうございます。

>クリックされるたびにその内容を書き換えれば。

変数の内容はどのように書けばいいのでしょうか。


私が考えた案ではButtonClickをカウントして、Switch~Caseでできないかと考えたのですが、ButtonのClickをカウントするなんてことは可能でしょうか。

お礼日時:2005/01/21 14:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!