C++ Builderでの自作関数とエラーの解消方法について

このQ&Aのポイント
  • C++ Builderを使ってアプリを作成中の初心者です。
  • 自作関数の書き方とエラーの解消方法について教えてください。
  • 引数にvoidを使っていることがエラーの原因かもしれません。
回答を見る
  • ベストアンサー

C++ Builderでの自作関数

C++ Builderでの自作関数 初心者のため、初歩的な質問で恐れ入ります。 今、C++ Builderを使いアプリを作成中なのですが、 下記のような自作関数を使いたいのですがどのように書くと エラーがでなくなるのでしょうか? main関数中で、あるif文に該当すると自作関数の内容を行いたいと思っています。 自作関数には、テキストファイルへ文字列データの書き出しをする内容を書いています 今、引数にはvoidを使っていますが、 「TForm1のサイズが不明、あるいはゼロ」「宣言の構文エラー」というエラーが出てしまいます。 voidにしているのが原因でしょうか? 何もわかっていなく恐縮ですが、よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

これでは、残念ながら回答は不能です。 なぜなら、 > main関数中で、あるif文に該当すると自作関数の内容を行いたいと思っています。 > 自作関数には、テキストファイルへ文字列データの書き出しをする内容を書いています とういう情報だけでは、「普通に関数を書けば大丈夫です」としか言えないレベルだからです。 >「TForm1のサイズが不明、あるいはゼロ」「宣言の構文エラー」 というエラーは、大抵、関数宣言の書き方が間違っているときに出るものではありますが。 ひとつ気になるのは、C++ Builder で、TForm1 に関わるエラーが出ているというのは、VCLを使ったフォームアプリケーションだと思いますが、フォームアプリケーションだと、main()(実際には、WinMain() だと思いますが)、だとすると、WinMain() には手を付けない方がいいです。 本来、ここには処理の追加をする必要はないはずなので、ここで何か処理を仕様とするというのは、本来なら、どこか別のところで処理をするべきものを、間違って書こうとしている可能性が感じられます。

keitaku22
質問者

お礼

早速のご回答ありがとうございます。 明確な内容を書かずに失礼いたしました。 その後、当方で何度も見直しをしておりましたら、初歩的なミスでエラーが出ておりました。 自作関数を書いている部分の void __fastcall TForm1::●●●● {  処理 } の「TForm1」の後に2つ続く「:」が1つになっていたためエラーが出ていたようです。 今後は、何度も見直した上で質問します。 ありがとうございました!

