トップページ⇒tech
1001コメント310KB

C++Builder相談室 Part13

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん05/02/15 20:58:38
C++Builderに関する質問・回答や議論等を行う相談室スレッド。

過去スレ・関連サイトは>>2-6あたり。
0696デフォルトの名無しさん2005/05/06(金) 04:08:30
>>695
クラスによりけり。
http://www.meta-comm.com/engineering/boost-regression/cvs-head/developer/index.html
それぞれのborland- 5_6_4のとこを見る。
0697デフォルトの名無しさん2005/05/06(金) 07:07:39
このソフトは有料ですか
0698デフォルトの名無しさん2005/05/06(金) 16:53:34
メインスレッドでSleepをかけた時、そのプログラムから作られた他のスレッドも同じくsleep状態になりますか?
0699デフォルトの名無しさん2005/05/06(金) 17:41:51
>>698
他のスレッドにまで影響したら、Sleep() は使い物にならない。
0700デフォルトの名無しさん2005/05/07(土) 02:52:38
スレッドがまだ実行中か終了したかを判別するにはどうしたらよいのでしょうか?
0701デフォルトの名無しさん2005/05/07(土) 03:00:25
OnTerminateでフラグを立てるとか
0702デフォルトの名無しさん2005/05/07(土) 13:29:35
子スレッドが、親スレッドへ、子スレッドが終わったよと何かしらの
方法で伝えればよい
0703デフォルトの名無しさん2005/05/07(土) 21:04:19
グローバル変数でフラグ立ては微かに危険?
0704デフォルトの名無しさん2005/05/07(土) 21:50:03
どんなプロシージャもグローバル変数なしで
記述できる

グローバル変数はいわば手抜き
0705デフォルトの名無しさん2005/05/07(土) 22:34:02
>>703
スレッドが一つなら正解だよ
0706デフォルトの名無しさん2005/05/08(日) 10:29:27
TThread.Terminatedってプロパティ無い?
0707デフォルトの名無しさん2005/05/08(日) 12:32:23
>>706
そいつは終了したかどうかの判定には全く使えない
0708デフォルトの名無しさん2005/05/08(日) 16:30:28
CppWebBrowzerだっけ?スペル忘れたが・・・
これで表示してるWebページのURL
をRichEditに表示するにはどうすればいいの?
0709デフォルトの名無しさん2005/05/08(日) 16:35:06
>>708
RichEdit1->Lines->Add(CppWebBrowser1->LocationURL);
0710デフォルトの名無しさん2005/05/08(日) 17:14:30
>>709
乙
サンクス
0711デフォルトの名無しさん2005/05/08(日) 17:23:27
失礼な奴w 自覚ないだろうけど
0712デフォルトの名無しさん2005/05/08(日) 17:46:26
無いだろうな、たぶん。
0713デフォルトの名無しさん2005/05/08(日) 19:33:54
>>700
親スレッドがメッセージキューを持ってるという前提だけど

子スレッドは終了時に、親スレッドのメッセージキューへWM_USER投げる
ってのはダメかい?
Paramには、スレッドのハンドルなり、インスタンスのアドレスを
キャストして渡すなりすりゃスレッドが複数あっても見分けがつく支那。
おっと最後にWaitForSingleObject()(TThread継承してるならTThread::WaitFor())
でスレッドの完全停止を待ってやってな。
0714デフォルトの名無しさん2005/05/09(月) 07:17:01
BCCはWinアプリやるならVC++より遥かに効率
いいですか?
.NETはアレだし、ソフト開発にあまりコスト
掛けられない現在、いまんとこBCCやDelphiでの
開発が無難としか思えないんだが。
0715デフォルトの名無しさん2005/05/09(月) 07:18:04
↑いけね。BCC => BCB の間違いです。
0716a.b2005/05/09(月) 07:22:35
void __fastcall TForm1::Memo1Click(TObject *Sender)
{
Memo1->Text="今日は晴天です";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
TTabSheet *TabSheet = new TTabSheet( this );
TabSheet->PageControl = PageControl1;
TabSheet->Parent=PageControl1;
PageControl1->ActivePage = TabSheet;
TMemo *Memo=new TMemo(Owner);
Memo->Parent=TabSheet;
Memo->OnEnter= Memo1Click;

}

