C++Builder相談室 Part13
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/15 20:58:38過去スレ・関連サイトは>>2-6あたり。
0508本田
2005/04/19(火) 23:51:14そんなことよくあるんだけど、
私、BCB5PROを使ってるんだけど、
プロジェクトファイルをメイクファイルに変換して、
試行錯誤してメイクファイルを修正している。
0509デフォルトの名無しさん
2005/04/20(水) 01:45:500510& ◆FC4h7F/wV6
2005/04/20(水) 02:34:19#include "afxres.h"
を
#include <afxres.h>
にするとか。
0511本田
2005/04/20(水) 02:35:52>>509
BCB6では無理。
0512デフォルトの名無しさん
2005/04/20(水) 03:11:52Delphi2006またはDelphi2007をお待ちください。
0514デフォルトの名無しさん
2005/04/20(水) 16:33:44TTreeViewのスクロールバーって消えないのでしょうか?
ShowScrollBarでやってみても一時的には消えるがやっぱり駄目
サイズ変更の微妙なサイズ変更(横スクロールバーが出る瞬間)
とかするとまた出てきてしまいます。
SetWindowLongでむりやりスタイル変更
ULONG lStyle = ::GetWindowLong( TreeView1->Handle, GWL_STYLE);
lStyle ^= WS_VSCROLL;
::SetWindowLong( TreeView1->Handle , GWL_STYLE, lStyle);
とかしても、駄目っぽいです。
どなたか御存じないでしょうか?
0515デフォルトの名無しさん
2005/04/20(水) 19:15:55そうなのですか・・・
>>510
それも試してみたのですが、やっぱり駄目でした。
アドバイスありがとうございました。
色々試してみます。
0516デフォルトの名無しさん
2005/04/20(水) 21:56:51public 宣言と private 宣言
グローバル
g
gstrUserName
モジュールレベル
m
mblnCalcInProgress
プロシージャ内
なし
dblVelocity
0517デフォルトの名無しさん
2005/04/21(木) 12:37:23Borland C++Builderのチュートリアルをやっていてつまってしまいました…
2:フォーム上の ActionManager1 を選択し,オブジェクトインスペクタで
Images プロパティに ImageList1 を設定します。
とあるのですが、ImageList1と言うものがプルダウンに表示されません
入力しても駄目です…
これは、環境の設定とかが悪いのでしょうか?
Borland C++Builder Professional Version6.0[Build10.166] を使用しています。
どなたか教えて下さい
宜しくお願いします。
0518デフォルトの名無しさん
2005/04/21(木) 12:49:33フォーム上にTImageListコンポーネント置いてあるか?
0519517
2005/04/21(木) 13:00:36やってしまいました・・・置いてませんでした_| ̄|○
申し訳ありませんうまく行きました有り難うございます。
これからも精進致します…
0520デフォルトの名無しさん
2005/04/21(木) 13:42:05LoadFromFileしたいのですが160000行もあり、読
み込みに20秒ぐらい掛かってしまいます。
ListViewのようにMemoもOwnerDataのような事が
可能でしょうか?また、できるならどのようにすれ
ば実現できますか?
0521デフォルトの名無しさん
2005/04/21(木) 13:48:510522デフォルトの名無しさん
2005/04/21(木) 15:53:43パソコンを買い換える。
0523デフォルトの名無しさん
2005/04/21(木) 18:26:21__fastcall TForm3::TForm3(const int iFlg, TComponent* Owner) : TForm(Owner)
↓これで↑を呼ぶ場合にどうすればいいんでしょうか?
Application->CreateForm(__classid(TForm3), &Form3);
これで、
0524デフォルトの名無しさん
2005/04/21(木) 22:04:52グローバルな変数になります。
プライベート変数ではなく、他のフォームからも使ってもらいたい変数は、同じくヘッダファイルの 中の「public:」のもとで宣言し
パブリック変数になります。
フォームに対応したユニット内のすべてのモジュール(関数)から使用できる 変数を、
『プライベート変数』と呼びます。
モジュール(関数)の中で宣言された変数は
『ローカル変数』 と呼ばれます。
0525デフォルトの名無しさん
2005/04/21(木) 22:28:19無理。普通にnewを使えばいい。
0526デフォルトの名無しさん
2005/04/22(金) 01:25:54スタイルにTVS_NOSCROLLを加える。
既にスクロールバーを持ってるやつを、SetWindowLongで変更する場合は、
変更後にShowScrollBarを呼ばないと消えない模様。
0527デフォルトの名無しさん
2005/04/22(金) 10:39:130528デフォルトの名無しさん
2005/04/22(金) 17:26:15C++Buirder5で開発中なのですが、
VBでいうMid関数と同じ役割とする関数ってC++Buirderにもありますか?
もしあるのであれば、教えてくださいm(_ _)m
0529デフォルトの名無しさん
2005/04/22(金) 17:57:310530デフォルトの名無しさん
2005/04/22(金) 19:00:15ヘルプ位見たんだろうな?
0531デフォルトの名無しさん
2005/04/22(金) 19:23:190532デフォルトの名無しさん
2005/04/22(金) 20:45:59二回繰り返してるってことは素で間違えてるのか?
×Buirder
○Builder
0533デフォルトの名無しさん
2005/04/23(土) 04:51:22{
/*
Unit1.h
#include <StrUtils.hpp>
*/
//Unit1.cpp
AnsiString A = "XYZ";
AnsiString B = "わおん";
Caption = MidStr(A,3,1); //Z
Application->Title = MidStr(B,5,2); //ん
}
0534デフォルトの名無しさん
2005/04/23(土) 04:53:14enum TStringMbcsByteType { mbSingleByte, mbLeadByte, mbTrailByte };
TStringMbcsByteType __fastcall ByteType(int index) const;
説明
ByteType メソッドは,AnsiString 内の index(0 が最初)で示されたバイトの 位置にあるバイトの種類を示します。戻り値は以下のとおりです。
定数 意味
mbSingleByte 1 バイト文字
mbLeadByte マルチバイト文字の最初のバイト
mbTrailByte マルチバイト文字の最後のバイト
西洋諸国など一部のロケールではマルチバイト文字を使用しません。その場 合,ByteType は常に mbSingleByte を返します。
0535デフォルトの名無しさん
2005/04/23(土) 05:34:56{
/*
Unit1.h
#include <StrUtils.hpp>
*/
//Unit1.cpp
AnsiString A = "XYZ";
AnsiString B = "わおん";
Caption = MidStr(A,3,1); //Z
int intStart,intCount;
intStart = 3;
intCount = 1;
Application->Title = MidStr(B, (intStart * 2) - 1, intCount *2); //ん
//Application->Title = MidStr(B,5,2); //ん
}
//-------------------------------
0536デフォルトの名無しさん
2005/04/23(土) 05:44:57MidStr
MidStr
MidStr
MidStr
MibStr
MidStr
MidStr
MidStr
MidStr
MidStr
MidStr
0537デフォルトの名無しさん
2005/04/23(土) 07:38:510538デフォルトの名無しさん
2005/04/23(土) 09:59:18void __fastcall TForm1::FormCreate(TObject *Sender)
{
/*
Unit1.h
#include <StrUtils.hpp>
*/
//Unit1.cpp
AnsiString A = "WXYZ";
AnsiString B = "富士山";
Caption = MidStr(A,3,1); //Y
int intStart,intCount;
intStart = 3;
intCount = 1;
//Application->Title = MidStr(B, (intStart * 2) - 1, intCount *2); //山
//Application->Title = MidStr(B,5,2); //山
StrLCopy(A.c_str(), B.c_str(), 4);
Application->Title = AnsiString(A); //富士
}
0539デフォルトの名無しさん
2005/04/23(土) 10:03:08{
/*
Unit1.h
#include <StrUtils.hpp>
*/
//Unit1.cpp
AnsiString A = "WXYZ";
AnsiString B = "富士山";
Caption = MidStr(A,3,1); //Y
int intStart,intCount;
intStart = 3;
intCount = 1;
//Application->Title = MidStr(B, (intStart * 2) - 1, intCount *2); //山
//Application->Title = MidStr(B,5,2); //山
Application->Title = StrLCopy(A.c_str(), B.c_str(), 6); //富士
}
0540デフォルトの名無しさん
2005/04/23(土) 10:04:32void __fastcall TForm1::FormCreate(TObject *Sender)
{
/*
Unit1.h
#include <StrUtils.hpp>
*/
//Unit1.cpp
AnsiString A = "WXYZ";
AnsiString B = "富士山";
Caption = MidStr(A,3,1); //Y
int intStart,intCount;
intStart = 3;
intCount = 1;
//Application->Title = MidStr(B, (intStart * 2) - 1, intCount *2); //山
//Application->Title = MidStr(B,5,2); //山
Application->Title = StrLCopy(A.c_str(), B.c_str(), 4); //富士
}
0541デフォルトの名無しさん
2005/04/24(日) 02:12:200542デフォルトの名無しさん
2005/04/24(日) 02:47:27文字数を調べる関数を作りました。
2. 文字列の文字数を調べる
1 バイト文字と 2 バイト文字が混在する文字列の文字数を返す関数です。
// 文字列の文字数を返す
// src : 文字列
int GetCharLength(const char* src)
{
if (src[0] == '\0')
return 0;
char* s;
int count = 1;
s = CharNext(src);
while (*s)
{
++count;
s = CharNext(s);
}
return count;
}
0543デフォルトの名無しさん
2005/04/24(日) 03:15:200544デフォルトの名無しさん
2005/04/24(日) 03:32:58{
AnsiString ansiB = "富士山麓";
Caption = ansiB.SubString(5,4); //山麓
}
0545デフォルトの名無しさん
2005/04/24(日) 08:50:530546デフォルトの名無しさん
2005/04/24(日) 13:40:390547デフォルトの名無しさん
2005/04/24(日) 14:00:410548デフォルトの名無しさん
2005/04/24(日) 14:58:230549デフォルトの名無しさん
2005/04/24(日) 15:16:420550デフォルトの名無しさん
2005/04/24(日) 15:57:48このクラスのインスタンスをグローバル宣言しました。
で、DisplayClassのパブリックメンバに、Graphics::TBitmap *LoadPicBitmap;
と宣言。
フォームは一個だけIDEで作成し、On_CreateハンドラからDisplayClassのメンバ関数を呼び出し、
LoadPicBitmapにnewする。
で、Form1のOn_CloseハンドラでLoadPicBitmapをdeleteすると、ウィンドウを閉じた時に
不正終了してしまいます。
LoadBitmapを参照しているほかのイベントハンドラがまだ呼ばれるのかと思いました。
なんで、On_CloseハンドラではApplication->Terminate()することにして、
On_Destroyハンドラでdeleteすることにしたのですが、頻度は減りましたがやはり
たまに不正終了します。
どうやったら不正終了しないでLoadPicBitmapを解放できるでしょうか?
0551デフォルトの名無しさん
2005/04/24(日) 17:13:02もう少し綺麗にコピーできる方法はないでしょうか?
0552デフォルトの名無しさん
2005/04/24(日) 18:11:20OnIdleってそのアプリが処理するメッセージがないときに呼ばれるものだから、CPUの忙しさとは関係ないのでは。
CPUがどんだけ忙しくたって、キューにメッセージがなければそのアプリはアイドル状態って判断されるわけだし。
0553デフォルトの名無しさん
2005/04/24(日) 19:04:23コピー中は、プログラムが固まって操作できなくなるんだけど
これを回避する方法ってありますか?
0554デフォルトの名無しさん
2005/04/24(日) 19:16:320555デフォルトの名無しさん
2005/04/24(日) 21:44:51バッファ使うなりして自前でコピーしたら?
現在何%コピーできてるかとかの表示もできそう
だし。
ただ、正確にコピーできてるかファイル比較
したりする必要あるなら多少面倒っぽいかも。
ところでCopyFileの速度ってどうなの?
高速ファイルコピー専用のアプリも多いみたい
なんだけどファイルコピーが低速なのはエクスプロ
ーラ上だけ?
と、自分では何も確認してない俺がレスしときますね。
0556デフォルトの名無しさん
2005/04/24(日) 23:57:34どうもありがとうです。
なんとか、スレッドを使ってうまくいったです。
でも、コピー失敗するから、ウェイトとかファイル比較とか
結構ややこい。
高速確実にファイルコピーできる方法があったら、
俺も知りたいです(´・ω・`)
0557デフォルトの名無しさん
2005/04/25(月) 00:34:430558デフォルトの名無しさん
2005/04/25(月) 03:14:220559デフォルトの名無しさん
2005/04/25(月) 03:48:450560デフォルトの名無しさん
2005/04/25(月) 05:46:280561デフォルトの名無しさん
2005/04/25(月) 07:22:430562デフォルトの名無しさん
2005/04/25(月) 07:52:21Indyを入れると出るみたいです。
だれかIndyうまくインストールできた人居る?
0563デフォルトの名無しさん
2005/04/25(月) 17:46:05C++Builder6 vol.2の本に載ってるよ
0564デフォルトの名無しさん
2005/04/25(月) 17:49:050565本田
2005/04/25(月) 20:34:16>Spi Load
http://www.vector.co.jp/soft/win95/art/se064950.html
0566デフォルトの名無しさん
2005/04/25(月) 21:58:36ヘルプの「ユニット」ってやつのヘッダ。
VCLのヘッダは拡張子hppだから気をつけて。
0567デフォルトの名無しさん
2005/04/26(火) 13:40:07できました!
thx!
0568デフォルトの名無しさん
2005/04/26(火) 15:48:32ScrollBoxについてなのですが、
これは直接文字を書き込むことはできないのでしょうか?
もしできるのであれば教えてください。
0569デフォルトの名無しさん
2005/04/26(火) 17:30:01>これは直接文字を書き込むことはできないのでしょうか?
「直接文字を書き込む」とは、
ScrollBox のどこにどう書き込みたいのか?
次第による。
0570デフォルトの名無しさん
2005/04/26(火) 19:20:450571デフォルトの名無しさん
2005/04/26(火) 19:28:42::GetSystemTime(LPSYSTEMTIME);
じゃだめなのか?
0572デフォルトの名無しさん
2005/04/27(水) 17:07:44レスがかなり遅くなりましたがありがとうございます。
それで、やってみます。
0573デフォルトの名無しさん
2005/04/27(水) 19:09:150574デフォルトの名無しさん
2005/04/27(水) 20:35:18最新のバージョンに更新する
0575デフォルトの名無しさん
2005/04/28(木) 01:31:00何の設定もしないままソース書いたんですが動きません。
どう設定すればよいか教えてください。
0576デフォルトの名無しさん
2005/04/28(木) 01:43:31そらまぁ、ソースを書いただけじゃ動くわけないな。
動いたらオカルトだ。
まともな回答が欲しかったらまともな質問しな。
どのようなソースを書いてどのようなオプションでコンパイルして
どのように実行したがどのような結果に終わったのか、
全て書け。
0577デフォルトの名無しさん
2005/04/28(木) 01:55:57インクルードパス:C:\Program Files\Borland\CBuilder6\Include
ライブラリパス:C:\Program Files\Borland\CBuilder6\Lib
デバッグ用ソースパス:$(BCB)\source\vcl
#include <stdio.h>
main(){
printf("Hello, world.\n");
return 0;
}
これを実行すると、
[C++ エラー] Project1.cpp(3): E2209 インクルードファイル 'vcl.h' をオープンできない
[C++ エラー] Project1.cpp(6): E2303 型名が必要
[C++ エラー] Project1.cpp(6): E2034 'char *' 型は 'int' 型に変換できない
[C++ エラー] Project1.cpp(6): E2293 ) が必要
[C++ エラー] Project1.cpp(8): E2141 宣言の構文エラー
なんでvcl.hとかでてくるのか…
0578デフォルトの名無しさん
2005/04/28(木) 02:06:37にしてみたら?
0579デフォルトの名無しさん
2005/04/28(木) 02:09:58Windows アプリケーションとして、そういうコードを書いているの?
BCB 初心者かな?だとしたら間違い。
BCB6 立ち上げたら、
1) [ファイル] - [すべて閉じる]
2) [ファイル] - [新規作成] - [その他...]
3) 表示されたダイアログの新規作成タブからコンソール ウィザードをダブル・クリック
4) 更に表示されるダイアログであまり深い事を考えずに OK ボタンをクリック
の手順を踏む。
そうすれば main 関数のスケルトンが出てくるのでそれを編集する。
で、IDE 上からプログラムを実行すると、あっという間に終わって表示が消えるので、
最後に何か入力しないとプログラムを終われないようにしておくといい。
0580デフォルトの名無しさん
2005/04/28(木) 02:10:17だめでした。
インクルードパス:$(BCB)\include;$(BCB)\include\vcl
ライブラリパス:$(BCB)\Lib
で実行すると、
[リンカ 致命的エラー] Fatal: ファイル SYSINIT.OBJ が開けません
とでます。
0581デフォルトの名無しさん
2005/04/28(木) 02:17:16できました。
ありがとうございました。
0582デフォルトの名無しさん
2005/04/28(木) 02:18:36だから、分からんかったら全部書けって言ってるんだ。
そのプロジェクト、どういう手順で作成した?
それをはっきりさせて。
あと、「ファイル」→「新規作成」→「アプリケーション」で
新しいプロジェクトをつくって、なにもせずそのまま実行してごらん。
それでエラーが出るかどうか報告して。
0583デフォルトの名無しさん
2005/04/28(木) 02:33:59いままで立ち上げてUnit1.cppに打ってました。
何もせず実行すると577で書いたエラーがでます。
0584デフォルトの名無しさん
2005/04/28(木) 04:48:43画像が書き込まれるのに、画面上でTImageの中に画像が表示されません。TImageのVisibleはtrueになっています。
表示されない原因として何が考えられるでしょうか?
0585デフォルトの名無しさん
2005/04/28(木) 05:48:28HeightとWidthの値が物凄く小さくなってるとか?
0586デフォルトの名無しさん
2005/04/28(木) 08:01:450587デフォルトの名無しさん
2005/04/28(木) 09:34:27OSはXPです。
0588デフォルトの名無しさん
2005/04/28(木) 11:54:320589デフォルトの名無しさん
2005/04/28(木) 12:12:51>>574
0590デフォルトの名無しさん
2005/04/28(木) 12:43:370591デフォルトの名無しさん
2005/04/28(木) 17:10:49【VCLリファレンスより】
EOutOfResources は,Windows ハンドルを割り当てることができなかったときに送出される例外クラスです。
メモリが十分ある事が関係するとは思えないが?
0592デフォルトの名無しさん
2005/04/28(木) 19:39:51>>574
0593デフォルトの名無しさん
2005/04/29(金) 05:29:490594デフォルトの名無しさん
2005/04/29(金) 12:42:32どこで new DisplayClass() してるの?
Form と生成消滅のタイミングが同じなら
DisplayClass は Form の protected/private メンバにしたほうがよくない?
で、「OnCreate(Form::FormCreate) で new DisplayClass()」してね。
Form のコンストラクタで new したり、
Form に埋め込むのはやめたほうがいいよ。
VCL は普通の C++ じゃないからね。
0596デフォルトの名無しさん
2005/04/29(金) 15:40:54なんでグローバルという気もするけど、そっちは置いといてよさそう?
自分で TBitmap を割り当てているようなコントロールの
Bitmap に LoadPicBitmap を割り当てたとか?
...->Bitmap->Assign(Display.LoadPicBitmap);
↑ほんとはこう書かないといけないのに
...->Bitmap = Display.LoadPicBitmap;
↑こう書いているとか?
どこかのコントロールで二度目のdeleteが発生してる可能性のほうが高いのかな。
0597デフォルトの名無しさん
2005/04/29(金) 16:03:21んん?
Application->Terminate() って、最近書いた記憶ないや
これもなんか変?
>MainForm プロパティを使うと,アプリケーションのメインウィンドウとして動作するフォームを指定できます。メインフォームは,アプリケーションのメインプログラムで最初に作成されるフォームです。メインフォームを閉じるとアプリケーションは終了します。
0598550
2005/04/29(金) 16:56:49復活してしまうのです。
他のハンドラからShowプロパティが呼ばれているのだと思い、destroyedというフラグ変数を
OnCloseハンドラで立て、OnMouseDownなど、コードのある全てのハンドラの先頭に
if(destroyed)return;
と書いてもまだ復活してしまうのです。
なぜなんでしょう?
0599550
2005/04/29(金) 17:03:580600594
2005/04/29(金) 17:47:36コードの書き方がたいへんユニークみたいやなあ
それが原因ぽい
勇気をもってどっかにコード一式上げてみるかぃ
0601550
2005/04/29(金) 18:02:11http://www.borland.co.jp/qanda/delphi/d0000150.html
現在のプログラムはoncreateがそのままメインルーチンに突入する仕組みになっているので。
onClickを契機にメインルーチンに突入するように改造するか…
0602594
2005/04/29(金) 18:38:37OnCreate で失敗すると、Form のロードに失敗したりするからねえ
がんがー
0603デフォルトの名無しさん
2005/04/29(金) 21:14:39コード挙げてみ?
0604550
2005/04/30(土) 00:25:45onClickを契機にメインルーチンを組んだらonCloseでインスタンスを解放できました。
Application->Terminate()も記述しないでプログラムが終了しました。
ただまれに「フォームが復活」することがあったのですが、
onClickからのルーチンを、とにかくonCloseで立てる「destroyed」フラグが
立っていたら作業をすぐやめる、ように書き直したら現象が出なくなりました。
ありがとうございました。
ソース晒しですが、とても恥ずかしい種類のプログラム(要するにエロゲ)なので
ご勘弁下さい…
0605デフォルトの名無しさん
2005/04/30(土) 03:04:480606デフォルトの名無しさん
2005/04/30(土) 08:23:30void __fastcall Sex::Incert(int WomanNo)
{
AnsiString str = "ずぶっ、ぬぷぷぷぷ";
.
.
.
}
0607デフォルトの名無しさん
2005/04/30(土) 08:34:03エロゲで恥ずかしいのはテキストやCGであって
エンジン部分ではないと思うぞ・・・。
まさかソースに直接エロ台詞が書かれてるわけでもあるまいに。
■ このスレッドは過去ログ倉庫に格納されています