• 締切済み

型変換について (C++ Builder5)

C++ Builder5において、Editコンポーネントで得たデータ(AnsiString)をshortもしくは、floatに変換したいのですが、どうすればよろしいでしょうか。 御教示頂きますよう宜しくお願い致します。

みんなの回答

noname#30727
noname#30727
回答No.3

Edit1->Text = (short)123; Edit1->Text = 456.789f; のように単純に代入すればいいのでは? ヘルプの AnsiString::operator= には、const AnsiString& 以外の引数については書かれていないようですね・・・なんでだろ?

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

AnsiString に変換できれば良いですか? AnsiString s; float f; s.sprintf("%f", f); とか short i; s.sprintf("%d", i); とか。 # いや、実は BCB ってあんまり知らないんです :-p

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

AnsiString クラスには、ToInt()、ToDouble() というメソッドがあり、 それぞれ整数、実数を返してくれます。 例えば、 AnsiString str; float f; f = (float)str.ToDouble(); って感じですね。 # マニュアルを見れば分かりますよ

poko123
質問者

補足

御回答ありがとうございました。 逆に、shortもしくは、floatをEditコンポーネントに表示する場合、どのように型変換すればよろしいでしょうか。 御教示頂きますよう宜しくお願い致します

関連するQ&A

  • 型変換について

    Borland C++builder6で AnsiString' 型をvoid *' 型に変換するにはどうすればいいのですか。 どなたかご教授下さい。お願いします。

  • Borland CからBuilderへのプロジェクト変換について

    Borland C++ 5.01で作成されたアプリケーションの開発環境をBorland C++Builder 6の開発環境に移し変えることになったのですがBCB6で新しくプロジェクトを作り、ソースファイルを1つずつ移行させていったのですがコンパイルエラーが山ほどでてきます。 C言語自体、あまり詳しくないのでうまく説明できませんがOWL?というコンポーネントが使われている為かと。。。 1つずつ潰していけばいいのですが、もっと簡単な方法がないものかと試行錯誤しております。 何かプロジェクト変換するツールやこのようにすれば?というような意見、情報などないでしょうか?

  • C#で型変換がうまくいきません。

    C#で型変換がうまくいきません。 short r; byte[] b = new byte[] {1,2,3}; r = (short)b[1] * (short)256; というコードを書くと、 型 'int' を 'short' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください) と出てしまいます。キャストしているのに何がいけないのか全くわかりません。 どうぞ宜しくお願いいたします。

  • Borland C++ Builderについての本

    卒業研究でソフトを開発するにあたって、C++ Builder 6を使い始めたのですが、使い方がよく分からなくて困っています。 「こういう機能をさせたい!・・・でも、どのコンポーネントを使ったら良いの?」と、日々頭を悩ませています。付属の分厚い開発者ガイドをみても、本当にちんぷんかんぷんで、悲しくなりました。 C++ Builderの使い方などが載っている本を知っている方、是非助言していただけたら、と思います。 よろしくお願いします。

  • C++BuilderのコードをVC++用に変更するには?

    環境 WIN98 VC++6.0 MFC にて ネット上でちょうど私が知りたいことが載っているサイトを見つけました。 それは付箋ソフトの作り方を解説しているサイトです。 http://www.zdnet.co.jp/developer/0307/18/dvn06.html しかしながら、そのサイトではC++Builderを使っています。 C++BuilderのコードをVC++用に変更したいのですが、 お分かりでしたお教えください。 知りたいのは、以下のコードです。 C++Builder専用のコードかと思いましたが、調べるとSubStringはAPIだったのでVC++でも使えると思います。 Pos()は調べても分からなかったのですが、変わりになる関数は有るのでしょうか? ********************** // 「,」で区切られた文字列から要素を切り出す。 // メモデータのロードに使う static AnsiString GetToken(AnsiString &s) { AnsiString ret; // ,が文字列に含まれる場合、 // ,より前の文字列を戻り値とし、 // 引数の文字列の,以前を削除する。 // 例えば引数の文字列が"1,2,3"の場合、 // 戻り値は"1"、引数の文字列は"2,3"となる。 int pos=s.Pos(","); if (pos>=1) { ret=s.SubString(1,pos-1); s=s.SubString(pos+1,s.Length()-pos); return ret; }

  • 「Borland C++ Builder 5」で作成したプログラムについて

    「Borland C++ Builder 5」で作成したプログラム(コンポーネント使用)を、Builderを起動せずフリーソフトのようにWindows上で実行させるにはどうすればよいのでしょうか。

  • C++builderで拡張子変換ソフトを作ろうと

    C++builderで、mp4をmp3に変換したりmp4をmpgなどに変換するプログラムを作ろうとしています。 しかし、私にそのような技術がありません。なので調べてみましたが全然ヒットしませんでした。 何かヒントになるようなサイトありませんか?また、本でもいいのでネットに売ってたらぜひ教えて欲しいです。

  • c++ builder 6

    ++builder6で文字列「学校の花壇」などと入力すると、x[0]=学,x[1]=校,x[2]=の・・・・などと格納するプログラムを作ろうと思ってます。文字列をそのままコピーするプログラムは以下のようにして出来ました。 AnsiString strw,str; int po,po2,p,l; str="okw"; p=0; strw = Edit1->Text; l=strw.Length(); n=0; while (p != l){ p=p+1; po = p; po2 = po+1; if(strw.ByteType(po2) == mbTrailByte){ po2=po+1; str =str+ strw[po] + strw[po2]; }else if(strw.ByteType(po) == mbSingleByte){ str=str+strw[po]; } } ですが格納しようとして以下のようにすると上手く動きません。どうしたらよいのでしょうか?どなたか助けてください。 AnsiString strw,str,x[15]; int po,po2,p,n,l; str="okw"; p=0; strw = Edit1->Text; l=strw.Length(); n=0; while (p != l){ p=p+1; po = p; po2 = po+1; if(strw.ByteType(po2) == mbTrailByte){ po2=po+1; x[n] = strw[po] + strw[po2]; n=n+1; }else if(strw.ByteType(po) == mbSingleByte){ x[n]=strw[po]; n= +1; } } どうかよろしくお願いします

  • C++Builderで、他のソフトとの連携

    C++Builderのコンポーネントで、他のソフトウェアとの連携ができるようになるコンポーネントや方法はありますでしょうか? 例えば、 「Button1をクリックするとInternet Exproler(他ソフト)が立ち上がる」 といったような機能を作りたいんです。 何か方法があればよろしくお願いします。

  • C-Builderで数値(数字)以外を入力出来ない様にしたい。

    C-Builder V5 で数値(数字)を入力すべきところで、実行時に文字等を入力すると、システムからエラーメッセージが表示されるので、これを防ぐ為にEditで入力時に数字以外をはじきたいのですが、可能でしょうか。 以前C-Builder V4で作った時は出来た様な気がしたのですが、どの様にやったか思い出せないでいます。 ネットではC-Builderのサンプルが見つからず、Delphiのサンプルでは昔の記憶と同じ処理を行っていましたが、これだと文字判定以前にEditの枠に既に文字が入ってしまっており、文字の排除が出来ませんでした。 どなたか数字以外をはじく方法ご存知の方、お教え下さい。 // Edit1->ImeMode = imDisable; // 初期化部分で実行 void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key<48 || Key>57) { Key = 0; } }

専門家に質問してみよう