OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Borland C++ Builder 4 初心者です。

  • すぐに回答を!
  • 質問No.171278
  • 閲覧数1622
  • ありがとう数3
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 58% (10/17)

C言語初心者(に毛が生えた程度)です。
VBでしたら使えますし、コードが読めるので、
似たような(と言われた)Borland C++ Bulder4を
使用して、仕事でソフトを作ることになりました。
ところが、ヘルプを見ても良くわからないのですが、
VBでのShow&Unloadにあたる命令って何でしょう?
起動時にMainフォームを表示させておき、
各Clickイベントで別のフォームに切り替えるようにしたいのです。
(Main→Log
(他の機能は後日に完成ということです。)
本来なら独習すべきなのでしょうが、明日中に画面を完成させ、
お客にプレゼンすることになっているので、恥ずかしながら、
ここの知恵をお借りしたいのです。
どうかよろしくお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。

 私は前回の回答の前にサンプルを作成して実行出来る事を確認しています。
 サンプルは以下の手順で作成しました。
  1.C++ Builderを起動
  2.フォームを一枚追加(Form2)
  3.Form1に Button1を配置
  4.Button1のクリック時のイベントに Form2->Show(); を記述
  5.Unit1.cppに #include "unit2.h" を記述

 こちらで問題なく動作しました。
 念のため以下がソースです。(Unit1.cpp)
Form2(Unit2.cpp)は作成しただけで手をつけていません。

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------

 今回の隣家エラーの意味は、「モジュール Project1.obj が参照する外部シンボル 'TForm1::' が未解決 です。
 詳しくは、そのエラーメッセージをクリックし、F1を押して下さい。詳しい開設が表示されます。(C++ Builder4で動作を確認)

 これについては、ソースコードを見てみないと原因が分かりません。
 色々原因を探ってみて分からない場合は、一服した後少し昔に戻ってみましょう。 今回のケースは根本的な部分なので最初まで戻ることになってしまいますが。
 まずは今のプロジェクトファイルはおいといて、新しいプロジェクトファイルで簡単な骨組みを作成して動作を確認してみてはいかがでしょうか? そしてそれに肉付けしていき、こまめにコンパイル、実行をします。 
 その過程でエラーの原因が分かるかもしれないし、分からないまま今のプロジェクトファイルと同じ物が出来てしまうかもしれません。

 かなり遠回りで時間のかかる作業ですが、急がば回れといいますようにどうしても原因が分からない場合は、これが有効な手段だと思います。

 参考になれば幸いです(..
お礼コメント
bakuretsu

お礼率 58% (10/17)

別のプロジェクトに1つずつ追加してコンパイルさせてみました。
どうもセーブエラーを起こしていたようで、Form1とForm21が
正常に保存されていなかったようです。
作成しなおしたらうまくいきました。ありがとうございました。
投稿日時 - 2001-11-21 14:41:11
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。  対象のフォームのクラス名が Form1の場合、  Form1.Show → Form1->Show;  Form1.Hide → Form1->Close;  Form1.Unload → Form1->Free;  となります。  Form1->Freeをした場合、クラスを解放しているので再び表示するには、 ...続きを読む
こんにちは、honiyonです。

 対象のフォームのクラス名が Form1の場合、

 Form1.Show → Form1->Show;
 Form1.Hide → Form1->Close;
 Form1.Unload → Form1->Free;

 となります。
 Form1->Freeをした場合、クラスを解放しているので再び表示するには、 Createしなければなりません。 例)Form1 = TForm1.Create(オーナーオブジェクト);
 C++ Builderの場合では、おほどメモリ不足で悩まない限りは Closeで十分だと思います。(私的意見です) 閉じるボタンが押された時も、C++ Builderでは Freeではなく Closeが実行されます。

 参考になれば幸いです(..
補足コメント
bakuretsu

お礼率 58% (10/17)

Main.cppのForm1上のボタン2をクリックすることで、
Log_err.cppのForm21を表示させたいのですが、

void __fastcall TForm1::Button2Click(TObject *Sender)
{

}
//---------------------------------------------------------------------------

に、『 Form21 -> Show 』では

[C++ エラー] Main00.cpp(13): E2451 Undefined symbol 'Form4'.
[C++ エラー] Main00.cpp(14): E2379 Statement missing ;.
と出てしまいました。

クラス名『Log_err』でも同じでした。
投稿日時 - 2001-11-19 20:07:58


  • 回答No.2
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。  Form4なんて知らないよって言われていますね。  Main.cpp には、Form4を宣言してあるLog_err.cpp(Log_err.h)をインクルードする事を宣言しまたか?  Main.cppの一番最初にいろいろ #includeの宣言があると思います。  そこに #include "Log_err.h" を書き加えてください ...続きを読む
こんにちは、honiyonです。

 Form4なんて知らないよって言われていますね。
 Main.cpp には、Form4を宣言してあるLog_err.cpp(Log_err.h)をインクルードする事を宣言しまたか?

 Main.cppの一番最初にいろいろ #includeの宣言があると思います。
 そこに #include "Log_err.h" を書き加えてください。

 Form21を使用しようとしているのに Form4なんて知らないって言われているのがよく分からないですが、とりあえずこれで解決出来ると思います。

 参考になれば幸いです(..
補足コメント
bakuretsu

お礼率 58% (10/17)

Form4 は貼り間違いです。すいません。
今度はインクルードを入れました。

#include "Main00.h"
#include "Log_err.h"
//-------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form21 -> Close;
}
//-------------------------------------------

でも、実行すると、

[C++ エラー] Main00.cpp(15): E2235 Member function must be called or its address taken.

と出ます。ヘルプを参照しても、メンバー関数を呼び出すかアドレスを指定してくださいって
クラスじゃなかったんでしょうか?それとも、まだ、凡ミスしてるのでしょうか?
投稿日時 - 2001-11-20 10:08:10
  • 回答No.3
レベル13

ベストアンサー率 37% (331/872)

こんにちは、honiyonです。  すいません、私の回答ミスでした。  Form21->Show;  ではなく、  Form21->Show();  でした。  C/C++は引数がなくても()が必要でしたね。  すいませんでした(.. ...続きを読む
こんにちは、honiyonです。

 すいません、私の回答ミスでした。

 Form21->Show;

 ではなく、

 Form21->Show();

 でした。
 C/C++は引数がなくても()が必要でしたね。

 すいませんでした(..
補足コメント
bakuretsu

お礼率 58% (10/17)

さっそくやってみました。

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form21 -> Show();
}
//--------------------------------------------

今度はリンカエラーとかになりました。(TT)

[リンカ エラー] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER4\PROJECTS\PROJECT1.OBJ.
[リンカ エラー] Unresolved external 'TForm21::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER4\PROJECTS\PROJECT1.OBJ.

困ったなぁ・・・
投稿日時 - 2001-11-20 14:11:54
  • 回答No.5
レベル13

ベストアンサー率 40% (404/988)

こんにちは。 >[リンカ エラー] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER4\PROJECTS\PROJECT1.OBJ. ビルダーだと、Cソースと同名のヘッターファイルを勝手に作って、そこで、オブジェクトを宣言していますが、そちらに追加されてい ...続きを読む
こんにちは。

>[リンカ エラー] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER4\PROJECTS\PROJECT1.OBJ.

ビルダーだと、Cソースと同名のヘッターファイルを勝手に作って、そこで、オブジェクトを宣言していますが、そちらに追加されていますか?
多分宣言がされていないのではないでしょうか。

そもそも、フォーム名は、Tform1ですか?
表示-オブジェクトインスペクタ(だと思う)
イベント タグ内に OnClick がありますので、そいつをダブルクリックしてみてください。(どこか、ウチ間違いかもしれません。)

なお、VBと違って、大文字・小文字が、厳しいですからねぇ・・・。(自動修正されません)
参考になれば。
でわ
お礼コメント
bakuretsu

お礼率 58% (10/17)

下にも書きましたが、作りなおしで何とかなりましたが、
大文字小文字のミスが3箇所ほどありました。
ご注意頂いたので早期に発見できましたので、
関係ないかもしれませんが、お礼を一言。
ありがとうございました。
投稿日時 - 2001-11-21 14:47:42
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