Memo1内をクリックすると「今日は晴天です」って表示して、
bitbtnを押すと、Memoを増やせるようにしました。増やしたMemo
ではクリックしても「今日は晴天です」って表示されませんけど
どうしてか分かりますか?
0717デフォルトの名無しさん2005/05/09(月) 07:35:15
分かりますよ。
0718a.b2005/05/09(月) 07:46:15
>>717どうすればいいのですか?
0719デフォルトの名無しさん2005/05/09(月) 07:51:49
イベントハンドラを登録すればいいです
0720a.b2005/05/09(月) 08:07:44
Memo->OnEnter= Memo1Click;
↑
のことですか?
0721デフォルトの名無しさん2005/05/09(月) 08:14:47
あ、ごめん。
ハンドラ内で文字列を設定しているのがMemo1だからでしょ。
これを、Sender(要キャスト)にすればOK。
0722a.b2005/05/09(月) 08:18:16
すいません、まだBuilderは知らないので・・・

ソース教えてくれませんか?
0723デフォルトの名無しさん2005/05/09(月) 08:22:53
こんな感じ。一行にまとめてもいいけどね。
void __fastcall TForm1::Memo1Click(TObject *Sender)
{
TMemo *memo = (TMemo *)Sender;
memo->Text="今日は晴天です";
}
0724a.b2005/05/09(月) 11:23:24
ありがとうございます。
0725デフォルトの名無しさん2005/05/09(月) 11:27:54
Cのキャストは止めとくよし

 if ( TMemo* memo = dynamic_cast<TMemo*>( Sender ) )
  memo->Text = "hoge";
0726デフォルトの名無しさん2005/05/09(月) 15:37:32
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
Caption = dynamic_cast<TButton*>(Sender)->Caption;
}
0727デフォルトの名無しさん2005/05/09(月) 15:40:33
VCLは階層重ねて設計してあるから、ダウンキャストはしょっちゅうなのね。
0728デフォルトの名無しさん2005/05/09(月) 17:03:01
>>726
0が帰った時の対策しないのにdynamic_castしても意味ねーべ
0729デフォルトの名無しさん2005/05/09(月) 17:58:26
Perlのunix_md5_crypt()と同じことをするにはどうしたらよいでしょうか
Borland C++Builder 6です。
0730デフォルトの名無しさん2005/05/09(月) 18:17:18
>>729
以下の手順でOK

