ホント、初歩的なことで恥ずかしいのですが
ComboBoxを使って、プログラムを組んだのですが
プログラムを実行して、ComboBoxに何かを表示させたいときに
a:=copy(ComboBox1.Text,b,c)
のようにすればよいのはわかったのですが
上のbとcが何を意味してるのかわかりません。。。
多分、cはバイト数を意味してるのかと思うのですが
どなたか、ご指導お願いします。。
ヘルプは見ましたか?
S は,文字列型または動的配列型の式です。Index と Count は整数型の式です。Copy 関数は,S[Index] から Count 個の文字または要素の入った部分文字列または部分配列を返します。
Index が S より長い場合,Copy は空の文字列または要素を返します。
コピーできる文字または要素より多い値が Count に指定されている場合,S[Index] から S の終わりまでの文字または配列要素が返されます。
だそうです。
> プログラムを実行して、ComboBoxに何かを表示させたいときに
> a:=copy(ComboBox1.Text,b,c)
> のようにすればよいのはわかったのですが
??
これでは変数aにComboBox1.Textの文字列の一部がコピーされるだけですよ。
表示させたいなら
ComboBox1.Text := '文字列';
とかだと思いますが。
a, b, cの変数の型がわからないので、なんとも言えませんが、少なくとも、
a:=copy(ComboBox1.Text,b,c)
ではComboBoxに表示できません。
Delphiでは、IDEでTComboBoxを貼り付け、オブジェクトインスペクタでItemsプロパティに値を入れれば表示はできます。
まずはコードを書かずに、どのプロパティがどういう働きをしているか、ヘルプを見ながら確認してみてください。
Copyに関しても、ヘルプを見れば引数の意味がわかります。
ヘルプを活用しましょう。
説明不足ですいません。。。
以下のようなソートを書きました。
procedure TForm1.FormActive(Sender:TObject);
begin
Combobox1.Item.Add('+');
Combobox1.Item.Add('-');
Combobox1.Item.Add('*');
Combobox1.Item.Add('÷');
end;
procedure TForm1.Button1Click(Sender:TObject);
Var
a,b,c: interger;
s:string;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
s:=copy(ComboBox1.Text,1,2);
if s='+' then
c:=a+b
else if s='-' then
c:=a-b
else if s='*' then
c:=a*b
else
c:=a div b;
Edit3.Text:=IntToStr(c);
Form1.ActiveComtorol:=Edit3;
end;
Halbow です。
普通は ItemIndex でどの項目が選択されているのか分かりますので
case ComboBox1.ItemIndex of
0: c := a+b;
1: c := a-b;
....
のように書くのではないでしょうか。
ありがとうございます。。
たいかに、cas文のほうがわかりやすいです!!
上のソートの
s:=copy(ComboBox1.Text,1,2);
という文の 1.2は何を意味してるのでしょうか??
>cas文のほうがわかりやすいです
cas文などありません
(caseです)
>上のソートの
ソート??
並び替えですか。
>s:=copy(ComboBox1.Text,1,2);
>という文の 1.2は何を意味してるのでしょうか??
にしのさんが答えてますよ
>s:=copy(ComboBox1.Text,1,2);
の式はまずComboBox1.TextでComboBox1の現在選択中の文字列を表します。
この場合は、'+'・'-'・'*'・'÷'のいずれかになります。が、あらかじめ選択したかどうかも調べてください。これは、ItemIndexが0以上であるかどうかです。
選択した文字列は全て2バイトですから1番目から2バイトということになり、一文字を表しています。この場合は、Halbowさんの方法のほうがはるかにスマートですね。
解決しました。。
みなさま、わかりやすい説明ありがとうございました。。
ツイート | ![]() |