int main(int argc, char **argv) { ... }とか、
void __fastcall TForm1::Button1Click(TObject *Sender) { ... }などの形が良く出てきます。 たとえば char **はポインタ型の宣言、 TForm1::はメンバ関数の宣言、 __fastcallは(C++Builder独自の拡張で) 引数のレジスタ渡しを宣言していますが、 はっきりいって、これらの意味をすべて理解する必要はありません。
プリント中の例題プログラムをコンパイルする場合、 次のような点だけを覚えておいてください。
#pragma hdrstop #include <condefs.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char **argv) { return 0; }は一旦すべて消去しても構いません。
ちなみに Button?Click, FormPaintなどの関数名(プリントで使われているもののみ)とコンポーネントの対応は、 次のようになります。
関数名 | 対応するコンポーネント | 対応するイベント | 説明 |
Button?Click | Button | OnClick | Buttonが押されたとき |
FormPaint | Form | OnPaint | Formが画面に表示されたとき |
FormCreate | Form | OnCreate | Formが作成されたとき |
FormKeyDown | Form | OnKeyDown | キーが押されたとき |
FormMouseDown | Form | OnMouseDown | マウスボタンが押されたとき |
Edit?Change | Edit | OnChange | Editの内容が変わったとき |
Timer?Timer | Timer | OnTimer | 指定した時間間隔毎 |
例えば例題に
void __fastcall TForm1::Button1Click(TObject *Sender) { }という部分があれば、Formの上に Buttonを一つ置いて、 「オブジェクトインスペクタ」の「イベント」の OnClickの右側をダブルクリックします。 すると上のようなコードは C++Builderが生成してくれます。 もちろん 「{」と「}」の間は自分でタイプするか、 どこかからコピーする必要があります。
メニューの「ファイル」---「すべて保存」を選ぶか、 スピードメニューの中の「すべて保存」(上の列の左から 2番目)を選びます。
このとき、混乱を防ぐため、プログラム毎に必ず新しいフォルダを作り、 新しいフォルダにファイルを保存します。 ウインドウアプリケーションの場合は 2回、 コンソールアプリケーションの場合は 1回、 保存するファイルの名前を聞かれますが、 とりあえず C++Builderが選んだ名前 ( Unit1.cppと Project1.bprか何かになるはず) にしておきます。
プログラムを実行するには、「実行」---「実行」か、スピードメニューの 「実行」(上列右から 2番目)を選びます。 実行中のプログラムを終了するには、ウインドウの右上の×印を押します。
#include <math.h>という行がどこかで必要になります。 これはsin, cosなどが、 どういう型の関数かをコンパイラに教える命令です。 <と>の間に書く名前(例えば math.h)は、 関数(例えば sin)によって決まっています。
ちなみに、プリント中の例題で使っているインクルードファイルは次の通りです。
関数 | インクルードファイル |
sin, cos, sqrtなど数学関数 | math.h |
printf, getchar, putcharなど Cの入出力関数 | stdio.h |
cin, cout, <<, >>, getなど C++の入出力関数 | iostream.h |
_argc, _argv | dos.h |
atoi, malloc, free, randなど | stdlib.h |
randomize | time.h |
まず、出力には、 ウインドウアプリケーションは ShowMessageという関数、 C++のコンソールアプリケーションは、<<という演算子、 Cのコンソールアプリケーションは、printfという関数を使います。
int var1;(整数) | double var2;(実数) | char var3[];(文字列) | char var4;(文字) | |
ウインドウ | ShowMessage(var1); | ShowMessage(var2); | ShowMessage(var3); | ShowMessage(var4); |
コンソール(C++) | cout << var1; | cout << var2; | cout << var3; | cout << var4; |
コンソール(C) | printf("%d", var1); | printf("%f", var2); | printf("%s", var3); | printf("%c", var4);
putchar(var4); |
また、
int a = 2; char str[] = "sqrt"; double b = 1.414 ;のとき、"2の sqrtは 1.414です。"という文字列を出力するには
ウインドウ | ShowMessage(AnsiString()+a+"の "+str+"は "+b+"です。"); |
コンソール(C++) | cout << a << "の " << str << "は " << b <<"です。"; |
コンソール(C) | printf("%dの %sは %fです。", a, str, b); |
ウインドウアプリケーションでは AnsiString型に対する +演算子を用いて、 文字列をつなげることができます。ただし、コンパイラが整数型に対する +演算子と勘違いしないように、最初に AnsiString()+という式を入れておきます。
コンソールアプリケーション(C++)では <<演算子を用います。
コンソールアプリケーション(C)では printfの第 1引数中の %から始まる「変換文字」が、2番目以降の引数と順に置き換わっていきます。
次に入力ですが、つぎの表の通りになります。
int var1; | double var2; | char *var3; | char var4; | |
ウインドウ | var1=StrToInt(★); | var2=StrToFloat(★); | var3=★; | (該当なし) |
コンソール(C++) | cin >> var1; | cin >> var2; | cin >> var3; | cin >> var4; |
コンソール(C) | scanf("%d", &var1); | scanf("%lf", &var2); | scanf("%s", var3); | scanf("%c", &var4);
var4 = getchar(); |
また 2番目以降のエラーメッセージは、 最初のエラーに影響されて起こるエラーの場合が多いので、 あまり気にする必要はありません。
void __fastcall TForm1::Button1Click(TObject *Sender) { }を C++Builderに生成させずに、 自分でタイプして定義しようとした場合に、 このようなエラーが起こりがちです。
該当のイベントハンドラの定義を一度完全に消して、もう一度手順を踏んで
C++Builderにイベントハンドラのひな型を生成させます。上記の
「プリント中の例題プログラムをコンパイルする方法がわからない」
をもう一度よく読んでください。
あるいは完全に最初からやりなおした方が早い場合もあります。
Canvas->Brush->Color=Color; Canvas->FillRect(Rect(0, 0, ClientWidth, ClientHeight));
int i = StrToInt("0"+Edit1->Text);先頭に害のない "0"が入りますから、 Edit1->Textが空になっても、 StrToIntはエラーになりません。
Canvas->Pen->Colorを変えると線を引くときの色が、 Canvas->Brush->Colorを変えると図形を塗り潰すときの色が、 それぞれ変わります。
今度は Wordを開いて、 Ctrl-v(コントロールキーを押しながら vを押す)か、 あるいはメニューの「編集」─「貼り付け」を選びます。
まず、自分の顔写真をファイルにセーブします。
行間を変えたい部分を選択している状態で、 メニューの「書式」─「段落」を選び、「インデントと行間隔」─「間隔」の 「行間」を「固定値」にします。 「間隔」も好みで「12pt」か「11pt」程度 (使っているフォントの大きさにより異なる。)にします。
そういう場合はイメージではなく、文字情報だけをコピーしましょう。
DOSプロンプトの中の文字をクリップボードにコピーするには、 まず、範囲指定ボタン を押してから、 マウスで範囲を指定し、コピーボタン を押します。
逆に、クリップボード内のデータを DOSボックス内にペーストするには、 ペーストボタン を使います。
あるいは下のフォームを使っても構いません。