1.Perlのunix_md5_crypt()の処理内容を調べる
2.調べた処理内容を実装する
0731デフォルトの名無しさん2005/05/09(月) 18:29:12
>>730
そう言われる予感はしてた(´Д⊂
0732デフォルトの名無しさん2005/05/09(月) 19:54:07
次のバージョンは64bitに対応していますか?
0733デフォルトの名無しさん2005/05/09(月) 23:07:57
>>731
MD5ならどっか転がってるだろ
探してみ
0734デフォルトの名無しさん2005/05/09(月) 23:26:10
2chの酉を決めるために呼んでいるcrypt()の話は面白い。
http://user64.psychedance.com/2004/11/spec_2ch_trip.html
0735デフォルトの名無しさん2005/05/10(火) 00:04:20
>>729
RFC1321
0736デフォルトの名無しさん2005/05/10(火) 01:17:58
>>729
CryptAcquireContext()
CryptHashData()
CryptGetHashParam()
CryptDestroyHash()
CryptReleaseContext()
0737デフォルトの名無しさん2005/05/10(火) 01:23:15
C++の例外をデバッガにとられないようにするにはどのオプションを変更すればよいのでしょうか?
0738デフォルトの名無しさん2005/05/10(火) 01:32:47
>>737
ツール->デバッガオプション->言語固有の例外タブ->C++言語の例外で停止OFF
07397292005/05/10(火) 03:04:28
泣きそうになりながらPerlのソース解析してて、
やっぱもっと楽な方法が無いものかと、脳内perl実行
$q =  'unix_md5_crypt';
$q =~ s/unix_//;

ttp://www.google.co.jp/search?lr=lang_ja&q=md5_crypt
ググったらサンプル見つかった、WINで動作確認もしてみた
ご飯食べて寝よう・・おやすみっ(´Д⊂

ttp://ruffnex.oc.to/kenji/xrea/md5crypt.txt
ttp://ruffnex.oc.to/kenji/src/md5.h
ttp://ruffnex.oc.to/kenji/src/md5_crypt.c

>>733-737
レスありが�d
0740デフォルトの名無しさん2005/05/10(火) 13:20:02
>>739
>>737は違うと思うぞ。
0741デフォルトの名無しさん2005/05/10(火) 14:59:26
BCB6でフォルダ選択ダイアログを使う方法を
教えてください。

BROWSEINFO bi;//未定義のシンボルと出ます

#include <shlobj.h>//コンパイルエラーが出ます
#define NO_WIN32_LEAN_AND_MEAN//試してみたけど上に同じ
0742デフォルトの名無しさん2005/05/10(火) 15:59:19
フォームの移動を禁止する方法を教えてください
0743デフォルトの名無しさん2005/05/10(火) 16:01:58
C++Buiderのよい入門書を教えてください。
0744デフォルトの名無しさん2005/05/10(火) 16:05:49
>>741
NO_WIN32_LEAN_AND_MEANはプロジェクトオプション→ディレクトリ/条件タブ→条件→条件定義のとこに追加する。
vcl.hの前で#defineしてもいいけど、プリコンパイルヘッダの再作成が起きないように、
全部のソースで同じように#defineしなきゃいけないのでめんどい。
0745デフォルトの名無しさん2005/05/10(火) 16:13:25
>>742
WM_WINDOWPOSCHANGINGでWINDOWPOS構造体のxとyに
LeftとTopを入れる。
0746デフォルトの名無しさん2005/05/10(火) 16:21:38
>>745
ソース
0747デフォルトの名無しさん2005/05/10(火) 16:22:08
なんだてめぇは…
0748デフォルトの名無しさん2005/05/10(火) 16:23:56
てめぇこそなんだこら
0749デフォルトの名無しさん2005/05/10(火) 16:25:42
はいはい。優しい誰かが書いてくれるかもね、と。
0750デフォルトの名無しさん2005/05/10(火) 16:28:05
情けないなお前って
0751デフォルトの名無しさん2005/05/10(火) 16:33:35
馬鹿だな…ウソでも丁寧に聞きゃいいのに。損するのは自分だ。
0752デフォルトの名無しさん2005/05/10(火) 16:35:59
だから>>747とか調子に乗るんだ
0753デフォルトの名無しさん2005/05/10(火) 18:41:14
WinXPでのsndPlaySound不具合
0754デフォルトの名無しさん2005/05/10(火) 21:06:52
名無しのageはかまってちゃんの荒らしだって
何回釣られたら憶えるんですかみなさん
0755デフォルトの名無しさん2005/05/10(火) 21:13:18
なんだとぉ
0756デフォルトの名無しさん2005/05/10(火) 21:18:07
コテハンならいいのかよ
0757デフォルトの名無しさん2005/05/10(火) 22:42:37
//画像のアルファブレンド
extern bool AlphaPicture(Graphics::TBitmap *DestBMP, int XDest, int YDest, Graphics::TBitmap *SrcBMP , RECT Rect, BYTE Alpha)
{
DestBMP->PixelFormat=pf24bit;
SrcBMP->PixelFormat=pf24bit;

//転送先
int w=DestBMP->Width;
int h=DestBMP->Height;

//転送元
int Width = Rect.right - Rect.left;
int Height= Rect.bottom - Rect.top;
int YSrc = Rect.top;
int XSrc;

Byte *ptr,*ptr2;
0758デフォルトの名無しさん2005/05/10(火) 22:45:13

Alpha=256-Alpha;

for(int y2 = YDest ; y2 < Height+YDest ; y2++)
{
if(y2 >= h)break;

if(y2>=0)
{
ptr = (Byte *)DestBMP->ScanLine[y2];
ptr2= (Byte *)SrcBMP->ScanLine[YSrc];
XSrc=Rect.left;
for(int x2 = XDest ; x2 < Width+XDest ; x2++)
{
int i=x2*3;
if(x2 >= w)break;

if(x2>=0){
ptr[i] = (ptr2[XSrc] +((ptr[i] -ptr2[XSrc]) *Alpha>>8));
ptr[i+1] = (ptr2[XSrc+1]+((ptr[i+1]-ptr2[XSrc+1])*Alpha>>8));
ptr[i+2] = (ptr2[XSrc+2]+((ptr[i+2]-ptr2[XSrc+2])*Alpha>>8));
}

XSrc+=3;
}
}
YSrc++;
}

return true;
}
0759デフォルトの名無しさん2005/05/10(火) 22:47:22
http://sz.sakura.ne.jp/~mimi/programT/WEGraphic.h
http://sz.sakura.ne.jp/~mimi/programT/
0760デフォルトの名無しさん2005/05/10(火) 23:19:18
>>743
ttp://www.borland.co.jp/bookinfo/cppbuild.html
とりあえず、このへんの新しいヤツがいいと思いますよ。
0761デフォルトの名無しさん2005/05/10(火) 23:22:27
>>743
>>760
おまえら、テンプレちゃんと見れ >>7
0762デフォルトの名無しさん2005/05/11(水) 11:22:05
>>761
馬鹿みたいに高いのは何とかならんかねえ
0763デフォルトの名無しさん2005/05/11(水) 11:30:56
ん?>>761が馬鹿ってこと?
0764デフォルトの名無しさん2005/05/11(水) 12:25:45
>>746
お好みでどうぞ。
ttp://www.bulldog.co.jp/ ブルドックソース株式会社 東京都
ttp://www.kagome.co.jp/ カゴメ株式会社 愛知県
ttp://www.otafuku.co.jp/ オタフクソース株式会社 広島県
ttp://www.ikari-s.co.jp/ イカリソース株式会社 大阪府
ttp://www.kikkoman.co.jp/ キッコーマン株式会社 千葉県
ttp://www.oliversauce.com/オリバーソース株式会社 兵庫県
ttp://www.sky-net.or.jp/toshi/ カープソース 広島県
ttp://www.maruki-su.com/ 株式会社 川上酢店 愛知県
ttp://www.kozima.co.jp/ 小島食品製造株式会社 愛知県
ttp://www.komi.co.jp/ コーミ株式会社 愛知県
ttp://www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県
ttp://www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県
ttp://www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府
ttp://www.takahashisauce.com/ 高橋ソース株式会社 埼玉県
ttp://www.choko.co.jp/ チョーコー醤油株式会社 長崎県
ttp://www.timelyhit.ne.jp/ajiyoko/shop/sauce/sauce1.htm 阪神ソース株式会社 兵庫県
ttp://www.kyoto-thinking.co.jp/hirota/ 京風味ソース本舗 蛇ノ目食品廣田徳七商店 京都
ttp://www.optic.or.jp/com/fujiisauce/fujiisauce.html 有限会社 藤井ソース工場 岡山県
ttp://www2.neweb.ne.jp/wd/hikari/ ヒカリ食品 徳島県
ttp://www.hat.hi-ho.ne.jp/aokia/ 下北沢ビレッジソース 丸寿食品工業株式会社 東京都
ttp://www.yamayashokuhin.co.jp/ 山屋食品株式会社 東京都
ttp://www4.osk.3web.ne.jp/~brother1/ ブラザーソース森彌食品工業株式会社
ttp://www.asahi.co.jp/you/t20011026.html 神戸地ソース物語
【関連団体】
ttp://www.maff.go.jp/koueki/sougou/35/35.htm(社)日本ソース工業会
ttp://www.japan-tomato.or.jp/ 社団法人 全国トマト工業会
ttp://www.soysauce.or.jp/ 日本醤油協会
0765デフォルトの名無しさん2005/05/11(水) 13:03:04
>>763
「高い」はどこ行ったんだよおい
0766デフォルトの名無しさん2005/05/11(水) 13:55:06
>>765
つ >>754
0767デフォルトの名無しさん2005/05/11(水) 17:21:05
ホイールのチルトに反応するにはどのようなコードを書けばよいのでしょうか?
0768デフォルトの名無しさん2005/05/11(水) 19:08:35
半角文字しか入力出来ないようにしたいのですが。
クリップボードからの貼り付けも出来ないようにしたいです。
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200403_04030067.html
0769デフォルトの名無しさん2005/05/11(水) 19:29:40
>>768
procedure TForm1.Edit1Click(Sender: TObject);
begin
Zenkaku_Iyaan;
end;
0770デフォルトの名無しさん2005/05/11(水) 19:39:19
>769
C++で書いてください。

0771デフォルトの名無しさん2005/05/11(水) 20:00:09
#include <stdio.h>

#include <ctype.h>

int main(void)
{
char c = 'C';

if (isalnum(c))
printf("%c は英数字です\n",c);
else
printf("%c は英数字ではありません\n",c);

return 0;
}
0772デフォルトの名無しさん2005/05/11(水) 20:30:40
void __fastcall TForm1::Button1Click(TObject *Sender)
{

char c = 'C';

if (isalnum(c))
{
Caption = "英数字です";
}
else
{
Caption = "英数字ではありません";
}

}
0773デフォルトの名無しさん2005/05/11(水) 20:36:30
void __fastcall TForm1::Button1Click(TObject *Sender)
{

//char c = 'C';
char cc[25] = "abc";
if (isalnum(cc[1]))
{
Caption = "英数字です";
}
else
{
Caption = "英数字ではありません";
}

}
0774デフォルトの名無しさん2005/05/11(水) 21:05:33
#include <stdio.h>
#include <ctype.h>

int main( void )
{
char str[] = "Hello C/C++ World, 1st ?";
char *p;

/* アルファベットか数値を括弧[]で囲みます */
for ( p = str; *p != '\0'; p++ ) {
if (isalnum(*p)) {
printf("[%c]", *p );
} else {
putchar( *p );
}
}
putchar('\n');
return 1;
}
0775デフォルトの名無しさん2005/05/11(水) 21:37:27
以下の例では,フォーム上のボタンを使用します。ボタンをクリックすると,テキストの 1 行が 6 つの異なるページに印刷されます。各ページが印刷されるたびに,印刷されているページを示すメッセージがステータスバーに表示されます。
この例を正しく実行するには,ユニットに #include <Printers.h> を追加して,ステータスバーの SimplePanel プロパティを true に設定しなければなりません。

void __fastcall TForm1::Button1Click(TObject Sender*)

{
Printer()->BeginDoc();
for (int i = 1;i < 7;i++)
{
Printer()->Canvas->TextOut(100, 100, "C++Builder rules!");
StatusBar1->SimpleText = AnsiString("Printing page ") + Printer()->PageNumber);
Printer()->NewPage();
}
Printer()->EndDoc();
}
0776デフォルトの名無しさん2005/05/11(水) 21:44:59

















:
0777デフォルトの名無しさん2005/05/11(水) 21:47:19

























;
0778デフォルトの名無しさん2005/05/11(水) 23:31:32























/
0779デフォルトの名無しさん2005/05/11(水) 23:49:55










]
0780デフォルトの名無しさん2005/05/12(木) 00:37:49