関連するQ&A

  • C++ Builderでの自作関数について

    初歩的な質問で申し訳ありません。 C++ Builderでアプリケーションを作成する際、 様々なアプリケーションで自作の関数を利用したいのですが、 どうすればよろしいのでしょうか? 【イメージ】 ボタンクリックのイベント{ jisaku_kansu(); } 関数名の付け方、宣言の仕方、作成するアプリケーションのソースの どこで参照するかなど、手順を教えてください。

  • C言語のポインタによる関数の引数の書き方について教えてください。

    C言語を今勉強中の大学生です。 一気に複数の値をmainに返せる、参照による呼び出しによる関数の引数の書き方で困っています。配列を自作関数に引き渡したいのですが、どう書けばいいのでしょうか。 下の3つは、それぞれ(1)mainからの呼び出し、(2)自作関数での引数の引き受け、です。どこをどう変えたらエラーが出なくなるのか、分かる方、お願いいたします! (1)school(&m,h); (2)void school(int *m, float *h){ ※ちなみに変数は int m,float h[10][10]

  • C言語の自作関数がエラーになる

    C言語の自作関数がエラーになる 現在C言語でWindowsのプログラミングを学習中ですが あるプロトタイプ宣言した自作の関数がエラーになってしまいます。 エラー内容は「未解決の外部シンボル・・・」といった内容です。 関数の引数をHWNDだけにした場合は問題ありませんでした。 環境はMicrosoft Visual C++ 2008 Express Editionです。 自作関数の引数に型の制限はあるのでしょうか? よろしくお願いします。 以下コード一部です LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int MySave(TCHAR *,HWND,int); ・ ・ ・ LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp) { THCAR buffer[1024]; int iCount; ・ ・ ・ MySave(buffer,hWnd,iCount); ・ ・ ・ } int MySave(buffer,hWnd,iCount); ・ ・ ・ }

  • C言語での関数の引数の受け渡しについて

    C言語での関数の引数の受け渡しについて教えてもらいたいのです。 char *p=Goo;  というポインタpがmain関数で定義され、このポインタpをある関数 void func(・・・) に渡すことは出来ますか? つまりポインタを実引数として扱うことはできるのかという事ですが・・・ int p=10; とかだったら、 void func(int test) の関数には、main関数で func(p) で仮引数testにわたせると思うんですが・・・ もし出来るようでしたら、関数の渡し方と定義の記述を教えてください。 どうか宜しくお願いします。

  • 関数に値の代入 [C言語]

    C言語初心者です。関数とポインタについて勉強していたのですが、ふと関数の型を知りたくなってVC++で型を調べてみたんです。そしたら、void型で引数のない関数の型は void (__cdecl*)() となっていました。voidと__cdeclはわかります。 そしてこれ型に*が入ってるじゃないですか。ということは関数はポインタということになると思います。なので私はもしかしたら値の代入ができるのではないか、と思ったのです。早速、 f1=f2;(f1とf2は型と内容の同じ関数) や、 (*f1)=(*f2); としてポインタの中身や参照先の関数の実態の値を処理中に書き換えてみようとしました。ですが、多分そうなるとは思ったのですが、コンパイルエラーが出ました。 《エラーの内容》 error C2106:'=':左のオペランドが、左辺値になっていません。 warning C4550:式は引数リストのない関数として評価します。 関数を書き換えようとすること自体馬鹿げていることは重々承知です。でも、微かにいけそうな気がするんですよ。代入させたくないなら関数の型は一律constにすると思うし(実際関数をconstをつけて宣言してもOKだった、(プロトタイプ有り無しでも))、関数への代入は問答無用で駄目なのならばそういうエラーメッセージを出すと思うんです。 関数の書き換えは100%無理でしょうか?それとも関数を書き換える方法があるでしょうか?回答よろしくお願いします。

  • c言語

    (c++ではなくC89準拠) c言語について質問 (1) 関数名()と関数名(void)は違う意味 (2) mainの引数の型は(void)か(int argc, char *argv[]) (3) K&Rは標準c準拠でmain()という表記があります ということは、(1)の関数名とはmain以外の関数名で、 main()とmain(void)は同じなんでしょうか。

  • builder c++

    参考書に載っている読み込みの例題なんですが、 void__fastcal1 TForm1:: Button1Click(TOject*sender) { OpenDialog1->Execute(); ifstream fin; fin.open(OpenDialog1->FileName.c_st5r()); if(!fin){ ShowMessage(""); exit(1); } ....... } で実行するとエラーで"未定義のシンボルOpendialog1"と出てきてうまくいきません。どうすればうまくいきますか?

  • C++コンソールプログラムをBuilder6に書き直す

    卒業研究に取り組んでおり、 コンソールプログラムで得た出力結果(.exe)を、BuilderのMemoで表示させたいのですが、どの部分を書き直したらいいのかわかりません。私が思うに 1.Wimmain 2.出力部分 を書き直せばいいのかなと思うのですが、参考になるサイトなど知っていたら、またアドバイス等ございましたら教えて下さるとありがたいです。 今、namespaceの次にmainを書いているのですが、  E2268 未定義の関数を呼び出した というエラーが表示され、main文は読み込めていないようです。どなたかわかる方いましたらアドバイス宜しくお願いします。 追伸 .exeの内容をShellExcuteで呼び出すということも可能なのでしょうか。宜しくお願いいたします。

  • C言語 関数プロトタイプ宣言の引数に配列を入れたいのですが

    関数プロトタイプ宣言(自作関数)の引数に、A[4][4]というような配列を入れたいのですが、コンパイル時にエラーでincompatibleといわれてしまいます。 A[0][0]からA[3][3]までを個別に引数に指定してもエラーになります。 良い方法は無いでしょうか?

  • main関数について

    最近C言語を勉強し始めた者です。 main関数について分からないことがあるので質問致します。main関数は自作関数ですよね。ということは自由に引数を決めていいのですか?つまり int main(int argc , char *argv[]) 以外の引数を決めることは出来るのでしょうか。

専門家に質問してみよう