くだすれC++Builder( ..
596:デフォルトの名無しさん
08/07/08 13:57:48
>>590
if ( strcmp( aaa,"jpg" )==0 ) とすればええんでないの?
"jpg"ってすると、メモリのどっかに確保された4バイト('j','p','g',0)のアドレスを示す。
aaaに格納された"jpg"のアドレスと、ifで比較している"jpg"のアドレスが違うからfalseになる。
597:デフォルトの名無しさん
08/07/08 18:27:30
>>590
char* でやらないで AnsiString でやれば動く。
598:デフォルトの名無しさん
08/07/09 23:36:09
イベントハンドラを呼び出すとき、
Button1Click(Button1); Button1Click(Button2); Button1Click(Form1);
のどれでも動くみたいですが、Senderには普通何を与えるのが正しいの?
Senderの役割を教えてください。
//Form1上にButton1とButton2
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button1Click(Button2);
}
599:デフォルトの名無しさん
08/07/09 23:54:20
Senderはイベント呼び出し元のTagやデータ読むのに使うから、そのイベントに関連づけたいオブジェクトを指定。
たとえば拡大ボタンと縮小ボタンがあって、それぞれにイベントハンドラ書くのはアホ臭いから
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int zoom;
TButton* button = dynamic_cast<TButton*>(Sender);
zoom = button->Tag;
if (zoon == 1) 拡大();
else 縮小();
}
こんな感じで使ったりする。
ハンドラ内でSender使わないならthisで十分。
600:デフォルトの名無しさん
08/07/10 00:14:17
>>599 ありがとうございます。
601:デフォルトの名無しさん
08/07/22 14:35:51
WindowsXPでBCB6.0を使っています。
URLリンク(homepage2.nifty.com)
上記のサンプルプログラムを自分の環境で実行してみたのですが、以下のエラーが出てしまいます。
[リンカ エラー] 外部シンボル 'GetIfTable' が未解決(D:\ADDRESGET\UNIT1.OBJ が参照)
ソースファイルをダウンロードして実行してみたところ、正常に動作したことから環境は間違って無いと思うのですが・・・。
インクルードファイルも同じにして、オプションのリンカやディレクトリ/条件も揃えてみましたがダメでした。
この場合、何を見たらよろしいのでしょうか?
よろしくお願いします。
602:デフォルトの名無しさん
08/07/22 14:54:57
iphlpapi.libリンクしてないだろ。
bcb/lib/psdkにあるのプロジェクトに追加しる
603:デフォルトの名無しさん
08/07/22 15:01:37
>>602
・・・その通りでした。
インクルードで指定して、エラーも出ていないから必要無いと思い込んでました。
本当にありがとうございました。
604:D
08/07/22 15:12:34
☆ チン ハラヘッタ〜
ハラヘッタ〜
☆ チン 〃 ∧_∧
ヽ___\(\・∀・)
\_/ ⊂ ⊂_)
/ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄| |
|淡路たまねぎ|/
 ̄ ̄ ̄ ̄ ̄ ̄