,
0781デフォルトの名無しさん2005/05/12(木) 01:19:32
Controling sound volume from code
http://delphi.about.com/cs/adptips2000/a/bltip0800_4.htm
Here's an example of controling the sound volume from Delphi:
uses MMSystem;

type
TVolumeRec = record
case Integer of
0: (LongVolume: Longint) ;
1: (LeftVolume, RightVolume : Word) ;
end;

const DeviceIndex=5
{0:Wave
1:MIDI
2:CDAudio
3:Line-In
4:Microphone
5:Master
6:PC-loudspeaker}

procedure SetVolume(aVolume:Byte) ;
var Vol: TVolumeRec;
begin
Vol.LeftVolume := aVolume shl 8;
Vol.RightVolume:= Vol.LeftVolume;
auxSetVolume(UINT(DeviceIndex), Vol.LongVolume) ;
end;


0782デフォルトの名無しさん2005/05/12(木) 01:24:44
function GetVolume:Cardinal;
var Vol: TVolumeRec;
begin
AuxGetVolume(UINT(DeviceIndex),@Vol.LongVolume) ;
Result:=(Vol.LeftVolume + Vol.RightVolume) shr 9;
end;
0783デフォルトの名無しさん2005/05/12(木) 01:52:38
終わってんなこのスレ
0784デフォルトの名無しさん2005/05/12(木) 01:55:56
5ボタンマウスの前後ボタンに反応するにはどうしたらよいのでしょうか?
0785デフォルトの名無しさん2005/05/12(木) 02:02:59
WM_XBUTTONDOWNとかが怪しい希ガス
0786デフォルトの名無しさん2005/05/12(木) 02:08:48
Getting Hard Disk Information

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char Buffer[255];
unsigned long SerialNum;
unsigned long a, b;

