C++builderでプログラミングをしています。質問お願いします。
for文で計算をするのですが逐次計算結果を出力したいのですがどのように
すればいいのでしょうか?
例えば
k=0;
for (i=0;i==5;i++){
k=k+1;}
出力結果
0
1
2
・・・
見たいな感じです。
for文の{}のなかに Edit[i]->Text =k;
見たいな感じにすればいいのかなと思っても出来なかったので。。
どなたかお願いします!
> for文の{}のなかに Edit[i]->Text =k;
てことはWindowsアプリケーションかなんかで、5つのテキストボックスかなんかに
計算結果を表示したいということでしょうか?
> 見たいな感じにすればいいのかなと思っても出来なかったので。。
実際にできなかったソースを提示してくれませんか?
これだけでは解答できないかと。
それと、出力結果が全角文字なのは意図があるのでしょうか?
# いちおうVC++ ラウンジなんだけど、SDKだったらおんなじなのかなぁ。。。
void __fastcall Tb::ButtonRecogClick(TObject *Sender)
{
int i,j,k;
int numRecog; //認識文字番号
float distMin; //距離の最小値
int numMin; //最小距離の登録番号
float dist[20];
float xAverage,yAverage;
double norm;
for (k=0;k <= numEntry-1;k++)
{
if (numStrokeUn != numStroke[k]){ //もしストローク数が違うなら距離をでかく
dist[k]=1000000000;}
else
{dist[k]=0;
for (i=0;i <= numStrokeUn-1;i++){
for (j=0;j <= numPoint-1;j++){
dist[k]=dist[k]+(xx[i][j]-xs[k][i][j])*(xx[i][j]-xs[k][i][j]) +(yy[i][j]-ys[k]
[i][j])*(yy[i][j]-ys[k][i][j]);
}void __fastcall Tb::ButtonRecogClick(TObject *Sender)
{
int i,j,k;
int numRecog; //認識文字番号
float distMin; //距離の最小値
int numMin; //最小距離の登録番号
float dist[20];
float xAverage,yAverage;
double norm;
for (k=0;k <= numEntry-1;k++)
{
if (numStrokeUn != numStroke[k]){
dist[k]=1000000000;}
else
{dist[k]=0;
for (i=0;i <= numStrokeUn-1;i++){
for (j=0;j <= numPoint-1;j++){
dist[k]=dist[k]+(xx[i][j]-xs[k][i][j])*(xx[i][j]-xs[k][i][j]) +(yy[i][j]-ys[k]
[i][j])*(yy[i][j]-ys[k][i][j]);
}
Edit[i-1]->Text = dist[k];
}}
こんなかんじです。分りづらくてすいません。どうやらEdit[i-1]のように配列の表記
自体がいけないような感じのエラーでした。
ちなみにエラーはこれです。
[C++ Error] Unit1.cpp(223): E2451 Undefined symbol 'Edit'
あと出力結果が全角なのはまったく意図はありません。
よろしくお願いします!
すいません。変な風にコピペしてました。。
正しくは
void __fastcall Tb::ButtonRecogClick(TObject *Sender)
{
int i,j,k;
int numRecog; //認識文字番号
float distMin; //距離の最小値
int numMin; //最小距離の登録番号
float dist[20];
float xAverage,yAverage;
double norm;
for (k=0;k <= numEntry-1;k++)
{
if (numStrokeUn != numStroke[k]){ //もしストローク数が違うなら距離をでかく
dist[k]=1000000000;}
else
{dist[k]=0;
for (i=0;i <= numStrokeUn-1;i++){
for (j=0;j <= numPoint-1;j++){
dist[k]=dist[k]+(xx[i][j]-xs[k][i][j])*(xx[i][j]-xs[k][i][j]) +(yy[i][j]-ys[k]
[i][j])*(yy[i][j]-ys[k][i][j]);
}
Edit[i-1]->Text = dist[k];
}}
です。
> こんなかんじです。分りづらくてすいません。どうやらEdit[i-1]のように配列の表記
> 自体がいけないような感じのエラーでした。
> [C++ Error] Unit1.cpp(223): E2451 Undefined symbol 'Edit'
Editが定義されていませんよ 見たいなエラーですね。
肝心なEditとは?型は何?クラスメンバなのですか?
(C++Builderは触ったことないのでEditというクラスがあるのかも、、、)
結局、どの画面に出力されるのでしょうか?
C++ Builder のバージョンと、Tb と Edit とが何者かがわかる説明と位は言われなくても
書いてください
var6です。ちなみにEditは文字を入力するコンポーネント?の一種です。
本来ならEdit1->Text = ;
のように使います。上のプログラムではEdit[i-1]のように配列の形にした
のがいけないようです。Edit1のように配列ではなく数字を普通に入れれば
エラーは出ませんでした。
間違いの内容としては…
int a1, a2, a3, a4, a5;
for(int i = 1; i <= 5; i++) {
a[i] = 10;
}
これと同じようなことしてます。
解決策の1つとしては
TEdit *edit;
みたいなものをForm1(かな?)のメンバ変数に用意します。
Form1のコンストラクタかOnCreate(だったかな)あたりで
edit = new TEdit[エディットボックスの数];
edit[0] = Edit1;
edit[1] = Edit2;
...
...
みたいに初期化してやれば,他の所でedit[i]という形で
使う事が出来るようになります。
# 初心者さん名前くらい書いて…
> float dist[20];
> Edit[i-1]->Text = dist[k];
> Edit1のように配列ではなく数字を普通に入れれば
C++BuilderのEdit::Textは代入時に文字列に変換しなくてもいいのか?(疑問)
Kazukiさんのいうように
> TEdit *edit;
> edit = new TEdit[エディットボックスの数];
> edit[0] = Edit1;
> edit[1] = Edit2;
となっているならば、Edit[0]->TextではなくEdit[0].Textで代入します。
> 結局、どの画面に出力されるのでしょうか?
で、この回答は?なんのためのEditの配列でしょうか?
C++Builderでの
数字の文字列変換には、
整数には、IntToStr()
小数には、FloatToStr()
が使えます。
例:
Edit1->Text = FloatToStr(dist[0]);
こんな感じで。
C++Builderの質問掲示板はこちらにあります。
http://gimite.ddo.jp/bcbqtree/
うーむ、板違いなので結局、レスが付くのに時間が掛かっているような。
bibrebibreさんが紹介されているようなC++Builder関連の掲示板に行った方が
効率も良いし、無駄も少ないとおもいます。
ありがとうございます