605:デフォルトの名無しさん
08/07/22 15:38:51
>>603
コンパイルとリンクに違いについてもうちょっと勉強した方がいい
606:デフォルトの名無しさん
08/07/25 03:16:38
文字列の加工方法について質問です。
char chrBuf[1024];
AnsiString asBuf;
strcpy(chrBuf,"123456");
strcpy(asBuf.c_str(),chrBuf);
asBuf.Delete(3,3);
Label1->Caption = asBuf.c_str();
これで、「126」と表示させたいのですが、実際には「123456」となってしまうのは何故でしょうか・・・?
よろしくお願いします。
607:デフォルトの名無しさん
08/07/25 04:39:22
char chrBuf[1024];
AnsiString asBuf;
strcpy(chrBuf,"123456");
asBuf = chrBuf;
asBuf.Delete(3,3);
Label1->Caption = asBuf;
とやりたいの?
Caption は AnsiString だから、AnsiString → char * → AnsiString っていう
キャストが行われると思うんだけど、これはわざと?
c_str() で確保されたメモリ空間の寿命は未確定。
コピー先として使うべきではない。
608:デフォルトの名無しさん
08/07/25 10:30:26
>>607
AnsiStringを加工に使いたいのですが、挙動を理解しきれてないので・・・。
「URLリンク(homepage1.nifty.com)」で、
>char* c_str( )
>文字列をC言語の char* 文字列で返す。返すのはあくまでも char* 型のポインタであり、
>文字列のコピーが作られるわけではない。従って、受け取った char* 文字列を安全に操作したい場合は strcpy( ) などでコピーすると良い。
と、あるのでコピーしたのですが・・・解釈が違ったのかな?
ポインタとして渡せば動作するのですね。
ありがとうございます。
609:デフォルトの名無しさん
08/07/25 10:35:12
>c_str( )
は、無理して使う必要は無い。
どうしても使わないといけないときは、AnsiStringとstd::stringの渡しくらい。
例えば、
AnsiString SBuf;
string sBuf;
のとき、
sBuf = SBuf.c_str();
SBuf = sBuf.c_str();
と書く。
それ以外は、「.c_str()」を書かなくても、多分演算子がオーバーロードされてて、簡単に代入できる。
610:デフォルトの名無しさん
08/07/25 13:51:01
>>608
解釈が違うと思う。
c_str() で得られたポインタから strcpy 等で
「自分で確保したメモリにコピーする」っていう意味。
そうすれば、自分で確保したメモリの寿命は自分で決められるから。
URLリンク(www.ne.jp)
↑も参照してみて。
611:デフォルトの名無しさん
08/07/25 15:16:04
>>609-610
詳しい解説ありがとうございます。
入門書を見ると、「初心者はAnsiStringを使えば簡単」って書いてあるけど、実は取り扱いには注意しないといけないんですね。
暑くて頭があまり回っていませんが、がんばってみます。
612:デフォルトの名無しさん
08/07/25 15:20:45
>>611
基本的には常に AnsiString を使って、
API とのやりとりや、標準ライブラリの呼び出しだけに c_str() を使う、
って考え方が良いと思う。
613:デフォルトの名無しさん
08/07/25 15:48:01
>実は取り扱いには注意しないといけないんですね。
なことない。簡単。
614:デフォルトの名無しさん
08/07/25 18:05:18
今年買ったPCでTurboC++ Builder, WinXPでOpenGLに挑戦中なんですが,
テクスチャについて質問があります。
今, 「C++ Builder 6 コンポーネント活用ガイド&実践プログラミング Vol.8
OopenGL プログラミング編」
の「53-2 Bitmap形式のファイルを利用する」のソースコードex19を試しています。
このex19で1枚のテクスチャにbmpファイルを貼り付けているんですが, サイズが
64*64, 128*128, 256*256ならうまくいくんですが, 512*512や1024*1024のbmpを利用しようとすると
スタックオーバフローを検出して止まります。
これは, 256が4枚で512を表現したりするしかないのでしょうか?
512*512やそれ以上のサイズが使える解決方法をお願いします。
615:デフォルトの名無しさん
08/07/25 18:15:00
>>614
よくわからないけど、ファイル自体をスタックに積んでるのかねぇ?
そんなコード見たことがないが。
その辺り調べてみた?
616:デフォルトの名無しさん
08/07/25 18:37:34
一様乱数を生成する関数のソースについて質問があります。y=1/sqrt(2)*exp(-1/2*x*x)の計算で
In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom':: undefined reference to `exp'というエラーがでて実行できません。もちろん<math.h>は定義しました。
レポート課題なのでマジで困ってます。是非教えてください。ソースを下に載せておきます。ちなみにxが一様乱数で、yが正規乱数です。
double GaussRandom()
{
double x;
double y;
x=UniformRandom();
y=1/sqrt(2)*exp(-1/2*x*x);
return y;
}
double UniformRandom()
{
double x;
int r=1;
r=1229*r+351750;
x=r/1664501;
return x;
}
}
617:デフォルトの名無しさん
08/07/25 18:48:29
GaussRandom()の前にUniformRandom()が定義されてないからじゃないの
618:デフォルトの名無しさん
08/07/25 18:54:34
>>617 今入れ換えて実行してみたのですが駄目でした。
619:デフォルトの名無しさん
08/07/25 20:02:44
おかしいね、うちはそれコピペしただけの通るよ
math.hのincludeがうまくできてないのかね
620:デフォルトの名無しさん
08/07/25 21:11:48
マルチポストしまくりで解決済みなんでスルーでいいよ
621:デフォルトの名無しさん
08/07/26 21:04:15
>>615 スタックのサイズを大きくしたらいけました。ありがとうございます。
622:デフォルトの名無しさん
08/07/26 21:09:55
>>621
とりあえず載ってるコードがダメダメな気がするから自分で書き直すことをお奨めする
623:デフォルトの名無しさん
08/07/26 22:36:46
コンパイルするとError: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照
とでるのですが、理由がわかりません・・・。
どなたかわかる方お願いします。
624:デフォルトの名無しさん
08/07/27 14:51:31
フォームに配置したTButtonのOnClickイベントを、
実際にボタンを押してではなく、あるメソッド内から呼び出したいのですが
そういうことは可能ですか?
625:デフォルトの名無しさん
08/07/27 15:12:14
TButton::Click()があるじゃない
626:デフォルトの名無しさん
08/07/27 15:43:56
>>625
おかげさまで解決しました。
ありがとうございました。
627:デフォルトの名無しさん
08/07/27 22:16:52
おすすめのエディタ教えてください!
今までC言語を始めよう!というフリーソフトを使ってきました
628:デフォルトの名無しさん
08/07/27 22:17:48
>>627
スレ違い
629:デフォルトの名無しさん
08/07/27 23:24:30
>>627
エディタ部分だけなら2006以降のエディタの方がいいかな
ウィンドウ構成とかは6までのIDEのほうが好きだけど
630:デフォルトの名無しさん
08/08/05 15:25:09
C++Builder6からmecabを使いたいのですが、一週間以上格闘しても光が見えません(涙)
mecabの初期化すら出来ない状態なので何かアドバイス頂ければ嬉しいです。
よろしくお願いします。
631:デフォルトの名無しさん
08/08/08 15:12:29
OpenProcessで使うPROCESS_ALLACCESSマクロだが、定義間違ってね?
VCその他では
#define PROCESS_ALL_ACCESS 0x001f0fff
BCCでは
#define PROCESS_ALL_ACCESS 0x001fffff
になってる。
たぶん>>427の問題もそのせい
こういうバグってどこに報告すればいいん?
632:デフォルトの名無しさん
08/08/08 15:31:13
普通に0x1F0FFFになってるが。
検証コードはprintf("%08X", PROCESS_ALL_ACCESS);
環境は6pro update4
633:デフォルトの名無しさん
08/08/08 15:37:38
winnt.h
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
0xFFF)
#define STANDARD_RIGHTS_REQUIRED (0x000F0000L)
#define SYNCHRONIZE (0x00100000L)
どう見ても 001f0fff だわな
634:デフォルトの名無しさん
08/08/08 15:38:59
おっと、手元のが古いだけか
駄レスすまそ
635:デフォルトの名無しさん
08/08/09 11:28:57
そういうところまで疑わなきゃいけないんだな、面倒な
636:デフォルトの名無しさん
08/08/09 21:33:14
TEditにある数値を入力して、OnExitイベントで入力された数値を
チェックしてますが、入力値が異常でも、フォーカスが次のTEdit
にうつってしまいます。
よく考えれば当然といえば当然の結果なのですが、どうしても正常値
を入力するまでフォーカスを保持させたいのですが、行き詰ってしまい
ました。
よい解決方法がないでしょうか。よろしくお願いします。
637:デフォルトの名無しさん
08/08/09 22:19:30
できるじゃん
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
TEdit* edit = dynamic_cast<TEdit*>(Sender);
if (edit->Text != AnsiString("aaa")) {
edit->SetFocus();
}
}
638:デフォルトの名無しさん
08/08/11 15:43:16
ScanLineとRGBTRIPLEについて質問です。
ネットで調べると、ScanLineで取り込んだ配列はBGRの順番に入っているのでRGBTRIPLEに入れればよいとなっていたのですが、
実際に使ってみるとずれており、4番目の数値(中身は0)があるような感じでした。
BYTEが4つある配列に入れることで動作させましたが、以下の書き方は間違っているのでしょうか?
int i,j;
int RoopMax=100; // ループ回数
DynamicArray<RGBTRIPLE*> slbuf;
slbuf.Length=RoopMax;
for (i=0 ; i<RoopMax ; i++){
slbuf[i] = (RGBTRIPLE*)ColPos[Num]->Picture->Bitmap->ScanLine[i];
}
for(i=0;i<RoopMax;i++){
for(j=0;j<RoopMax;j++){
Ra[i][j] = slbuf[i][j].rgbtRed;
Ga[i][j] = slbuf[i][j].rgbtGreen;
Ba[i][j] = slbuf[i][j].rgbtBlue;
}
}
639:デフォルトの名無しさん
08/08/11 15:56:51
>>638
ビットマップが24bitならBGRの3bytes、32bitならBGRAの4bytes。
640:デフォルトの名無しさん
08/08/11 15:58:52
あと、今のPCだと32bitのほうが一般に処理速度早くなるから注意。
24bitだとワード+バイト転送なのに対し、32bitはダブルワード1回ですむ
641:デフォルトの名無しさん
08/08/11 16:07:26
>>639-640
なるほど、ビットマップの形式によって変わるので処理としては間違ってはいないんですね。
BGRAがあることに気づきませんでした。
ありがとうございます。
642:デフォルトの名無しさん
08/08/13 17:02:27
サブのスレッド(TThread)でTNotifyEventを発生させて、そのイベントによりメイン側の関数が実行されたとき
メイン側のメンバ変数の内容が見えないのですが、どうすればいいのでしょうか。
エラーが出るのではなく、関係ない数値が入っているので、別の部分を参照しているみたいです
具体的には
メイン側クラス(MainClass)、サブのスレッド(SubThread)
MainClass内で
AnsiString a;
SubThread->hogeEvent = (TNotifyEvent)&hogeFunc;
さらに
void hogeFunc(TObject* Sender)
{
MessageBox(Handle , a.c_str() , "",MB_OK);
}
として、hogeEventを発生させたとき、メイン側で既に代入したaの内容が読み取れていない
といった感じです。
よろしくお願いします。
643:デフォルトの名無しさん
08/08/13 23:46:54
実行コンテキストを無視しちゃだめ。メインスレッドに属するコード部分はメインスレッドのコンテキストで
実行する。PostMessageとかSynchronizeとかを使う。
644:デフォルトの名無しさん
08/08/14 03:13:49
>>643
ありがとうございます。
TNotifyEvent fOnHoge;
__property TNotifyEvent hogeEvent = {read=fOnHoge,write=fOnHoge};
void __fastcall TSubThread::evHoge(TObject* Sender)
{
if(hogeEvent){
hogeEvent(this);
}
として、サブスレッド内で
Synchronize((TThreadMethod)&evHoge);
を呼び出しても、解決しません。
このような書き方ではメインスレッドのコンテキストで実行されないのでしょうか。
2度も申し訳ありませんが、よろしくお願いします。
645:デフォルトの名無しさん
08/08/14 18:47:21
アホな質問をお許し下さい。
Unit1.cppにくっついてるフォームForm1(Unit1.dfm)のMemo1に
Unit2.cppの処理から文字を入れたいときはどうすればよいでしょうか…
VBっぽくForm1->Memo1->Lines->Add(a);みたいにしたら出来るかなーと思ったけど駄目でした
Turbo C++を使っています。
646:デフォルトの名無しさん
08/08/14 18:48:37
Unit2.hppに#include "Unit1.hpp"
647:デフォルトの名無しさん
08/08/14 18:50:14
ファイル→ユニットヘッダーファイルの追加の方が楽か
648:645
08/08/14 19:10:20
おおお
出来ました。ありがとうございます!
649:デフォルトの名無しさん
08/08/17 03:27:01
NI社のUSB-6008という製品を使ったことのある方はいますか?
これを使用してみたいのですが、最初にどこから手をつけていいのかわからなくって・・・。
とりあえず、DLLのインポートライブラリを作成してみようと、nidaq32.dllを使用してみたのですが、
Error nidaq32.dll: unknown file type
と、なってしまいます。
NI-DAQのバージョンは7.2
XPでBuilder6.0を使用しています。
650:デフォルトの名無しさん
08/08/18 00:43:53
それインポートライブラリが悪いか、nidaq32.dll にパスが通ってない、とか。
651:デフォルトの名無しさん
08/08/18 01:24:22
nidaq32.dllがあるフォルダで、コマンドプロンプトから実行したのですが・・・
これってIMPLIBの使い方間違ってます?
652:デフォルトの名無しさん
08/08/18 20:02:18
#include <stdio.h>
#include <System.hpp>
#pragma link "vcl.lib"
#pragma link "rtl.lib"
int main()
{
wchar_t col_caption[256];
int width;
int r0 = swscanf(L"知名性 (20)", L"%s (%d)", col_caption, &width);
printf("> %s : %d (%d)", AnsiString(col_caption).c_str(), width, r0);
}
上のコードの実行結果が期待する結果の
> 知名性 : 20 (2)
にならずに
> 知 : 4 (1)
となるのですがRTLのバグのほかになにか原因はありますでしょうか
環境はBCB6Pro#4、Win2kです。
653:デフォルトの名無しさん
08/08/19 09:01:04
setlocale
654:デフォルトの名無しさん
08/08/19 09:09:17
>setlocale
これって何のライブラリになるんでしょ?C++標準?VCL?
それを知らないと、#includeできないので。
あと、getlocaleってのもあるんでしょうか?
655:デフォルトの名無しさん
08/08/19 09:18:02
ついでですが、
localelist
みたいな1式も取れるんでしょうか?
656:デフォルトの名無しさん
08/08/19 09:35:41
setlocaleはswscanfには関係ないと思うんですの。VC2005だとちゃんと動くし。
BCBでも他の文字列ではちゃんと動いてるし。
657:デフォルトの名無しさん
08/08/19 09:50:06
確かにBCBヘルプに
>Standard C++ Library: Class Reference
>locale
ってのがありますね。
これはクラスだからいろいろメソッド使えるかも。
でも、これで切り替えても、
AnsiToUtf8/Utf8ToAnsiのロケールとは無関係なんかなぁ。
あ〜、テストプログラム作れば良いんだが、通勤時の暑さのせいでしんどい。
658:デフォルトの名無しさん
08/08/19 23:14:53
>>650
インポートライブラリが悪いって、どのような現象があるのでしょうか?
BuilderのバージョンはBuild10.166ですが・・・
659: ◆jButlJVlzY
08/08/19 23:16:05
#include <iostream>
using namespace std;
int op;
char a,b,c,d,f;
int main(){
cout>>"物語の始まり">>endl;
/*
char a ="起";
char b ="承";
char c ="転";
char d ="結";
char f ="おまけ";
*/
cout << "1目次1ページ目 目次2ページ 目次3ページ 目次4ページ 目次5ペーじ おまけ" << flush;
cin >> op;
{
660:デフォルトの名無しさん
08/08/21 02:12:21
すいません、どなたか>>658についてわからないでしょうか。
正解でなくても、何か参考になるようなことでもいいので意見を下さい。
よろしくお願いします。
661:デフォルトの名無しさん
08/08/21 07:47:42
implib nidaq32.dll nidaq32.lib と引数の順番を間違って実行して、nidaq32.dllが壊れて、その後
implib nidaq32.lib nidaq32.dll と順番を直したけどnidaq32.dllは壊れてるからエラー、とか?
一応本家にbcc用のインポートライブラリがあるみたいだけど。 ↓の一番下のzip
URLリンク(digital.ni.com)
662:デフォルトの名無しさん
08/08/21 20:09:54
>>649
NIDAQmxのDLLはnicaiu.dll見たいだよ?
NIDAQmxをインストールするとc:\WINDOWS\system32あたりにnicaiu.dllがあるはずだから
>implib nicaiu nicaiu.dll
でnicaiu.libを作ってリンクしてみたら?
663:デフォルトの名無しさん
08/08/22 02:33:44
>>661
すいません、一度壊してました・・・orz
>>662
NIDAQではなく、NIDAQmxを使うのですか!!
ありがとうございます、やってみます。
664:デフォルトの名無しさん
08/08/27 17:23:50
メインフォームのForm1と、 処理中ダイアログ用のForm2があって、 次のように使っています。
void __fastcall TForm1::ShowDialog()
{
Form2->Show();
for (i=0;i<100;i++) {... ;ProgressBar1->Position=i; ...}
Form2->Hide();
}
このForm2が前面に表示されている最中は、 Form1上にあるボタンをクリックしても
OnClickイベントが発生しないようにしたい(無視したい)のですが、 どうしたらいいのでしょうか?
Form2表示中にForm1上のボタンをクリックしたことによる処理が、 Form2が隠れた後に
実行されて困っています。
よろしくお願いします。
665:デフォルトの名無しさん
08/08/27 19:58:48
ShowModalでもしておけば?
666:664
08/08/27 20:39:55
>>665
ありがとうございます
667:デフォルトの名無しさん
08/08/28 03:05:24
8点ほど計測して、下の脳波測定のように境目をボカしたいのですが、何か良い方法はありますでしょうか?
URLリンク(www.speedreading.co.jp)
8つの円を描き、全体をぼかすように前後左右の平均を取るように処理してみたところ、何度もやるとものすごく時間がかかるので・・・。
ぼかし処理は下のものを使用しました。
URLリンク(gimite.net)
668:デフォルトの名無しさん
08/08/29 22:15:29
全然ダウンロードできないのですが、今日だけの現象ですか?
URLリンク(update.codegear.com)
ここに何度登録したことか。。。。
669:デフォルトの名無しさん
08/08/29 22:34:00
URLリンク(now.eloqua.com)
サーバーが見つかりません
670:デフォルトの名無しさん
08/08/31 00:08:20
そうだね
671:デフォルトの名無しさん
08/09/06 08:25:00
TurboC++ Professionalは、もうどこにも売ってないのですか?
672:デフォルトの名無しさん
08/09/06 10:46:04
初心者質問すいません
英単語の文字数を数えるにはどうすればいいですか?
673:デフォルトの名無しさん
08/09/06 10:52:49
AnsiString::Length()
674:デフォルトの名無しさん
08/09/06 10:57:35
C++とC#は別物ですか?
675:デフォルトの名無しさん
08/09/06 11:04:33
別物
676:デフォルトの名無しさん
08/09/06 11:15:14
>>675
ありがとうございました。ここではC++という文字をよくみるのに本屋ではC#をよくみたので一緒かなと思いました
ありがとうございました
677:デフォルトの名無しさん
08/09/06 17:27:47
実は # は
++
++
だったんだよ!
678:デフォルトの名無しさん
08/09/07 01:24:48
>>677
C++が一つ増えるなら、
C#は半分だけ増えるっていうイメージなんだけど。
それだと、2つも増えてるな。
679:デフォルトの名無しさん
08/09/07 02:35:29
>>677
その発想は無かったわ
680:デフォルトの名無しさん
08/09/07 17:30:34
エクスプローラの「表示」→「縮小版」みたいに、複数の画像を
サムネイル表示したいと思っています。
URLリンク(www2.ttcn.ne.jp)
を参考にDrawGridを使って実現しようかと思っていたのですが、
DrawGridコンポーネント1個に対して, 1つの画像しか表示できないんでしょうか?
681:デフォルトの名無しさん
08/09/07 23:31:12
サムネイルはListView使っとけ
682:デフォルトの名無しさん
08/09/08 21:57:33
Buliderっていう名前が明らかにマッチョ男性専用ソフトですっていってるようで怖い。
アメリカ人は本当にマッチョが好きだよな。サンフランシスコ。
683:デフォルトの名無しさん
08/09/09 04:41:14
>>681
そうします。ありがとうございます
684:680
08/09/09 07:34:14
追加の質問ですみません。
ListViewでサムネイル表示を試してみようと、
下の(1)〜(6)の手順でやってみたのですが、ビルド中に固まります。
アイコン画像サイズ256×256を越えているせいみたいなのですが,
表示されるサムネイルの画像サイズを320×240で表示するには、どうしたらいいんでしょうか?
アドバイスよろしくお願いします。
-----
(1)Form1にImageList1を貼り付ける
(2)オブジェクトインスペクタからImageList1のプロパティをWidth=320;Heiht=240;に変更
(3)ImageList1ダブルクリックして, 「追加」押して320×240の画像1枚を選択して「OK」押す
(4)Form1にListView1を貼り付ける
(5)オブジェクトインスペクタからListView1のLargeImagesプロパティでImageList1を指定
(6)オブジェクトインスペクタからListView1のItemsプロパティで「新規作成」押して「キャプション」にテストと入力して「OK」押す
685:デフォルトの名無しさん
08/09/22 10:04:17
メニュー項目を設定する
TMenuItemのCaptionにて
開く(&O)...
と設定されますけど、
このピリオド3個の意味を教えてください。
686:デフォルトの名無しさん
08/09/22 12:43:51
押すと他のウィンドウが開くって意味がほとんどじゃ?
687:デフォルトの名無しさん
08/09/22 20:03:06
>>685
ピリオドがないのは、処理がすぐ終わるけど
ピリオドがあるのは、ダイアログが出るでしょ。
それだよ。
688:デフォルトの名無しさん
08/09/22 23:25:23
>>686 >>687
れすありがとうございます。
確かに...なのは、ダイアログが開く系ですね。
(& みたいな特別な機能がある訳ではなく
WindowsのUIの作法みたいなものなのですね。
とても参考になりすた。
689:デフォルトの名無しさん
08/09/28 23:08:48
質問です。
TFontのStyleがSet という特別な型だったのですが
設定は、Font->Style << fsBold のようにすれば良いのはヘルプに記載があったのですが
FontにfsBoldが設定されているかを調べる方法がわかりません。
どうすればいいのでしょうか。
690:デフォルトの名無しさん
08/09/28 23:34:45
if ( Font->Style.Contains(fsBold) )
691:デフォルトの名無しさん
08/09/28 23:45:56
>>690
できましたーーー。超ありがとうございます。
692:デフォルトの名無しさん
08/09/29 23:49:18
いろんなほかのプログラムのボタンを押すプログラムを作るにはどうすればいいのでしょう?
具体的には mplayerの再生ボタンや巻き戻しボタンを押したり、mediaplayerの再生ボタンを押したり
その他新しいプログラムの再生ボタンを簡単に登録して押せるようなそんなプログラムを
くみたいのですが。
693:デフォルトの名無しさん
08/09/30 00:17:51
ウィンドウハンドル持ってるコントロールならBN_CLICKEDをPostすればいいじゃない。
メニューバーから操作できる機能なら、コマンドIDをメニューリソース見るか、SPY++やWinspectorでコマンドID調べてWM_COMMANDでPostすればいい。
どっちもだめならSendInputでがんばるしかない。
694:デフォルトの名無しさん
08/09/30 00:18:33
簡単に説明すると、ウインドウを列挙して、中の再生ボタンのハンドルを取る。
ハンドルが取れれば、APIでごにょごにょできるでしょ。
あとはがんばれ。
695:デフォルトの名無しさん
08/09/30 10:50:39
あぁ!そっか、難しく考えすぎてた。
ありがとうございます。
696:デフォルトの名無しさん
08/09/30 20:54:22
質問です。
リストボックスにD&Dでリストボックスにファイルパスを表示する
プログラムをどうすれば言いか教えていただけないでしょうか?
697:デフォルトの名無しさん
08/09/30 22:04:17
をぃ、日本語が不自由な奴よ。
マルチポストはルール違反だぜよ。
698:デフォルトの名無しさん
08/09/30 22:44:16
>696
"C++Builder" ファイル ドラッグアンドドロップ
でぐぐれ
699:デフォルトの名無しさん
08/10/02 00:15:22
test
700:デフォルトの名無しさん
08/10/02 00:19:19
ごめんなさい、プロバイダが規制くらってたのでtest書き込みしてしまいました。
質問なんですが、フォームを使ってアプリを作っており、
デバッグで配列の中身や変数を見たく、printfなんかでコンソールに表示させたいのですが
何か方法はありますか?
インスペクタ?みたいなのはどうも使いにくくて・・・
ちなみに、C++Builder6を使ってます
701:デフォルトの名無しさん
08/10/02 00:32:28
これでどうでしょ?
URLリンク(msdn.microsoft.com)
でもIDEのデバッガ機能をちゃんと勉強して使ったほうが楽だと思うけどね。
702:デフォルトの名無しさん
08/10/02 01:08:53
>>700
AllocConsole()でコンソールが開きます。コンソールのハンドルをGetStdHandle( STD_OUTPUT_HANDLE )で取得したら
SetConsoleTextAttribute()とWriteConsole()で好きな文章を色つきで出力できます。
printf() っぽく使うならこんな感じ
#include <stdio.h>
int __stdcall con_printf( const CHAR* Format, ... )
{
const int nLengthMax = 1024;
int nLength = 0;
HANDLE hConsole = ::GetStdHandle( STD_OUTPUT_HANDLE );
if( hConsole != INVALID_HANDLE_VALUE ){
CHAR Message[ nLengthMax ];
va_list List;
va_start( List, Format );
nLength = vsnprintf( Message, nLengthMax - 1, Format, List );
va_end( List );
DWORD dwLengthWritten;
::WriteConsole( hConsole, Message, (DWORD)nLength, &dwLengthWritten, NULL );
}
return( nLength );
}
IDEが入ってない環境とかで使えるよ。
703:デフォルトの名無しさん
08/10/02 02:04:16
_open_osfhandle()とかdup2()とかを組み合わせれば
普通にそのままのprintfが使えるようになるんじゃないかね。
知らないけど。
704:デフォルトの名無しさん
08/10/02 02:44:28
IDEでデバッグしてるならOutputDebugString使えばイベントウィンドウに出力されるぞ
705:デフォルトの名無しさん
08/10/02 10:34:03
複数のフォームを持ったアプリを作っています。
メインフォームの初期化ルーチン(FormCreateとか)から他のフォームの初期化ルーチンを呼び出したいが、
それがまだ生成されていないのでエラーになるというケースが多くて困っています。
全てのフォームが生成された後で一括して初期化を行いたいという時にはどうすればよいのでしょうか?
どなたか教えて下さい。
706:デフォルトの名無しさん
08/10/02 12:02:22
メインフォームのコンストラクタで他のフォームnewすれば?
707:デフォルトの名無しさん
08/10/02 12:46:22
>>700
解決したかも知れないけど、
TMemo 貼って Add で俺はやってる。
708:デフォルトの名無しさん
08/10/02 17:46:19
コンパイルした時に作成される実行ファイルの名前を、プログラム側で変更することってできます?
#ifdefで二種類作るので、間違えないようにしたいのですが・・・
709:700
08/10/02 18:59:26
なるほど、色んなやり方があるんですね。
しかしこのスレ非常にやさしいw
ありがとうございました〜、色々とやってみて合うもの見つけてみます
710:デフォルトの名無しさん
08/10/02 19:43:14
>>708
#pragma optionでできないものリストに「-efilename」が書かれてるから無理
objファイルならできるけど。
711:デフォルトの名無しさん
08/10/02 19:56:58
>>710
無理なんですか、了解です。
ありがとうございました。
712:デフォルトの名無しさん
08/10/02 20:00:24
>>711
makefileで分けるといい
713:705
08/10/03 17:03:11
>>706 どうもありがとうございます。やってみます。
714:デフォルトの名無しさん
08/10/17 00:02:21
TwebBrowserで表示したページのセレクトボックスを変更したりボタンを押したりしたいのですが、参考になるページが見つからず途方に暮れています(他の言語は多少あるのですが・・・)
他の言語のを真似して
WebBrowser1->Document->All->GetElementsByName("hoge")[0]->selectedindex = 0;
※hogeは表示するページのソースをみて名前を調べました
などとしたのですが、「AllはIdispatchのメンバーではない」とエラーが出ます・・・
どんな書き方をすればよいのでしょうか
715:デフォルトの名無しさん
08/10/17 04:28:58
たぶん中身をIHTMDocument2とかにして触るんじゃないかな。
昔触ったのを見たら
IHTMLDocument2Ptr doc;
doc = browser->Document;
IHTMLElementPtr body = doc->body;
とかやってた。
IHTMLDocument2Ptrとして使うには、MSHTMLかなんかをimportだかする必要があったと思うけど。
716:デフォルトの名無しさん
08/10/19 04:31:46
Imageに貼り付けた四角の画像を台形とかに変形させることはできますか?
717:デフォルトの名無しさん
08/10/20 04:18:55
できる
718:デフォルトの名無しさん
08/10/20 16:48:53
できるよ
719:デフォルトの名無しさん
08/10/23 15:03:10
AnsiStringsの中に何も入っていない場合、c_str()で比較してチェックすることはできますか?
if(c_str()=="")やif(c_str()==NULL)と書いても素通りしますよね。
Lengthが0かどうかでチェックをしているので問題は無いのですが、気になったのでよろしくお願いします。
720:デフォルトの名無しさん
08/10/23 16:20:53
IsEmpty()
721:デフォルトの名無しさん
08/10/23 17:14:13
素通りっつーのはよく分からんが、そもそも「if(c_str()=="")やif(c_str()==NULL)」って書き方おかしくね?
c_str使うんならstrcmpとか使おうぜ。
AnsiStringとchar型文字列の比較なら普通に==で良いとも思うけどな。
722:デフォルトの名無しさん
08/10/23 17:56:44
>>720
専用の関数があったんですね、ありがとうございます。
>>721
素通りというのは""やNULLで比較しても、何か文字が入っているような動きをしていたものですから。
まだAnsiStringを理解してないかもです。
strcmpも使ってみたのですが、動きは同じだったので・・・。
ところで、フォルダ名をチェックするのに最後に\がついているかを見て、無かったら\を付けたいのですが、
これってどうやればいいんでしょう?
AnsiLastCharで拾おうとしてのですが、うまくいかないので、よろしくお願いします。
723:デフォルトの名無しさん
08/10/23 18:11:14
IncludeTrailingBackslash()
724:デフォルトの名無しさん
08/10/23 19:05:07
>>723
処理してくれる関数があったんですね。
ありがとうございます。
725:デフォルトの名無しさん
08/10/23 20:18:52
IncludeTrailingPathDelimiterがあればそちらを使うのが望ましい。
726:デフォルトの名無しさん
08/10/25 15:47:30
Imageを2枚重ねて、下に写真、上に色を塗るようにしています。
上のImageに半透明や透明色を塗ることってできるのでしょうか?
半透明で調べてもフォームやボタンはあるのですが・・・。
すいませんが、どなたか方法を教えて頂けないでしょうか。
727:デフォルトの名無しさん
08/10/25 16:24:39
実際には透明色や半透明色ってのはないからなぁ。アルファブレンド?
728:デフォルトの名無しさん
08/10/25 19:16:29
計算した数字をEdit1,Edit2,Edit3に出したのですが、
それをMemo1にすべて書き出しExcelで読み込んだときにA欄B欄C欄と分けて出したいのですが
いったいどのようにすればいいんでしょうか?
Edit1->Text=a;
Edit2->Text=b;
Edit3->Text=c;
Memo1->Lines->Strings[0]=a;
Memo1->Lines->Strings[1]=b;
Memo1->Lines->Strings[2]=c;
今こんな感じで書いてるのですが全然わかりません・・
どなたかよろしければアドバイスお願いします。
729:デフォルトの名無しさん
08/10/26 13:10:23
コンマ区切りにすればいいってことじゃなくて?
730:デフォルトの名無しさん
08/10/26 13:45:41
>>729
あ、コンマ区切りで数列を出せばExcelでは枠別に表示されるんですね
ありがとうございます!
よろしければどなたかコンマ区切りでEdit1から3までの数字を一つのMemo1に出す
方法を教えていただけないでしょうか
731:デフォルトの名無しさん
08/10/26 14:20:40
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(AnsiString().sprintf("%s,%s,%s", Edit1->Text, Edit2->Text, Edit3->Text));
}
732:デフォルトの名無しさん
08/10/26 15:03:38
BCBで使えるRS-232Cコンポーネントで安定しているのってありますでしょうか?
現在はHmCommを使用しているのですが、USB-232C変換器が物によって正常に通信できたりタイミングがずれたりするので、
別の物を試してみたいのですが・・・良い物がありましたら紹介してください。
よろしくお願いします。
733:デフォルトの名無しさん
08/10/26 18:23:25
TMemoryStream* ms=new TMemoryStream();
char *mTop=(char*)(ms->Memory);
char *mEnd=pTop+(ms->Size);
と記述すると
W8072 問題のあるポインタ演算
という警告が出ます。
警告の出ない正しい記述方法を教えてください。
734:デフォルトの名無しさん
08/10/26 22:51:08
ms->Sizeの型が__int64だからintにキャストすれば出ないよ
735:デフォルトの名無しさん
08/10/26 23:19:32
>>732
URLリンク(www.geocities.jp)
これ使ってごらん。
コンポーネントじゃないけど、ヘッダファイルだけで動作する。
初期化に2行、出し入れに数行、後始末に1行ぐらい書けばいいので
PICとやり取りするのに簡単だから使ってる。
でも、USBのシリアル変換機はもともと不安定だからなぁ・・・。
736:デフォルトの名無しさん
08/10/27 00:15:44
>>734
解決しました。ありがとうございます。
737:732
08/10/27 00:45:44
>>735
ありがとうございます。
シンプルで良さそうですね。
ちょっと使ってみます。
ノートPCが前提なので、USBのシリアル変換機を使用して安定してないといけないんです・・・。
738:デフォルトの名無しさん
08/10/27 15:18:20
A, B, C, D, E, 00:00, f, g, h, i, j, k, l,
A1, B1,C1,D1,E1, 00:00, f1, g1, h1, i1, j1, k1, l1,
A2, B2,C2,D2,E2, 00:00, f2, g2, h2, i2, j2, k2, l2,
というコンマ区切りの何百行のデータがあり、j(1.2.3・・・)の部分だけ読み込みたいのですが
どういう風にやればいいですか。よろしくお願いします。
739:デフォルトの名無しさん
08/10/27 15:37:37
>>726
写真ともう一枚の32bppなTBitmap用意、アルファブレンドしてTImageに転送するしかないと思う。
アルファチャンネル扱えるTBitmap継承クラスも何種類か公開されてるから難しい物じゃない。
写真じゃないほうにペイントするとかだったら、TImageのイベントで取ったストロークの情報でペイント描画用のTBitmapに描けばいいだけだし。
>>738
ただのCSVファイルじゃん(・ε・)
740:738
08/10/27 15:48:54
少し説明不足でしたが、テキストで読み込んでMemoに表示させたいのです。
741:デフォルトの名無しさん
08/10/27 16:06:44
>>738
要するに 00:00 を取り除くって事?
742:738
08/10/27 16:10:52
>>741
j(1.2.3・・・)の部分だけをmemoに表示させたいのです。
743:デフォルトの名無しさん
08/10/27 16:13:33
>>j(1.2.3・・・) の意味がわからん
744:デフォルトの名無しさん
08/10/27 16:14:48
Memoに j1, j2, j3 とかって表示させたいの?
745:デフォルトの名無しさん
08/10/27 16:19:37
だからcsvファイル扱うクラス書いて、各行から11列目の値をTMemoに突っ込めばいいだけじゃ‥‥
746:デフォルトの名無しさん
08/10/27 16:24:14
こういうの見るとBCB2009でregex使いたくなるな
747:738
08/10/27 16:33:42
はい。
Memo1
j
j1
j2
j3
・
・
な感じで。
748:デフォルトの名無しさん
08/10/27 16:40:05
>>738
そんなん単に先頭からカンマを10こ読み飛ばせばいいだけじゃん。
strXXX系の関数使うまでもなく。
とみんな思うんだろうけど、暇だったのでVCLのヘルプみてみた。
TStrings::DelimiterとTStrings::DelimitedTextなんてものがあるのな。
TStringList* Data = new TStringList;
Data->Delimiter = ',';
Data->DelimitedText = "aa,bb,cc,dd,ee";
Caption = Data->Strings[3]; // ddが表示される
ただしBCB5以前は無理かもしれない。あしからず。
749:デフォルトの名無しさん
08/10/27 16:49:38
こんなんとか。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::ifstream ifs("File1.txt");
std::string str, s2;
if (!ifs) {
Memo1->Lines->Add("File1 not found.");
}
while (std::getline(ifs, str)) {
std::string::size_type pos = str.find('j'), pos2;
if (pos != std::string::npos) {
s2 = "j";
if (pos < str.size() && (pos2 = str.find(',', pos)) != std::string::npos) {
s2 += str.substr(pos + 1, pos2 - pos - 1);
}
Memo1->Lines->Add(AnsiString(s2.c_str()));
}
}
}
750:デフォルトの名無しさん
08/10/27 16:58:54
くだスレが役に立ってry
751:デフォルトの名無しさん
08/10/27 17:36:22
ないってことか
752:デフォルトの名無しさん
08/10/28 14:44:59
すいません、プログラム上でスクロールバーが動いたことにするには、どのようにすればよいのでしょうか?
Positionの値を変えるのでは無く、マウスで操作した時の動きをさせたいのですが・・・。
753:デフォルトの名無しさん
08/10/28 15:28:27
イベント呼べばいいんでないの?
754:デフォルトの名無しさん
08/10/28 15:58:04
イベントは、呼ばれるものじゃねえのか。
イベントはさすがに呼べねえだろ。
755:デフォルトの名無しさん
08/10/28 16:56:44
自分でOnChange呼べつったんだ馬鹿かお前
756:デフォルトの名無しさん
08/10/28 17:21:13
>>755
Are you a big baka ?
スクロールした結果、OnChange()が発生するのであって
OnChange()を自前で呼んでも無意味じゃん。
757:デフォルトの名無しさん
08/10/28 17:25:37
もも・・・
しかして>>755は
OnChange()を呼べばスクロールが発生するとでも思っているのかぁ
プププ
758:755
08/10/28 19:00:09
私のために争うのはもうやめてっ
プログラム上からイベントを発生させる方法ってあります?
759:デフォルトの名無しさん
08/10/28 19:06:50
自分宛にメッセージ投げればいいと思うよ
760:デフォルトの名無しさん
08/10/28 23:13:14
>>755
嘘はいかんな
761:752
08/10/29 02:51:14
名前間違えた、こっちだ
どうやってやればいいんでしょう・・・?
762:デフォルトの名無しさん
08/11/01 01:22:01
標準のボタンの背景や形を変えることってできますか?
BitBtnは画像を配置すると文字が消えてしまうので、他に何か方法は無いでしょうか?
よろしくお願いします。
763:デフォルトの名無しさん
08/11/01 15:51:47
>>762
起動時bitbtnにするDIBにフォントを使って字を書いてしまえばいいじゃないかw
元の画像は普通のボタンから抜くなりなんなりすればいいジャマイカ
そしてそれをフリーで後悔すれば….
と思う前に誰かすでに作ってないかとかおもってググ…
764:デフォルトの名無しさん
08/11/01 15:52:23
同じフォルダにあるテキストデータA001〜A020を同時に読み込んで
その中の計算を行いそれを50個またテキストデータとして保存したいのですが
テキストデータを同時に読む込むプログラムとそしてそれを同時に書き出す方法が
どうしてもわかりません。よければアドバイスお願いします。
765:デフォルトの名無しさん
08/11/01 17:32:46
いちどきに読み込むことや書き出すことはできてもどうじに読んだり書き出したりするのは非常に困難です
766:デフォルトの名無しさん
08/11/01 18:48:32
>>765
すみません、説明不足だったようです。
同時にではなくたとえばA001〜020で読み込む場合にfor文などで回して
自動ですべてを順に読み込み書き出すようにしたいのです
767:デフォルトの名無しさん
08/11/01 20:10:09
>>766
for文で回して順に読み込み書き出しすればいいと思うよ
と思ったが「同じフォルダにあるテキストデータ」ってファイルのこと?
ならファイルを順繰りに読んで希望のファイルだけ読み込み書き出しすれば良いんじゃないかね
768:デフォルトの名無しさん
08/11/01 20:51:35
TStringList使っとけ
769:デフォルトの名無しさん
08/11/01 23:37:20
具体的に何をする方法がわからんのか
そのへんが全然わからんから
エスパーじゃないから
答えようがねえなぁ
文章から類推すると、何もかもまったくわからんようにしか見えんが。
770:デフォルトの名無しさん
08/11/02 13:55:50
教えてください。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
progressBar1->Maximum = shikou_kaisu; /* 最大値 */
progressBar1->Visible = true;
label8->Text = "処理中";
label8->ForeColor = System::Drawing::Color::Red;
for(i=0; i<shikou_kaisu; i++){
rnd(kibou_kosu); //自作関数呼び出し
Sleep(1);
}
};
このようにshikou_kaisuには10000を入れていまして、1万回のループに入る前に
プログレスバーを出し、label8の文字色を赤にし、処理中と書き換えているのですが
どちらとも(プログレスバーもlabel書き換えも)for文が終了したあとに処理されてしまいます。
なぜでしょうか?
771:デフォルトの名無しさん
08/11/02 14:03:05
連投すみません。
あともう一つ教えてください。
出力ウィンドウに、テスト的に変数の値などを表示させたいのですが、
Console::WriteLine("aaa");
などとしてもまったく表示されません。何か方法はありますでしょうか?
よろしくお願いします。
772:デフォルトの名無しさん
08/11/02 14:27:08
>>770 誤爆?
ここは、
くだすれC++Builder(超初心者用)その3
773:デフォルトの名無しさん
08/11/02 14:57:22
>>772
すみません。間違えました><
774:デフォルトの名無しさん
08/11/03 18:05:44
読み込みと保存について質問なんですが
バイナリ形式のファイル読み込んで、その内容を同じファイル名でテキスト形式に置き換えて保存したいのですが
それを手動保存するのではなく自動で同じファイルネームでそのフォルダ内に生成されるプログラムを作りたいのですがどのようにすればよいのでしょうか
775:デフォルトの名無しさん
08/11/03 18:49:03
>>774
スレ違い
C/C++の宿題を片付けます 117代目
スレリンク(tech板)
こっちだな
776:デフォルトの名無しさん
08/11/03 18:55:33
>>775
すいません、これをSaveDialogやOpenDialogなどを用いてc++builderで
実行しなくてはいけないのですが読み込んだファイルを同じ名前のテキスト形式で自動生成する保存の方法を教えていただけないでしょうか
777:デフォルトの名無しさん
08/11/03 19:46:17
>>776
君の質問に回答できる奴はエスパー
778:デフォルトの名無しさん
08/11/03 20:06:21
そんな事できません
バイナリの中身が構造体だったり、浮動小数点と整数が
交互に書かれていたりする時どうやって判別するのですか?
コンピュータから見るとどちらもただの0と1の羅列ですよ?
779:デフォルトの名無しさん
08/11/04 04:10:55
00010111000 とかをテキストで保存するんだろ。
780:デフォルトの名無しさん
08/11/04 12:41:53
それはファイルダンプじゃん。
781:デフォルトの名無しさん
08/11/04 13:44:41
失礼します。
OpenDialogを使用して、指定したフォルダからファイルを読み込みたいのですが、
最初の動作ではInitialDirに指定フォルダ名が入っているのにも関わらず、デフォルトのフォルダが表示されてしまいます。
再起動しても変わりません。
でも、他の動作で指定フォルダを開くと、最初のOpenDialogも指定フォルダを開けるようになります。
フォルダ名を指定した後、確定させる方法があるのでしょうか?
よろしくお願いします。
if(FolderTXT.IsEmpty()){ // フォルダ指定無し
OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName)+"DATA";
}else{
OpenDialog1->InitialDir = FolderTXT+"DATA";
}
// フォルダオープン
if(OpenDialog1->Execute()){
if(FileExists(OpenDialog1->FileName)){
fn=OpenDialog1->FileName;
}
}
※FolderTXTにフォルダ名が入っています。
782:デフォルトの名無しさん
08/11/04 14:14:42
Execute()する前に
DirectoryExists(OpenDialog1->InitialDir)
してみい
falseが返ってくるからさ
783:デフォルトの名無しさん
08/11/04 14:41:37
そうじゃなくて
FileNameにフルパスでいれときゃいい
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4359日前に更新/254 KB
担当:undef