if (GetVolumeInformation("c:\\",Buffer,sizeof(Buffer),&SerialNum,&a,&b,NULL,0)){
Edit1->Text = IntToStr(SerialNum);
Edit2->Text = Buffer;
}
}
0787デフォルトの名無しさん2005/05/12(木) 02:09:58
Opening and closing CD-ROM

#include <mmsystem.h>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
mciSendString("Set cdaudio door open wait", NULL, 0, Handle);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
mciSendString("Set cdaudio door closed wait", NULL, 0, Handle);
}
0788デフォルトの名無しさん2005/05/12(木) 02:18:32
>>785
実装例はどこかにありませんか?
0789デフォルトの名無しさん2005/05/12(木) 02:33:58
ググってそれらしいキーワード見つけただけだからなぁ。
フォームのヘッダに↓書いて反応があれば正解だろうけど。俺は5ボタンマウス持ってないから試せない。

protected:
    void __fastcall WndProc(TMessage& m)
    {
        if (m.Msg == WM_XBUTTONDOWN) {
            if (m.WParamHi == XBUTTON1) Caption = "XBUTTON1";
            if (m.WParamHi == XBUTTON2) Caption = "XBUTTON2";
        }

        TForm::WndProc(m);
    }
0790デフォルトの名無しさん2005/05/12(木) 02:39:40
上のダブルクリックに反応するコードだった。
押されたのを調べるのはこっちか
if (m.WParamLo & MK_XBUTTON1) Caption = "XBUTTON1";
0791デフォルトの名無しさん2005/05/12(木) 02:44:45
Classic Tetris 1.0 (Not rated) Rate this file
http://www.programmersheaven.com/zone3/cat873/37445.htm
0792デフォルトの名無しさん2005/05/12(木) 03:20:35
そろそろゴミの削除依頼しちゃう?
07937842005/05/12(木) 03:41:14
ありがとうございます。後は何とか自力でやってみます
0794デフォルトの名無しさん2005/05/12(木) 06:31:28
ttp://www.kanazawa-net.ne.jp/~pmansato/BCB_Main.htm
俺、BCB買ったけど、殆ど触ってないんでわかんないけど、
ここに置いてるヘルプとかサンプルプログラムってどう?

ヘルプは4800円らしいけど、1ヶ月は使用できるってさ。

俺は他でもうちょっと知識つけてから確認する予定
0795デフォルトの名無しさん2005/05/12(木) 10:14:33
>>794
こんなのもあるぞ
ttp://www.yukibow.com/
■ このスレッドは過去ログ倉庫に格納されています