くだすれC++Builder(超初心者用)その5
レス数が1000を超えています。これ以上書き込みはできません。
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
■C++Builder XE2 - エンバカデロ・テクノロジーズ
http://www.embarcadero.com/jp/products/cbuilder
<過去スレ>
くだすれC++Builder(超初心者用)その4
http://toro.2ch.net/test/read.cgi/tech/1256256376/
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/
<兄弟スレ>
くだすれDelphi(超初心者用)その54
http://toro.2ch.net/test/read.cgi/tech/1325028195/ OPENARRAYマクロ使いにくいな
カッコを二重にしないといけない ネイティブアプリ作成では一番使いやすいと思うが、なぜにこんなにマイナーなの?
VC++のほうが人気がある理由がわからん VCのほうがつかいやすくね?
MFCはソース見れば大体わかるからな
パスカレなんて嘔吐 >>4
VCLの設計が古いからだよ
FMも怪しいし
C#のためにヘジタンをM$に引きぬかれてからちっとも進歩してない ∧ . -‐. : . : . : . : .  ̄`丶/>ヘ',ー.、
. __ //: . : . : . : . : . : . : . : . : . : \: . }i: : :\
}l>/: . : . : . : . : . : . : . : . : . : . : . : :.\}i: . : . :\__
/}レ': : . : . : . : . : . : . : . : . : .\: . ヽ: . : . :.ヽ: . : . : . ヽ`
/: :/: . : . : . : . :l: :八: . : . : : \: : : : : '. : . : . :l: . : . : l: : l
. /: :/: . : . : . : . :/l: :| \: :\: : : \: : . :l: . : :...:|: . : . : l: . l
/: ://: : . : . :.|: / .j: :| \: ヽ\:ヽ\: :|: . : |: :|: : |: . :l: : |
//://|: : :l: : . i斗'^ ,ィf弌ぅ 、ヽ|: . : l: :|: : |: . :|\|
//:ノ /|: :/}: : : |: l ,ィf゚う ト::)゚ィリヽ|: . : |:/: : :|: . :|
}: : /|:|:/: |: : ∧:i/ん:::ハ 弋c少' |: . : |}: : :.|: . :
|: / .|:|': : |: :/: :i 弋cソ 、、、、、. |: . :八: . :八: .|
|/ l: : : :|V: : ハ 、、、、 ′ l: ./:∧: ./ ヽ
八: :.∧: |: :人 r 、_ 、 ィ .ノ:/:/ }:./||
∨ V}: : |: /i>}/ ,へ、 イ j:V/:/ / C++Builderなんて、
八: :|/__ ! / ハ _.斗‐{ 使ってる人いるのかなぁ…?
∧! _| ' /´ 》──--、
_/ |:::_} .|ー─--< |
/___ i }∧ ノ:::::::::::::::::::/ / |
V / }. イ l\::::::::::::/ / :|
rヘ xヘ ∨ | |:| \/_/ 人
/_/ '、 _ヽ | |:| ./ - ─ - 〉
. / ヽ/// j/ 〈 / -‐ / C#に比べると起動が速いだけで他はあまりメリットないな >>10
あとEXEのサイズが全然違う
開発環境が入っていればDLLは必要ないけど配布版はライブラリリンクしないと
C#は全てダイナミックリンクだから >>12
ねえ悔しい?
MSILは64bit環境では64bitにコンパイルされて動くんだよ XE2 から clang の改変版に切り替わったから、XE3 で LLVM コードを出せるようになって問題解決 TServiceを使用してサービスを作ったのですが、
exeをリネームして複数サービスを登録したい場合どうすればよいのでしょうか?
TServiceのNameをファイルなどで動的に変えればインストールは成功したのですが、
肝心のサービスが使用できません。Nameを固定にすると複数のサービスをインストールできません・・・
よろしくお願いいたします。 さて、まもなくC++Builderも64bit版になりますよぉ〜
>C++Builderも64bit版
10年遅れて、自社技術で対応できなくて...
clang 自分でビルドするのとなにが違う?
win用で軽くてサイズも小さいcのコンパイラって何がありますか? Digital Mars Compiler Version 8.42n
dm852c.zip 3,009KB
LSIC試食版(MS-DOS)
lsic330c.lzh 401KB
Borland C++ 5.5.1 for Win32
freecommandlinetools2.exe 8672KB TPopupMenuのMenuItemを動的に作成しているのですが
PopupMenu->Items->Clear( );
for( int i = 0; i < Cnt; i ++ ){
TMenuItem *mi = new TMenuItem(this);
mi->Caption = buff[i];
mi->OnClick = MenuItemClick;
PopupMenu->Items->Add( mi );
}
毎回Clearして作り直しているのにメニューが最後に表示したCaptionの最大幅になってしまいます
これそのときに作成したCaptionの幅にするにはどうしたらいいですか? void __fastcall TForm1::MenuItemClick(TObject *Sender)
{
TControl* control;
TMenuItem* mi = dynamic_cast<TMenuItem*>(Sender);
control = dynamic_cast<TControl*>(FindComponent(Components[mi->Tag]->Name));
control->Enabled = !control->Enabled;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Cnt = PopupMenu1->Items->Count;
char *buff[] = {"Test1", "Test2", "Test3"};
PopupMenu1->Items->Clear();
for (int i = 0; i < Cnt; i++) {
TMenuItem* mi = new TMenuItem(this);
mi->Caption = buff[i];
mi->OnClick = MenuItemClick;
PopupMenu1->Items->Add(mi);
こんな感じでしょ
ちゃんと切り詰められて表示されるよ
}
} >>27
char *buff[] = {"Test1", "Test2", "Test3"};
これ固定になってますが、ここの長さが可変なんですよ
たとえば
char *buff[] = {"Test1ああああああああああああああああああああ", "Test2", "Test3"};
というメニューを作成して次に
char *buff[] = {"Test1", "Test2", "Test3"};
これを作ると最初に作ったメニューの幅になりません?
ちなみにC++Builder2010を使ってます
>>28
こういう事ですか?Button1を押してからButton2を押すとちゃんと切り詰められます
XE2です
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Cnt = PopupMenu1->Items->Count;
char *buff[] = {"Test1111111111111111111", "Test2", "Test3"};
PopupMenu1->Items->Clear();
for (int i = 0; i < Cnt; i++) {
TMenuItem* mi = new TMenuItem(this);
mi->Caption = buff[i];
mi->OnClick = MenuItemClick;
PopupMenu1->Items->Add(mi);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int Cnt = PopupMenu1->Items->Count;
char *buff[] = {"Test1", "Test2", "Test3"};
PopupMenu1->Items->Clear();
for (int i = 0; i < Cnt; i++) {
TMenuItem* mi = new TMenuItem(this);
mi->Caption = buff[i];
mi->OnClick = MenuItemClick;
PopupMenu1->Items->Add(mi);
}
} >>29
ありがとうございます、。
まさにそういうことなのですが・・・
2010が悪いのか自分のコードが悪いのかがわからないので
ちょっとこっちも同じコードで試してみます。
>>29
まったく同じコードを試してみたした。
やはりダメでした。
まずButton2を押すとメニュー幅は普通
次にButton1を押すと"Test1111111111111111111"の文だけメニューが広がる(これも普通)
次にButton2を押すとButton1で作成されたメニュー幅のままになっています・・・
うーん、2010のバグなのかなあ・・・ アップデートしてます。
5でも2009でも大丈夫なら2010でも大丈夫なはず・・・
おかしいな>>29と同じコードやってみたのになあ 2010のQCにPopupMenuのWidthのバグとか出とらん?
もうdepricatedだから自分でソースいじくって直すしかないけど直し方のヒント位は
出てるだろうと思う >>35
これどう?メインメニューにサブメニューを追加するんだけどサブメニューも幅がおかしい?
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int Cnt = PopupMenu1->Items->Count;
char *buff[] = {"Test1", "Test2", "Test3"};
char *buff2[] = {"Sub11", "Sub22", "Sub33"};
PopupMenu1->Items->Clear();
for (int i = 0; i < Cnt; i++) {
TMenuItem* mi = new TMenuItem(this);
mi->Caption = buff[i];
// mi->OnClick = MenuItemClick;
PopupMenu1->Items->Add(mi);
// サブメニューを動的に配置する
for (int j = 0; j < 2; j++) {
TMenuItem* ms = new TMenuItem(mi);
ms->Caption = buff2[j];
mi->Add(ms);
}
}
} こんなしょーもない質問にマジレスしてくれてありがとう
>>36
やってみます
>>36
やってみました。
結果はサブメニューの幅はちゃんと文字列の幅になっていました。 >>38
という事は一番上のメニューだけのバグか・・・不可解だな そうですね、一番上のメニューの幅が何故か表示した最大の幅で記憶されている感じです
ちなみに、メニューを表示していたフォームを閉じて再度開いて表示させると
初回表示時みたいに最初だけちゃんと表示されます
そんなわけで、これMenuItemをClearじゃなくて
TPopupMenuごと削除して作り直せばいいかもしれませんが・・・ TPopupMenuコンポーネントにバグがあるんじゃね
clear()じゃなくてTPopupMenuそのものを初めから動的に配置したらどうですか? >>41
フォームを開くたびに幅が初期化されているので
TPopupMenuを動的に作成したら多分うまくいくとおいますが・・
とりあえず現状ではそれしか回避策は無いですよね。
皆さん色々ありがとう
今回はTPopupMenuを動的に作って逃げてみます >>43
あんた誰?
>>42
http://pastebin.com/X7E3s6pC
こんな感じでTListを使って管理するのが普通でしょうね >>44
マジですか!
ちょっとそれやってみます、ありがとう (Image1 はTImageコンポ。)
Image1のStretchをtrueにする。
(Image1のWidthとHeightは200とする)
Image1の大きさよりも大きい画像(400*400のビットマップ)を
Image1->Picture->LoadFromFileで表示させる。
これで表示は出来るんだけど
Image1->Canvas->Pixels[i][j]で縦200横200のドットの色を取得すると
元の400*400の画像の左上から縦200横200の取得になってしまう。
ストレッチされた画像の縦200横200を参照するにはどうしたらいい?
教えてくれ。
わかりにくくてごめんね。 >>46
TImageの中に保持しているTBitmapはあくまでも元のイメージそのままで、表示の時に
Stretchしているに過ぎない
だからストレッチされた値がどうしても欲しければ他のコントロールにStretchDrawして(非表示でよい)
そこから読み取る必要がある
下のプログラムはちゃんと異なる値を表示する
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("1.bmp");
Image2->Canvas->StretchDraw(Rect(0, 0, 200, 200), Image1->Picture->Graphic);
int x = Random(200), y = Random(200);
TColor tc1 = Image1->Picture->Bitmap->Canvas->Pixels[x][y];
TColor tc2 = Image2->Picture->Bitmap->Canvas->Pixels[x][y];
Label1->Caption = "x = " + IntToHex(tc1, 8);
Label2->Caption = "y = " + IntToHex(tc2, 8);
} TToolBarのButtonWidthを変更してもToolButtonの幅が変わらない
どうしたら変わるんですか?
ToolButtonのはチェックにしてます >>48
やってみたけど変わるけど
バージョンは何かな >>49
あれ?こっちじゃオブジェクトインスペクタで設定しても値がもどっちゃいます
2010です。 >>49
あー、わかりました。
ShowCaptions=Trueならダメなんですねこれ・・・
キャプションを表示しつつToolButtonの幅は変えられないですかね? Captionを表示するとWidthが固定されちゃいますね TDictionaryをC++Builderで使うにはどのように書けばいいのでしょうか
さっぱりコンパイルが通りません
char s;
Memo1->Clear();
dic = new TDictionary__2<unsigned short, char>;
for (w = 0; (unsigned int)w < 0x10000; w++) {
s = char(w);
dic->Add(w, s);
} C++で記述された実定義がないので、
template class を新たな型で new することはできません。
ガ━━(;゚Д゚)━━ン!!
Delphiを使えという事か・・・・
そう言えばC++ではTDictionaryではなくstd::mapを使えと書いてあったような
ありがとうございました std::mapがあまりにも遅いのでstd::hash_mapを使ってみたら2倍ほどになったけど
TDirectoryよりまだまだ遅い・・・・
boost::mapの方が速いのかなあ? Builder2007で質問ですが
Form1からForm2を呼ぶときにForm2のFormStyleをfsStayOnTopにしているのに
Form1をクリックするとForm2がForm1の後ろに行っていまいます
Builder5じゃそんな事はなかったのですが
2007辺りから↓
SetApplicationMainFormOnTaskBar(Application, true);
こいつが悪さしてるって以前に聞いたことあるのですが
これはランタイムテーマ有効?のだとおもうんですが
それがONの状態でもfsStayOnTopで背後に行かないようにする方法を教えてください >>60
5も大丈夫だったので2007だけかもしれません。
とりあえずWMWindowPosChangingメッセージでTOPにして常に最上位に表示するようにしてますが・・・
2007ってバグ多いからなあ >>61
Form2ってForm1から動的に生成してる?それともUnit2として後からShow()してる? >>62
Form1のコンストラクタで動的に作成してます
んで、Form2を表示させる場合にShowして必要なくなったらHideしてます。
Form2はフリーせずにずっと非表示で存在してます >>63
んーモーダルにしてもモードレスにしてもやっぱりForm2はForm1の背後に行かないです >>64
ランタイムテーマは有効になってますよね?
やっぱり2007だけのバグかなあ・・ >>65
XE2ではランタイムテーマはデフォルトで有効です >>66
そうですよね、2007もデフォで有効になってますし
色々ありがとうございます。
とりあえずメッセージで回避できるのでそうしておきます・・ >>66
何かメッセージで処理するのを止めても背後に行かなくなった
んで、色々ためしててちょっとわかったのですが
どうもForm1をアイコン化したらForm2が背後にいっちゃうみたいです
そんなわけで、以下の手順で試してもらっていいですか?
1.Form1を表示してForm2をfsStayOnTopで表示
2.Form1をアイコン化(この時にForm2も消える)
3.Form1を元に戻す(Form2はどこかに行ってしまてtみえなくなる)
4.Form2を再度fsStayOnTopで表示(見た目上はForm1の上に表示される)
5.Form1をクリックしてみる、そうするとForm1の上に表示されているはずのForm2が裏に行ってしまう >>68
XE2だとForm1をアイコン化するとForm2も同時にアイコン化するのは同じです
しかしその後Form1を戻すとForm2もちゃんと前面に表示された状態で再表示されました
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2(Application); // 生成
Form2->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Application->Minimize();
}
//---------------------------------------------------------------------------
こんな感じです あっちょっと違ってました
アイコン化するのはForm1だけで、Form2は消えてしまいアイコンになりません
しかしタスクバーをクリックするとForm2がForm1の上に重ねられて再表示されます FormにTLabelを貼り付けたら
TLabel *Label1;
と宣言挿入されたのですが
実際に、newはどこに書かれているのですか? Project1.cpp(デフォルト名)じゃないの? 今見たらApplication->CreateForm()って専用のメソッド呼び出してますね >>73
質問の仕方が悪かったです。申し訳ありません。
Label1 = new TLabel();
というのが、とこに書いてあるのかが知りたいです。 >>74
それVCLの中に書いてあるんじゃない?
CreateForm()がフォームに貼り付けてあるコンポーネントを全部初期化するんでしょうね >>74
IDEによって管理されているから、そういう記述はどこにも書かれていない。
VCL内部でフォームの情報を読んでそれぞれのコンポーネントを生成、初期化している。 >>69-70
ありがとうございます。
XE2ではちゃんと表示されるのですね・・・
やっぱり2007だけの現象なんですね 誰かさピクセル関数の使い方教えてくれる人いない?
課題で黒い線の上を車の画像走らせるアプリ作ってるんだけどその車の左右には触覚?みたいなものがついていてその触覚の色を取得したいんだが・・・ >>78
Pixel()は遅いからScanLine()で一行取得してからそれを調べるのが定石 学校の課題レベルで問題になるほど、でPixel()が遅い訳ねえじゃん。
マウスホイールイベントをMESSAGE_HANDLERで捕まえて、処理する関数
ttp://www.gesource.jp/programming/bcb/43.html
がBCB6では動いていたんですが、
XE2にしたらイベントを捕まえられなくなりました。
単純に以下のソースをForm1にコピーして、
ホイールを回したら、MessageBoxが出るように改良しているだけです。
なぜでしょうか。理由がわからなくて困っています。
また、その理由に基づいてどうしたらよいですか?
※Win7 32bit × 単純に以下のソースをForm1にコピーして、
○ 単純に上のソースをForm1にコピーして、
^^ >>81
http://toro.2ch.net/test/read.cgi/tech/1335177837/173
にも書いてあるけど
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_MOUSEWHEEL) {
Application->MessageBox(L"マウスホイールが回されました。", L"", MB_OK);
}
}
でいいんじゃないの とりあえずマウスダウンでピクセル使って色を取得するプログラム作ったんだけどフォームの色しか取得出来ないんだが
イメージ画像とかコンポーネントの色が取得出来ないのは何でだ? 基本的にCanvasの色しか取得出来ないだろ
それかBitmapか つぶれない。でもあと3ヶ月待て。C++BuilderはXE3で本気出す予定()だから。 >>86
コンポーネントの色を取得出来ないのはしかたがないとしてビットマップ画像の色は取得したい
カーソル直下に存在するコンポーネントのCanvasでPixels()を使え void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile("1.bmp");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int x = Random(Image1->Width);
int y = Random(Image1->Height);
Label1->Caption = UnicodeString().IntToHex(Image1->Canvas->Pixels[x][y], 8);
}
//---------------------------------------------------------------------------
こんなのでしょ
今まで何回も出てきてるけど
Button1で画像をロードしてButton2でランダムな点のTColorをゲットする StringGirdのセルに、IMEで漢字入力したくて、以下のソースをググってつくてみました。
入力セルの内にIMEの変換候補が表示されるプログラムです。
(XE2を使っています)
入力直後だけ変換候補が表示されません。
例:あるセルで、IMEをONにして文字列を打ち込んでいくと、
東京都[スペース] ←この段階では、変換候補が表示されない。
[改行] ←確定で「東京都」の文字が表示される。
港区[スペース] ←これ以降の続き入力では、変換候補も表示される。
最初から表示したい。どうすべ?
void __fastcall TStringGrid1::IMEStart(TMessage& Message)
{
// IMEの位置をキャレットのポジションに設定
COMPOSITIONFORM CompForm;
POINT pt;
LOGFONT lf;
HIMC hImc=ImmGetContext(Handle);
//キャンバスのフォントと同じに設定する
GetObject(this->Canvas->Font->Handle,sizeof(LOGFONT),&lf);
ImmSetCompositionFont(hImc,&lf);
//キャレットのポジションに設定する
ImmGetCompositionWindow(hImc,&CompForm);
CompForm.dwStyle=CFS_POINT;
GetCaretPos(&pt);
pt.x = this->CellRect(this->Col, this->Row).left+2;
pt.y = this->CellRect(this->Col, this->Row).top+2;
CompForm.ptCurrentPos=pt;
ImmSetCompositionWindow(hImc,&CompForm);
ImmReleaseContext(Handle, hImc);
//編集モード用カーソルの表示
this->Options << goEditing; //編集モードをON
this->EditorMode = true; //選択セルのカーソルを表示。これがないと、かな漢字変換の初期段階で選択枠が表示されたままになる。
} StringGirdが持つ、TInplaceEditのIME設定(SetImeCompositionWindow)を
以下のように変更しようとしていますが、
SetImeCompositionWindowがprotectメンバのためアクセスできません。
どう解決したらよいですか?
StringGirdのメンバー関数内での記述:
TInplaceEdit* editor= dynamic_cast<TInplaceEdit*>(this->Components[0]);
editor->SetImeCompositionWindow(this->Canvas->Font, 100, 50);
>>93
IME何使ってるの?
GoogleIMEだとちゃんと表示されるけど ちなみにMSIME2010でやってもちゃんと表示されました 同じIMEですねえ
ちゃんと変換候補も出ます
ちなみに>>94みたいな事はしていません もしかと思い、OS変えて調べてみました。
手元にある、Win7では×ですが、XPでは○でした。
OSなんですか? WOW64のバグかはたまたIMEの64bit版のバグか >>94で書いたような、IME位置の移動処理をしなくても、
this->Options << goEditing; //編集モードをON
this->EditorMode = true; //選択セルのカーソルを表示。
として、編集モードにさえすれば、その場所に変換文字が表示されるんですね。
XP限定ですが。
win7だと、>>95で書いた方法でIMEを移動できても、無理かもしれませんね。 WOW64の非互換の問題でしょう
こればかりは仕方がない
MSに文句付け方が早い 私が使ているのは、Win7-32bitなんですが、
WOW64は、32bitOSでも関係あるものでしょうか? 画像を一度ずつ回転させたく調べたところ
x1=(x2-cx)*cos(θ)-(y2-cy)*sin(θ)+cx
y1=(x2-cx)*sin(θ)+(y2-cx)*cos(θ)+cy
http://homepage2.nifty.com/tsugu/sotuken/rotation/#basic
(このサイトを参照)
このような式が出てきました
この式の左辺をどこに代入すればよいのか全くわかりません
どなたかご教授よろしく プログラミングの前に、高校数学をやり直したほうがいいぞ C++Builderユーザー各位
いつもお世話になっております。エンバカデロ 営業の深町です。本日は、先週
発表致しましたC++Builder次期バージョンへのパスについて、改めてご案内致し
ます。今回の発表は、C++BuilderがiOSやAndroidを含むモバイルプラットフォー
ムにも拡張されるという大きな一歩を表明しています。
これに対し、現在のC++Builderから将来バージョンまでを入手いただけるパスと
して、「Future Ticket」版の提供開始を発表させていただきました。すでに、
多くのお客様から反響をいただいております。
6月29日までにサポートと併せてご購入いただくことで、C++Builder XE2を20% OFF
でさらに次期バージョンへのプライオリティプレビューアクセスと、今後1年間に
提供される新バージョンを入手することができます。64-bitサポートをはじめ、
C++Builderの今後のバージョンへ円滑に移行するには、現在最新バージョンから
の作業が重要です。ぜひ、この機会をご活用いただき、今後1年間にわたって最新
環境をご用意いただければと存じます。
「Future Ticket」版 詳細ページはこちらになります。
⇒ http://www.embarcadero.com/jp/landing-pages/cbuilder-bundle
今時、超優秀なコンパイラがフリーで手に入る時代に、超強気な価格ですねw Builder2010ですがProgressBarでStepBy( 1 )してるのですが
ProgressBarの進みが遅く、処理が終了しても70%くらいまでしか進んでいません。
これ以前のようにちゃんと現在位置を表示させる方法を教えてください
>>113
Application->ProcessMessages()でも挟んでみたら? >>114
間違ってないです。
>>115
いや、挟んでる。
非常に単純です。
ProgressBar->Min = 0;
ProgressBar->Max= 100;
ProgressBar->Step = 1;
ProgressBar->Position = 0;
for( int i = 0; i < 100; i ++ ){
ProgressBar->StepBy( 1 );
Application->ProcessMessages( );
}
ProgressBar->Position = 0;
回す回数にもよりますがこれでバーが7割くらいのとこで0になってしまします。
ちなみに最後のProgressBar->Position = 0;を取ると
処理が終わってやや暫くしてからバーがMAXになります。。
そんなわけで、ProgressBar自体が遅延処理を行ってるみたいなので。
同じコードをBuilder5でやるとちゃんと最後まで表示されます。
これまた例によって2010だけのバグかもしれませんが。 >>116
ProgressBar->Min = 0;
ProgressBar->Max= 100;
ProgressBar->Step = 1;
ProgressBar->Position = 0;
for( int i = 0; i < 100; i ++ ){
ProgressBar->StepBy( 1 );
Application->ProcessMessages( );
}
ProgressBar->Position = 0;
Application->ProcessMessages( );
最後に Application->ProcessMessages( );
重い処理をした後あとだと処理が終わってもCGIが再描画されないときもあった気がする。 また2010のバグかよ(-_-;)
XE2でやるとうまく行くが
次のようなコードはどう?
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ProgressBar1->Min = 0;
ProgressBar1->Max= 100;
ProgressBar1->Step = 1;
ProgressBar1->Position = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ProgressBar1->StepBy(1);
}
//--------------------------------------------------------------------------- >>117
それやってみましたがダメでした
>>118
すんません、コードの性質上タイマーでアレするのはちょっとやりにくいのです。
ProgressBarが内部で遅延描画をしてるのは疑いないのですが
それをプロパティ等で設定できないものかとおもいまして
ちなみにSmooth = falseにしても、バーが滑らかなアレのままで断片表示になってくれません。
完全にProgressBarのバグですが、ちゃんと描画させる方法はないですかね?
更にちなみに、UpdateやInvalidateなどをやってもダメでした・・・ >>119
そうじゃなくて>>118ならちゃんと表示されるか聞きたい
だめならSleep()でもいいからさ これでも表示がおかしいかい?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ProgressBar1->Position = 0;
for (int i = 0; i < ProgressBar1->Max; i++) {
Sleep(100);
Step();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Step()
{
ProgressBar1->StepBy(1);
} >>120
あー、なるほど。
確かにそうですよね、やってみます。
>>121
それもやってみましたがダメでした BCB6をXPで使用しています。
メインファームである処理をしている時にフォームを掴むとその処理が停止してしまいますが、
これを回避する方法はありますか?
離せばまた元通り動き出すので、今は「掴むな!!」という事にしています。 別スレッドで処理を行わせるくらいしか回避方法はない。 FormのEnabledプロパティをfalseにするとフォーカスが当てられなくなるな
しかもオーナードローでなければボタンは反応するので途中で計算を止めたい時も行ける アドバイス有り難うございます。
FormのEnabledをflaseにして見ましたが、そもそも移動したい時にも移動できなくなるので
ちょっと難しいそうです。
別スレッドでという方法を試して見ます。
スレッドは使った事が無いので基本的な事を教えて下さい。
「異なるスレッドが保有するVCLにアクセスする時に排他制御の問題があるので、
Synchronizeメゾッドを使用して同期しろ」と書かれていますが、
例えばメインフォームのLabel1にアクセスするコードが新しく生成したスレッドの中にしか無い場合には、
排他制御の問題はそもそも無いのでSynchronizeメゾッドは使用する必要がないという理解で良いでしょうか?
移動は出来るけど処理は止めたくないのかあ
SynchronizeメソッドはVCLがマルチスレッドに対応してないので
Label1を新しく生成したスレッドからしかいじらないとしても調べる必要がある >>128
「調べる必要がある」とはどういう意味でしょうか?
Synchronizeメソッドの説明を読むと、
一度メインフォームに処理を戻してVCLの更新を実行するという事が書かれています。
でもフォームが掴まれている状態でSynchronizeメソッドを呼ぶとそこで止まってしまうのではないかと・・・?
結局止まってしまうのではないかと。
>>Synchronizeメソッドを呼ぶとそこで止まってしまうのではないかと・・・?
実験してみたら上記は問題ありませんでした。 スレッド別なんだから止まるわけないじゃん
それよりメインフォームでVCLをいじってるとSynchronize()の結果が変わる
その時にいじると競合が発生して不審な挙動になる C++Builder発売15周年記念キャンペーン
なんてやってたんだね
proで50000円は新規の人に魅力的だろうか? >>133
画像は分かりやすいけど…
dotupじゃすぐに消えちゃうぞ。一発ネタならちょうどいいけどね。
とりあえず、imgurにでもアップしなおして。 あと、ユーザー名は画像加工した方がいいんでないかい? いいんならいいけど。
てか、よく見たらこれBuilderじゃなくて、Borland C++ Compiler 5.5.1か〜。 >>132
魅力でしょ、
50000円ならシェアウェアを公開して
1ライセンス2000円もとれば、あっという間に元は取れるんだし。 a) bcc32.exe の引数に -I オプションでインクルードディレクトリを指定する。
例: -Ic:\bcc55\include
bcc32.exe のあるフォルダに、bcc32.cfg というテキストファイルを用意して、
-I<インストールディレクトリ>\include
などと書く。または、すでにある bcc32.cfg が
正しいディレクトリを指しているか調べて書き換える。
bcc なら解るが、cpad は使わないのでわからん。 とにかく、
エラー F2209 a.cpp 1: インクルードファイル 'stdio.h' をオープンできない
を解決しろ。
コンパイルでエラーがでてるのでリンクしていないから a.exe は作成されていない。
でも、cpad が、どこかにある古い a.exe を実行して、64ビット云々のダイアログがでているだけ。
RAD2010を使用しているのですがエディタでコメントを日本語入力しているときに、マウスカーソルがコードにかかっていると定義の検索が作動した時に文字化けしたり落ちたりしてしまいます。
IMEでマウスカーソルオフ以外の方法でこれを回避する方法はないでしょうか?再インスコや別PCでも治りません。誰か助けて…。 ということはあまり問題になっていないということでしょうか?強制電源オフしなくてはならないので困ってます。
BDS2006から発生していてバージョンアップをやめていたのですがWin7で安心して使用できるようにバージョンアップしたらまた同じでした。
もしかしてうちだけですか? 捨てアカで BDN アカウントをとって
公式フォーラムに口汚く罵った書き込みを入れてみたら?
アカウントは持っているんですが登録したあたりから英文スパムが来るようになって怖いんですよね。あきらめます。ありがとう! >英文スパム
David I って人からとか?
>あきらめます。ありがとう!
おめでとう。 VisualStudio ならそんなことないから、良い機会だから切り替えよう David Iとかエンバカとかもスパム扱いになりますがそれ以外で毎週100以上orz
VSへの乗り換えも考えたんですがBuilderに慣れてると使いづらくてねぇ。DirectXは楽になるんだけど。
XE3が出る頃までなんとかガンバりますわ。 IDEFixPackとか…これはさすがに効きそうにないか。まぁQCに入れても2010じゃ放置だろうし。
強制電源オフが必要なのってどういう状況? なんか2010の不具合報告が最近多いなぁ
それとXE2をWindows7にインストールした時の挙動がXPと違うとか >>153
日本語入力中にマウスカーソルがコードにのっていると文字入力したとたんに割り込みっぽく定義検索が発動。
すると同時に2バイト文字が1バイト文字として数えられてしまうのか半分くらいの位置以降で文字化けが発生。そのままさらに定義検索が発動?して無限ループ。(文字化けだけですむこともある)
で、タスクマネージャーでBuilderを落とそうとしてもダイアログは出るんだけど落とすこともできずWindowsにも戻れないのでリセットするしかなくなります。
2006以降の方なりませんか? 標準のタスクマネージャとかぬるいの使わないでProcessExplorerとかまともなもの使えば
たたき落とすことくらいはできるんじゃね?
あとはツール→オプション→エディタ設定→支援機能でシンボルインサイトあたりを無効化とか。 Process Explorerとかは使ったことがないんだけど、タスクマネージャーの起動すらできずにExplorer自体も落ちて再起動かかるも何もできなかったりします。
今、シンボルインサイトをオフって見ました。対策にはなるのですが、現在ユニットを多目に使用しているのでちょっと厳しいです。 CPUを100%とられてるのかも。まさかのシングルコアCPUだったりする?
だったらProcessExplorerでCPU使用率が高いプロセスの優先順位をNormalから下げることで
他の操作が可能になる(右クリック→Set Priority→Below Normal)。Process Explorerは事前に
起動しておくと吉。 すみません。環境書いてませんでしたね。i7 875K定格でメモリ16GB Win7 ULT 64bitです。
その方法も試してみたいと思います。いろいろありがとうございます。 連投申し訳ありません。早速試してみましたがBDSのCPU使用率は0.01%
Process Explorerで落とせたり落とせなかったりです。数分待つとProcess Explorerがやっとでてきたり不安定です。 登録ユーザーダウンロードを見ているのですがどれなのかわかりません。HF2まで当てていますが。 見つけました。が、インストールしても治らず。
というかインストールすると普通に文字化けが…。 つ ttp://andy.jgknet.de/blog/ide-tools/ide-fix-pack-2009-10/ エクスプローラが落ちたときに、タスクトレイに表示されているアイコンが消えてしまいます。
これを防ぐにはどうしたら良いのでしょうか?
タスクバーごと消えた場合タスクバーが再作成されるときに
UINT WM_TASKBERCREATED = RegisterWindowMessage( "TaskbarCreated" );
ってメッセージが飛んでくるので、そのとき再登録するとか。 そう言えばエクスプローラが落ちた時にアイコンが出るソフトと出ないソフトがあるな
出ないソフトはそこら辺をさぼっているわけか XE2でPageコントロールに複数のフォームを
ドッキングさせるアプリを作っているのですが
あるタブだけ、もしくは全てのタブのドッキングアウトを
抑制することはできるのでしょうか?
EndDockだったかのAllowにfalseを突っ込んでも
駄目でした
>>139
シェアウェア―って簡単に売れないのでは?
1本も売れないってよく聞くけど、本当はそんなことないの? それは、金を払う価値がないソフトウェアだからでは?
例えば、秀丸やEmEditorなんて一企業が成立するくらい使ってもらってるじゃん そういや秀丸って名前がかっこ悪いバグまだ直ってないのか? >>172 そんなレアなケース出されても....
>>139の言っていることは、
その気になればすぐに元を取れるって感じだから、
そうなの?ていう質問では? 実際マネタイズ大変だよな昔よりさらに
Google様が無料は当たり前の世の中にしてくれたからなぁ C++Builder2010で質問
Indyを使ったメール受信ですが
色々サイトをみると以下のように件名を表示しているのですが
TIdMessage *msg = new TIdMessage(this);
IdPOP3->Retrieve( 1, msg );
Memo->Lines->Add( msg->Subject );
delete msg;
文字化けします。
どのサイトをみてもこんなやりかたをしててSubjectは文字化けしないみたいなんですが
どうしたら文字化けしなくできますか? どのサイトみてもこんな感じなんですよね。
msg->SubjectをいきなりMemoにぶち込んでるだけで
これC++Builder2010のIndy10で普通に表示されます?? Indyって文字コード変換までしてくれるの?
してくれないならメールヘッダのContent-Typeとか見て変換しないとダメなんじゃないの? どのサイトもSubjectは変換してなかった
本文は変換してたけどね。
なんかヘッダーの日本語エンコードに対応してないらしい
Indy以外探したほうがいいかもね サイトでのソースは全部delphiなんだけど
C++Builderの方はバグってるのかなあ
何かそんなことかいてるサイトもあったし
だれか>>179を試してほしい・・ んじゃさ、受信したSubjectとか=?ISO-2022-JP?形式なんだけど
これを変換する方法を教えて>< Delphiのメール送信側だけど
http://codezine.jp/article/detail/400
見るとヘッダのコード変換にjconvert.pasとか使ってるみたい
Indy10でこの状態だから他の探したほうがいいんじゃないの? 最初jconvert使ってたんだけど・・・
どうもC++Builder2010じゃうまくいかなくて
同じコードをC++Builder5でやるとちゃんと変換されたんだけど
2010ってデフォでUnicodeになってるから? 多分そうだろうね
AnsiStringでやってUNICODEに後から変換するとか力技で一回やってみれば?w やってみたぽ・・・
とりあえずAnsiStringにぶち込んでから
Memo->Lines->Add( ConvertJCode( DecodeHeaderString( subject ), SJIS_OUT ) );
その辺は鬼のように試したんだけど全くうまくいかない。
C++Builder5じゃちゃんと変換されるんだけどなあ jconvert.pas自体がStringでビルドされてたら意味ないと思う多分 そうなんだよね、それ気づくの遅かったアホだし俺とか
んで、諦めて、アレしたんだけど
しかし何故delphiの方はSubjectそのままぶち込んでもちゃんと表示されてんだろ
どうしたものか
とりあえず>>189教えてくらさ>< とりあえずjconvert.pasのStringをAnsiStringに置換してビルドしてみれば? いや、根性でやったんだけどさw
まあダメだったわ、とりあえず無理やりキャストしてコンパイルが通っただけって感じだし
どうしたらいいの俺とか ちょっと調べてみた
MecsUtils.pasっていうEmbarcadero Developer Networkにある文字列関係の処理用コード使ったらタイトル文字化け直ったよ
http://cc.embarcadero.com/item/26061
Yahoo Mailの1メールでしか試してないけど
この中のMecsShrinkElementっていう関数にTIdMessageのSubjectを渡すと正常に変換された >>203
あああああああああああああああああああああああああ!!
ありがとうありがとう><
できましたできました!!!
自分もヤホーメール1件でしかまだ試してないですが
今までずっと試してたのが出来たのでこれでISO-2022-JPはばっちりです!!
ありがとうございました^^ 違ったあああああああ!
=?ISO-2022-JP?B?って形式で入ってるのはダメだった〜
理由はよくわからないけどSubjectに入ってる形式で
何かわけのわからん形式ならMecsShrinkElementでOKでしたが
=?ISO-2022-JP?B?形式で入ってると変換されなかったので
これは別の関数呼べばいいんですかね??
何を呼べばいいかソースみてもわかりませんが・・・ ヤホーから来たメールはOKだったけど
ニフティーから来たメールはダメだったぽ・・
これプロバによってアレかあ死にたい BCB6で、boost.polygon、は使えまつか? コモンコントロールってWM_NOTIFYを親に送りますよね
親がコントロールだったら、そのコントロールをサブクラス化するしか
WM_NOTIFYを捕捉する術はないのでしょうか? この前からIdPOP3がバグるって騒いでる基地外ですが
>>203氏のおかげで結構変換することができた
で、色々受信してたらMecsShrinkElementを通しても化けるのがあって
よくよくみてみると、MecsShrinkElementで化けるのは
最初から既にちゃんと変換されてたってのがわかったんだけど
2010のIndyのバグのせいか、ちゃんと変換されてるのと無変換で
MecsShrinkElementを通すとOKってのがあったんだけど
これを判別する方法としてCharSetがISO-2022-JPならMecsShrinkElementを使う
って事にしたら大抵OKになったけど、たまにCharSetに何も入ってないのに
MecsShrinkElementを使わないとダメなのがあって
これどうやって判別したらいいのですか・・・
XE2なら問題ないみたいだな
2010はバグ多いな
要するにXE2は2010、XEのバグ取りとFileMonkeyを入れたってことか
XE3でclang+llvmになるらいけどまたしばらくバグに苦しむんだろうな・・・ >>211
それダメですた、それ入ってないのがあって識別できません><
>>212
XE2迷ったけど64ビット作れないみたいだし次まで待つ事に だよ
XE2はDelphiのみ64bit対応
だまされたー とりあえず、判断は
AttachmentEncoding、CharSet、ContentTransferEncodingでなんとかなりそうです。
で、最後に・・・
=?shift_jis?B? この形式で来るのが現在変換できなくて困ってます。
これを変換する方法を教えてください・・・ BCB5でGDI+グラフィックを使おうとしたのですが、
動いてくれません。(画像ファイルは無事使えてます)
BCB6では自身のヘッダファイルのままで、グラフィックも
動いてくれています。
GDIplus関連のヘッダをBCB6からとか、2001年頃のSDKから
持ってきてもダメでした。
諦めて素直にBCB6でやるのも、ちょっと悔しいので
何か覚えている人がいたら、教えてくださいませ。
参考にしたサイト
ttp://www.leunen.com/cbuilder/gdiplus.html
ttp://aruaru.blog.so-net.ne.jp/2009-09-28
ttp://forum.sources.ru/index.php?showtopic=152783
GDI+を使う理由がわからん
激遅なのに。
しかも、今時BCB56って
割れ?
>>219
遅延読み込みしないとダメだったんでした?
やってみます。
>>220
いや、正規だけど、エンバカには御布施したことないです。
何もかも今更なんだけど、GDI+もDirextX(DXライブラリ)も
触ったことなかったもので...
再描画の遅さは我慢できる使い方なんです =?shift_jis?B? この形式変換する方法教えてください><
それと、"=?Shift_JIS?を
とりあえずこの2つ変換できたら思い残すことはないかもしれないぽ TListViewにExchangeメソッド無い??
行入れ替えどうやったらいいのかおしえてくらだ >>222
XE2ではタイトルがそうならないみたいな気がするので分からないけど
Base64のデコードに失敗してるんだと思うので自分でデコードすればもしかしたらうまくいくのかもしれない C++Builder2010でTImageを使って画像の回転をしたくて
TImageのヘルプをみるとRotateFlipらしきメソッドがあるんだけど
コンパイルするとこんなメソッド無いってエラーでるんだけど・・・
どうしたらコンパイルできます? つ ttp://delphi.about.com/cs/adptips2001/a/bltip1201_4.htm
つ ttp://www.delphi-central.com/tutorials/RotateBitmapBitBlt.aspx
つ ttp://stackoverflow.com/questions/10546582/rotate-timage-in-delphi DDBとDIBSection(普通のGDI)なら自分で計算して回転してやらないといかんよ 何かこれ呼ぶだけで回転はOKみたいなソースどっかに転がってないかな? >>232
これ俺が前に実際に使わせてもらったソースのサイトだけど
http://homepage2.nifty.com/tsugu/sotuken/rotation/
sin, cosをintに変換してから計算しているので結構速いよ
ScanLineプロパティを使うともっと速くなる
Windows Vistae以降ならDirect2Dを使って
http://code.msdn.microsoft.com/windowsdesktop/VisualC-howto-96795643
とやれば処理の大部分をGPUに放り投げられるんだけどなあ >>233
ありがとうございます。
その2つのサイト参考にアレしてみます。
ありがとうございました。 中村御大のDHGLはできないっけ?
ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/DownLoad.htm >>235
あ、これVCLライクなコンポーネント?
XE2に入るかやってみる >>235
それのRotateBitmap使ったらできましたー!!!
C++Builder2010
しかしこれパラメータ多くてとりあえず適当に入れてやってみたんだけど
回転角に90って入れても90度になってくれないなあ
たぶん他のパラメータの指定が悪いんだとおもうけど
>>235
ああ、すんませんできました。
パラ少ない方でやったらあっさりできました^^ ソフトを起動した時に既に起動していたら、既に起動してるソフトに引数をわたして
後から起動されたソフトの方を終了するにはどうしたらいいですか?
よくブラウザとかそんな感じになってますが パイプまたはメールスロットとミューテックスを組み合わせるな普通 >を組み合わせるな
組み合わせてはいけないのですね。わかりました >>242
こらこら
具体的なソースを誰か貼ってやれ プロジェクトソースのとこで自分のハンドルを取得してメッセージ送るのってダメ? Win32の本を読むと、あるプロセスから他のプロセスにメッセージを送る方法は
大きく分けて3つあり、共有メモリを使った通信、メールスロット、名前付きパイプ
がある。前者ほど易しいが欠点も多い。後者ほど難易度が増すが、より堅牢に
なる。前者はメッセージを受け取る努力がより要求され、後者はメッセージを
より強引に送りつけるようになるとある。
ケースに応じて使い分けろと書いてある。 相手のハンドルが判ってれば
PostMassage
SendMassage
で桶 >>247
引数ってその場合
UINT Msg, // message to post
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
これだけしか送れなくない?
コマンドラインみたいのを渡す時は使えない >>248
ここリンク貼れないのなんで?
ttp://cho●kuto.if●def.jp/advanced/copydata.html =?shift_jis?B? と "=?Shift_JIS? この形式変換する方法教えてくださあああああああ><
あ、まちごうた
=?ISO-2022-JP?B? と =?Shift_JIS?B? ですた^^
教えてくださ C++Builder2010でjconvert.pasをコンパイルしたら
jconvert.hpp内の各関数の引数が全てAnsiStringからUnicodeStringに変わってしまって
正常に実行できなくなるのですが
これちゃんとhpp内の引数がAnsiStringのままになるようにコンパイルするにはどうしたらいいですか? jconvertは2009以降に対応していないらしい >>258
あ、なるほど、ありがとう。
じゃあやっぱ他の方法考えないとダメなんですね・・ 教えてください
例えば
ListView->Items->Item[i]->Data = new char[256];
↑みたいにnewした場合に
ListView->Items->Clear( );するとnewしたのも自動的にdeleteされるんですか?
それともClearする前にforで回して1つづつdeleteする必要ありますか? >>259
Delphi側でString/PCharをAnsiString/PAnsiCharに書き換えるという手もあり
>>260
勝手にdeleteされることはないので、OnDeletionイベントで処理するのがお勧め >>261
ありがとう
Delphi側でString/PCharをAnsiString/PAnsiCharに書き換えるというのは
jconvert.pasを自分で書き換えるって事ですよね?
そう
jconvert.pasのライセンス条件に注意してね(調べてないけど) >>263
ありがとうやってみます。
ちなみに、個人で使うだけなので大丈夫です >>263
何かうまくいかないのですが、
Charでキャストしてるのがエラーになりますが
これは何にしたらいいですかね? これが実際のソース
Result[k] := Char( (dbuf[0] shl 2) or (dbuf[1] shr 4) );
CharをAnsiCharでキャストしたらとりあえずコンパイルエラーは出なくなったけど
動作させても文字が化けて以前と変わらずなもので。
ちなみに、ConvertJCode関連の関数は全てAnsiStrigに変更しました UnicodeStringとAnsiStringの多バイト文字列の内部表現が違うからじゃないか? 黙ってコンパイルするとUnicodeStringになっちゃいますが
それをAnsiStringに変更しました dbuf: array[0..3] of BYTE;
ResultはAnsiString にしました。 なら単に
Result[k] := AnsiChar( (dbuf[0] shl 2) or (dbuf[1] shr 4) );
でいいと思うが。 >>272
たしかにそれでコンパイルは通りますが
ちゃんと変換できないのはやっぱり別の箇所に原因があるんですねこれ
どこなんだろう コンパイラに1バイトパッチあてるとデフォルトを ANSI に戻せるよ タスクバーをクリックしてアプリケーションに戻った時に,
最後にフォーカスがあったフォームしか表示されなく
なってしまった。
ちょっと前まで,全部のフォームが表示されたのに。
何を変えちゃったのか全然分からん。 IdPOP3->Retrieveって添付ファイルまで受信しちゃってるみたいですが
これ添付ファイルは受信しない方法を教えてください スクロールボックスの縦、横のスクロールバーが出てるかどうかを判断する方法を教えてほしい >>277
できないんじゃないかなぁ
>>278
VertScrollBar.Visibleじゃだめ? >>279
Visibleはダメなんですよね。
アレオブジェクトインスペクタでtrueにしてても
スクロールボックスにスクロールバーが出てない状態でもtrueのままなんです じゃあGetScrollBarInfoでSCROLLBARINFOのBarInfo.rgstate[0]に
STATE_SYSTEM_INVISIBLEが立ってるかどうかとか? >>281
IsScrollBarVisible でできました C++Builder2010でマウスカーソルをリソースマネージャに追加したのですが
これどうやってScreen->Cursorsにぶち込むのですか?
2010多いな
XEとかXE2の質問がほとんどねえ
という事はXEが2010のバグ取りバージョンで、XE2がDelのみを64bit化したわけか MouseDownイベントでマウスボタンが押されている間マウスカーソルを変更したいのですが変更されません
マウスボタンを離したら変更されるのですが
これボタンを押してる状態でカーソルを変更させる方法を教えてください
Stringgridの罫線?の色ってどやってかえるの?BuilderXE使用中です jconvert.pasを2010でコード変えずにコンパイルする方法を教えて・・・
1.テキストファイルを読み込む
2.構造体を宣言しデータごとに格納
3.格納されたデータを表示
というプログラムを作りたいです。
1.をOpendialogを用いてできましたが2,3をどうしたら良いかさっぱりです。
詳しく解説している書籍やWebサイトなどがあれば教えてください。
C言語で書いているものはいくつかあったのですが
C++で解説しているのは見つからなくて・・・
テキストファイルの中身は
1 佐藤 175cm 70kg
2 鈴木 170cm 65kg
3 田中 165cm 60kg
のような学籍番号や氏名、身長体重が記載されているものです。 取得したテキストファイルを1行ごとの文字列として処理して、
(Lines->Strings[i]とか)
その文字列を学籍番号や氏名の区切り文字でわけて
構造体(の配列?)に順に格納していく。
それを最終行まで繰り返す。
表示は表示先しだい。
>>295
ありがとうございます。
早速LinesやStringsなどで調べてみます。 >>296
OpenDialogでテキストを何に読み込んでるかわからんけど、
TStringListやTMemoでテキストを読み込んでいろいろと処理する
サンプルなら検索すればいくらでもあるかと。 >>297
TstringList 構造体
などで検索をしましたが中々これだ!というものが見つかりませんでした。
Delphiですが
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200403/04030068.txt
のような事をやりたいです。
良い検索ワードがあれば教えていただけないでしょうか? 「のような事」じゃなくて、自分の言葉で書けよ。
せめてリンク先のどこまで理解できてどこが理解できないのか、
自分がやりたいこととここが違うからこうしたいとか。
何がやりたくて何がわからないのかさっぱりわからない。 テキストはcsv(カンマテキスト)にしてTStringListで嫁
んで、もう1つTStringListを使ってCommaTextにぶちこんでアレしろ >>299
すみません。
OpenDialogを使用してテキストデータのパスを取得
それをTStringListオブジェクトに読み込み
1 175 60
2 180 70
のような数字のテキストデータを
それぞれ身長 体重 学籍番号 などに分類したいんです。
構造体を宣言し、格納したいのですが
どういうプログラムを書けば格納できるのかサッパリなんです。
C++Builder 2007で作成していたソフトウェアを、C++Builder XE2で開発しよう
と環境を移し変えているのですが、コンパイル時によく分からないエラーが出て
困っています。
[BCC32 エラー] Winapi.Windows.hpp(2102): E2257 , が必要
[BCC32 エラー] Winapi.Windows.hpp(2750): E2257 , が必要
[BCC32 エラー] Winapi.Windows.hpp(2752): E2257 , が必要
[BCC32 エラー] Winapi.Windows.hpp(2754): E2257 , が必要
失敗
経過時間: 00:00:01.1
これ、自分が書いたCPPファイルの最初の方や、ヘッダファイルの書き方に妙な
ところがある。
ということでいいんでしょうか?
C++Builder 2007から、C++Builder XE2への移行なんで、UNICODEへの対処に
ついては理解しているつもりですが、このエラーメッセージでは、何が何だか
分からず、とても凹んでいます。
(というか、UNICODE絡みで変なとこがあれば、デバッグで自分のソースを指摘
してくれそうなもんですが、このメッセージだと何がなんやらで・・・)
何かヒントになりそうな事でもいいので、教えてください。
よろしくお願いします。 最近人気ねえなage
XE3パスする事にしたしなあ ドキュメントがでてきた?
ttp://docwiki.embarcadero.com/RADStudio/en/BCC64.EXE,_the_C%2B%2B_64-bit_Compiler
こっちはくだすれだから。統合本スレに移動しておきましょ。 だって事実上質問はこのスレにしか来ないじゃん
本スレは荒れ放題だし C++Builderをバリバリ使ってる人、手挙げて−
まず俺 ∧_∧
( ゚ω゚ ) C++Builderは任せろー
バリバリC□l丶l丶
/ ( ) やめて!
(ノ ̄と、 i
しーJ 312だけど、バリバリって何かと思ったら、あのバリバリか
誕生日に奥さんにポーターのバリバリ貰った俺は… ま、場を考えて使え。って点ではおなじだな。
Boost や C++99 の話をしているところに C++BUilder 使ってま〜す。って入って行ったら
あのバリバリと同じ思いをすることになるしな。
C++Builder XE3 を試しに使ってみたんだけど
SDIアプリを作成して
vectorを使おうと
#include <vector>
して
vector<int> abc;
と書くとエラーになる
何がいけないんだろ
using namespace std;
または
std::vector<int> abc; 設定の段階で詰まりました
http://i.imgur.com/GIbjD.jpg
e2075でcfgファイルの何がダメだのかわかりません
よろしくお願いします 全角スペースあたりかねぇ。あとは冒頭に UTF8 BOM が入っているか。
.cfg はテキストファイルだから、からのテキストファイルでエラーが出ないことを確認したうえで
一行ずつ追加しては動作確認すれば、どの行に問題があるか見つけられるでしょう BOMの可能性が高い。
試してに.cfgに-myoptionの行を入れてbcc32を実行すると
オプションの間違い: -myoption
と表示されるが、その部分が化けている。 テレビ番組「つまらなくなった」が71.2% 「昔は良かった」の声
投稿日: 2012年10月17日 15:00
この秋の新番組を、読者の皆さんはご覧になっているだろうか?
10月10日にスタートした『相棒 Season11』の初回2時間スペシャルの平均視聴率は19.9%
(ビデオリサーチ調べ・関東地区)となり、『相棒』シリーズの初回としては過去最高のスタートを見せた。
この他にもNHKの朝ドラ「純と愛」も初回視聴率19.9%(ビデオリサーチ調べ 関東地区)と、
前回の「梅ちゃん先生」を初回視聴率で上回る好発進を見せている。
視聴率においては好調なものも複数あれど、「最近、テレビがつまらない」と嘆く声は
メディアやネットの意見でしばしば目にすることが多い。本当に「昔よりテレビはつまらなくなった」のだろうか?
双方向のデータ通信での視聴者参加型番組や、最新技術を駆使した映像など、
テレビで表現できることはますます広がってきているはずなのだが…。
「昔にくらべて、テレビ番組は全般的にどうなったと感じますか?」という調査では、結果は以下のようになっている。
・面白くなった:6.7%
・変わらない:15.8%
・つまらなくなった:71.2%
・わからない:6.3%
(リサーチパネル調べ、17万4805人が対象)
このように、実に7割以上の人が「テレビ番組がつまらなくなった」と回答。
年齢別では、10代が55.0%と最も低く、20代66.8%、30代69.7%とその数字は上昇。
40代以上の年代はすべて7割を越えた。
http://shunkan-news.com/archives/1557
C++Builder5でWindows7の64bitでMySQLをODBC経由で接続したいのですがエラーになります。
32bitなら正常に接続できます。
64bit用のodbcドライバに対応するlibとdllありますか?
ちなみにWin7 64bitにODBC32bit用ドライバをインスコしてもMySQLが出現せずに選択できませんでした 具体的なアドバイスはできないけど、アプリケーションが32bitならODBCの設定もMySQLの
ライブラリも32bitのものを使うことになる。特にODBCの設定は64bitと32bitで別々なので要注意。
多分ODBCの設定で64bitのほうを見て
> MySQLが出現せずに選択できませんでした
っていってるだけなような気がするけど…。 Windows7の64bitの場合
ODBC接続マネージャーは普通にメニューから選ぶときと
.cplファイルを直接実行する場合とで
64bit用と32bit用で違うものが開かれる 32bit用のMySQLのODBCドライバをインスコしてから
ODBCデータソースアドミニストレーターで新規作成をしても
リストにMySQLが表示されないんですが 32bitのODBCデータソースアドミニストレータを起動してるか? 管理ツールの中の
ODBCデータソースアドミニストレーター
は64bit専用
C:\Windows\SysWOW64\odbcad32.exe
が32bit専用の
ODBCデータソースアドミニストレーター >>333-334
ああ・・・
管理アレにあるのを起動してました。
これ64bitのですよね・・・
ありがとうございます。
32bitのを起動してみます ありがとうございました。できました!
が・・・
これ一度作ったのって構成で修正や削除ができない・・・ ちょっとまた質問ですが
Win7の64bit版でODBC経由はうまくいったのですが
C++Builder5がインスコされていない別のPCでやると
データベースオープン時にエラーがでたので
InstallShield Express For C++Builder 5を使ってDB関係を含めてインストーラーを作ったのですが
これをWin7の64bit版で起動すると
このファイルのバージョンは、現在の実行中のWindowsのバージョンと互換性がありません
ってエラーが出てインストーラーが起動できません・・・
C++Builder5がインスコされてない64bit版でDBを扱うにはどうしたらいいのでしょうか・・・ C++Builder2009をWin7の64bitで動かしてますよーって人はいる? >>337
ISXの作るインストーラは16bitアプリケーションなのでx64環境にはインストールできない
(x64環境では16ビットアプリケーションは動作しない)。
InstallShield買うなりInnoSetupのようなフリー/オープンのインストーラ使うなりご自由に。 >>339
そうですか、ありがとう・・・
うーん、どうしよう
他のインストールシールドとかでどうやってC++Builder5のDB関係をインスコさせるのかわからないしなあ >>340
オレが開発委託者ならキミには頼まないわん。VBでも使ったほうが良くない?? >>341
知らないならレスしないで下さい。ウザイだけです Delphi Pascal Compiler
コマンドラインコンパイラdcc32は、どういう場合につかいますか? >>341
ここにはIDでないからな。知らないで開発委託者の立場でレスはしない。
そんなことも知らないでC++を使ってるような経験値の低い開発者には
頼まないってこと。
MSがこれを入れておくと動きますよと言ってくれるVBで、といったのは
そういうわけ。
C++Builderはexeをコピーするだけで動くスタンドアロンなプログラムが作
れるのが利点の1つ。 やれやれ、アンカみすってる。で、ここは超初心者スレだったのか。
プロジェクト→オプション
パッケージタブ 実行時パッケージを使って構築 のチェックをはずす。
リンカタブ リンクの共有RTL DLLを使う のチェックをはずす。
この2つで自前でLoadするDLL以外の依存は完全になくなる。実行ファイ
ルがでかくなるって嫌う人も多いが、そりゃ32Mバイトのメモリが広大だっ
たころの話。
これでデータベースのエラーがでるならそれはどこかがバグってる。 >>344-345
ほんとに何も知らないならレスしないください。ウザイだけです。 TChartで質問ですが
Series1->YValue[n] = 123;
みたいに既に作成されているグラフのn番目に値を後から変更できますが
Series1->Add( 0, "gggg", clTeeColor );
のようにAddした際にテキストとしてAddしているのですが
このテキストを↓
Series1->YValue[n] = 123;
これみたいに後からテキストの値を変更する方法を教えてください C++Builder2010を使用しています。
スレッド間の排他制御に関して教えて下さい。
A、Bの2個のスレッドがあります。
Aで計算するデータをBで参照するだけの場合でも排他制御はした方が良いのでしょうか?
具体的にはAはループ処理でずっと計算をしています。
Bは定期的(1秒に1回とか)に計算結果をGUIに表示するだけです。
どなたかアドバイスをお願い致します。 当たり前だろ
マルチコアで変数に代入中に値を参照したらどうなる
アトミックなOS APIを使おう >>350
有り難うございます。
排他処理実装します。
「アトミックなOS API」の検索キーを教えて頂けませんか?
あちこち見て、クリティカルセクションというのを試して見ようと思っていました。 >>351
単純な排他制御はパフォーマンスに悪影響を及ぼす事がある
クリティカルセクションは主にデバイスドライバで使用する
一番多く使うのはMutex
インターロックAPI
セマフォ
イベント
などかな いま、同一パソコン上で、2つのWindowsアプリケーションを動作させてて、そのプロセス間通信でメモリマップドファイルを利用してファイルデータの受け渡しを行ってるんですが、一方のWindowsアプリケーションを別のパソコンへ持っていきたいと考えてます。
この場合、イーサネットで接続するようになるのですが、名前つきパイプを利用すれば同等の機能が実現できますでしょうか? それC++Builderに関係ない話だね
Win32スレで聞いたらいいかも
あ、今荒れてるか メールスロットでもいいんじゃねーの
プロセス間通信でしょ 無料でC++Builderを使いたい。どこにあるの? 2010からXE4にVUPしたのですがプロジェクトオプションのデフォルト設定の仕方が分かりません
またパッケージを未使用にして保存してもいくつかXE4を再起動するとオンになってしまいます
(プロジェクトを保存して開き直す場合は反映されているのにXE4を再起動するとダメです)
XE3をいれてみても同じです。どうしたらいいの? デフォルトのプロジェクト設定はXE2辺りで無くなった
便利だったのにね
ファイルに保存できるオプションセットを使えだとさ
これ、正直仕様がよく分からん ありがとう!やっぱりそれですよね
でもパッケージの使用可否はやはり設定できないようです 俺も>>362と同じく2010からXE4にした者なんだけど
Releaseでコンパイルする方法がわからない・・・
以前は構成マネージャでdebugとreleaseを切り替えてたのに無くなってるので
これ何処で設定するの?? 表示メニューに移動してた・・・
何でこんな糞みたいなことするんだろ
デフォのプロジェクト保存とか勝手に無くすし プロジェクトオプションのダイアログの一番上にあるターゲットじゃないの? >>367
それってたぶん、プロジェクト設定のターゲットじゃないかな、かな。
まあとりあえず解決したんだけどさ
つーか、exeでかすぎwwwwwwwwwwwwwwwwwwwwwwwwwwwww
とりあえずフォームだけのをコンパイルしてみたらexeが4MBってwwww
大丈夫なのかこれwwwwwww
以前C++Builder5でexeが肥大するバグがあってするUpdateが出たけど
何で使いもしないのも無理やりexeに組み込むんだろ 自分の所でしか動かさないのなら動的RTLの使用にチェックを入れとけば? DebugとReleaseを切り替えるのって
プロジェクトマネージャで1ダブルクリックじゃん
XE4すげー便利じゃん >>369
XE4入ってない環境で動かすから
>>370
プロジェクトマネージャ邪魔で非表示にしてるから今まで使った事ないんだよね これツールバーカスタマイズでアクティブ構成のアレ追加できればいいのに プロジェクトマネージャが邪魔なら
オブジェクトインスペクタとかと同じ場所にタブにして置けばいいじゃん
タブ1クリックで切り替えられるんだからさ なるほど、タブでアレしたらよさげな感じになりそうですね
っていうか・・・
64bitコンパイルできるっつーからゲットしたんだけど
これプロジェクトのターゲットに32bitしか表示されないんだけど・・・
どやったら64bitでコンパイルできるんですかね?? プロジェクトマネージャ
ターゲットプラットホーム
右クリック
プラットホームの追加 >>375
ありがとうできました・・
これプロジェクトマネージャからでしか追加できないのかなあ
めっちゃ64bitをアピールしまくってたくせに何でデフォで選択できないんだろこれwwww フォームだけのexeで4MBは多分Builderのリンカがアホなのが原因
sensorとか使ってないRTLがてんこ盛りにリンクされてる
DelphiでフォームだけだとXE3では2.2MBくらいだった >>377
マジですか
むしろDelphiでもXE4にしたら4MBくらいになったりとか?
ちなみに、C++Builder1、3、5、6、2007、2010、EX4と使ってきたけど
新しいのリリースする度にどんどんexeが肥大化してってるww
まあいろんな機能が実装されてるから仕方ないんだろうけど
フォームだけで4MBは無いよなあ・・・ 今やってみたら、Delphi XE4でもフォームだけで2.2MBだった。
俺の所ではBuilder XE4では3.5MBだけど何が違うんだろう?
リンカのオプションでマップファイル出力を詳細にすると何がリンクされているか分かるよ XE4でさ、メモリをコピーだけするのを作ったのさ
んで、64bit OSで32bitと64bitでコンパイルして速度計ったら
64bitでコンパイルした方が倍時間がかかってたんだけど、何で? ソースさらせ
単に対象メモリサイズまで倍になってるってことじゃないだろうな 単純にメモリコピー速度を32bitと64bitで比較するためにアレしてみただが
#define DIBBUFFERSIZE (1920*2048*4)
DWORD *Dib1;
DWORD *Dib2;
Dib1 = (DWORD *)::VirtualAlloc( NULL, DIBBUFFERSIZE, MEM_COMMIT, PAGE_READWRITE );
Dib2 = (DWORD *)::VirtualAlloc( NULL, DIBBUFFERSIZE, MEM_COMMIT, PAGE_READWRITE );
int ms = ::GetTickCount( );
for( int i = 0; i < 100; i ++ ){
::CopyMemory( Dib1, Dib2, DIBBUFFERSIZE );
}
ms = ::GetTickCount( ) - ms;
Panel1->Caption = ms;
:: VirtualFree( Dib1, DIBBUFFERSIZE, MEM_DECOMMIT );
:: VirtualFree( Dib2, DIBBUFFERSIZE, MEM_DECOMMIT ); CopyMemory が原因みたいだな
*des++=*src++
で単純にコピーすると64bitの方が速いな >>385
やってみた。
64bitの方が早くはならなかったが同じくらいの速度にはなった。 System::Move()とかmemcpyだとどうかな? memcpyはCopyMemoryと同じだった
Moveは使ってないっぽ Moveやってみた
forで回すのと同じくらいの速度で32も64も同じくらいの速度だった Moveはx86だとfastcodeのアセンブラで、x64はfastcodeのpascalコードなので、同じくらいというのは
まぁそんなもんかという気はする。 ::CopyMemory って WinAPI 呼ぶんじゃないの? >::CopyMemory って WinAPI 呼ぶんじゃないの?
CopyMemory自体がWin32API >CopyMemory自体がWin32API
じゃ遅くても仕方ないな。Win64 API 使えないのかよ。
使えねーつーるだな またmalloc()やプリコンパイルヘッダの時みたいにユーザーが提案してきた
ルーチンを組み込むつもりなのかな 64bitネタがでていたのでXE4にVUPしてから64bitでビルドしてなかったので試してみたら3倍速位になった
デジカメのRAW現像なのでshort変数ばかり使ってるんだけどなぜ速くなったのか全くわからん 32bitで3.4Mが64bitは9.8Mになってた
ランタイム不要のReleaseビルドでの比較です
2010で作成したソースをClipboardで使われているNativeUIntの部分を条件分岐追加してコンパイルしただけ XE4 での 32bit 版の大きさも知りたいところだな XE4 での 32bit 版のチンポも大きさも知りたいところだな だから32bit版の何の大きさを知りたいのさ?チンポ? 399は両方XE4です
2010だと1.2Mだった
サイズはあまり気にしないがやっぱりでかくなってるんだな C++Builder XE4でandroidアプリって作成できますか? C++Builder5で質問なんだけど
最初はなんともなかったんだけど
フォーム数が増えてきてからコンパイルするとアイコンがデフォになってしまう
その状態になっても何度も再構築してたらちゃんと指定したアイコンになる時もあったんだけど
今はもう完全に何度再構築してもデフォアイコンのまま
しかもこの現象はXPだけでWin7だとちゃんとアイコンが表示されている。
このバグを回避してちゃんと指定したアイコンになる方法を教えてくださ・・・・ GDIオブジェクト数の制限が掛かってるんじゃね?
レジストリいじって再起動かも http://technet.microsoft.com/ja-jp/windows/mark_16.aspx
ここをよく読んで
http://factory.sakura.ne.jp/tuneapp/
これで変更
レジストリエディタでも変更できるけど間違えるとWindowsが起動しなくなったりして危険
しかし制限値は10000なのでこれが原因じゃないような気がするなあ >>412
ありがとう。
よく読んでアレしてみます プロセス毎に10000だよ?
Formにそれだけのコンポーネント乗っけてないよね? 1つのフォームに1万も乗せてないですが
フォーム数は100ちょいで合計してもコンポーネント数は1万も無いかもあるかもって感じですが dfmファイルは116ありました。
ちなみにちなみに、浅いフォルダでコンパイルすると正常にアイコンが表示されます
と言ってもダメな時のフォルダ階層って4つくらいなんですけどね・・
ルートにフォルダ作ってそこでやると何故か大丈夫 >>416
それじゃあ>>412やっても変わらないだろうな・・・
俺の場合はJaneStyleで多量のJPGを一気に開くと画面が崩れるので設定を変えたんだが
他の原因だな 浅いフォルダだとおk?
もしかしてパスの長さがMAX_PATHを超えてないか? >>417
やっぱ変わらないですか
>>418
浅いフォルダ階層だとおkですがしかし
しかし、フォーム数が少ない時やもっと深い階層で他のフォームが少ないのは大丈夫
階層深くてもフォルダ名が短いのでMAX_PATH超えることはないです256ですよね?
せいぜいあって100バイトあるかないかですね C++Builder2009で作成したプログラムをWindows7で実行したのですが
リストビューのカラム幅を変更しようとドラッグすると、ドラッグ途中では
再描画されずに縦棒で位置を示す表示がされるだけで、ドラッグ終了で
位置が確定してやっと新しいカラム位置で再描画されます。
これは2009はWindows7をサポートしていないことが原因でしょうか?。
また2009でもドラッグ中に再描画できるようなウラ技(?)とかありますか?。
スプリッターはResizeStykeをrsUpdateにしておけば旧OSと同様に
処理されていますが、カラムの変更も同じような感じにしたいのですが・・・。 C++Builder2009なんですが、
TTreeview の LoadFromFile と SaveToFile メソッド
内部的にはUnicode だと思うんだけど、 SaveToFile で Unicode で保存まではいいんだけど
LoadFromFile で Unicode で読み込んでくれず、どうやらS-JISで読んでいるみたいなんです。
LoadFromFile で Unicode で読み込む方法か、
もしくは SaveToFile で S-JISで保存する方法があったら教えてください。
TStringList だと TEncoding で指定できるのに・・・。 overloadされたLoadFromFileが存在してない? ないです。
E2227 _fastcall TCustomTreeView::LoadFromFile(const UnicodeString) の呼び出しに余分なパラメータがある
といわれます。 どうにも方法がないなら、TStringList→TStream系→TTreeviewでなんとかなりませんかね。
もしくは、TStringList.Text→TStringStream→TTreeviewとか。
当方Delphiかつ現在環境を用意してないので試してはいない。適当でスマソ。 >>424
TStream系に変換してみましたが、TTreeview のLoadFromStream の段階でダメのようです。
当面は原始的に各ノードに対して .StringOfChar('\t',Node->Level)+Node->Text; をTStringListに追加していって、それを保存という感じで対応しようと思います。
この方法で保存したものなら TCustomTreeView::LoadFromFile(const UnicodeString) でちゃんと読み込めましたので。
ありがとうございました。 評価式についての質問なんですが。
int a=10,b=20;
if(a+=b && a==30) { }
こういう式があったとして、これって真になるということは保証されていましたっけ?
されてない?
if( (a+=b) && a==30) { }
こうすればOK? C++Builder6で作られたソフトのメンテやらされているんだけど
簡単な画像処理で
Image1->Canvas->Pixels[x][y]=color;
で512*512ぶん回してるところがやたら遅いんだけど
Canvasを実メモリ配列に吸い出して
なんか処理してから
元に戻したいんだけど、どうすればいいんでしょ?
サンプルコードでもあれば教えてください。 >>428
今日も面接いってきたよ 2012年の3月から147社正社員面接しているのに採用されないよ
正社員歴2年の高卒の27だよ 福岡市に一人で住んでるよ 身長174センチ体重55キロだよ
資格は 簿記3級 秘書検定3級 ITパスポート,運転免許 モスのエクセルとワードだよ
これはネタではないよ
事実だよ
コピペでもないよ >>428
ScanLine()で一行分ゴッソリ取ってくるのが普通じゃないの? >>430
ありがとうございます。
VC++ばかりやってたのでVCLのメソッドがよく判っていません。
明日やってみます。
ついでと言ってはなんですが、これ以外にcanvasのイメージを一気にxy配列で取り込む方法ってありますか? >>431
CopyRect使えばTBitmapにコピー出来るけどそんな事したいのか?
配列に取り込むには一度TBitmapに変換してからじゃないと1ドット毎に
システムコールが起きるので遅くて仕方がない だいたいWindowsのビットマップは丸っきり前後関係が逆なのでC言語の配列とは
相性が最悪なんだよな
C<=>FORTRANで行と列を交換するtranspose()位の手間がかかる ここはくだすれ...
歴史的に Windows BitMap の内部フォーマットは千差万別。かつ、連続したメモリブロックになっていない場合もある(あった)
ので結構めんどくさい。ひとことで言うと例外が多い。
素性のはっきりしたデータを最新の OS で動かすのであればそんなに問題ないんだけど
どんな画像でも、ちょっとふるい OS でも、となるとね...
なので一ピクセル単位のアクセスってのが、とっても遅いんだけど、まぁ安全。ってこと。
もうちょい早く処理したいなら ScanLine を使えば水平一ラインごとに読み書きできるので
たいていこちらを使う。 千差万別って、DDBとDIB Sectionの2種類しかないじゃないか フルカラーの24bit16万色が(+8bitα値がGDI+)当たり前の今は関係ないけど、
昔は少ないVRAMにパレットを割り当てる事によって原色に近い色を出してたろ
そういうのを全部VCLに吸収して表面から見えないようにしていたので、プログラム
によってはびっくりするような結果が出ていた
そこまで考慮するかどうかで対応策も違ってくる
無視していいと思うんだけどね http://www13.plala.or.jp/kymats/study/multimedia.html
ここが分かりやすいな
俺はDelphi Graphic Secretsというすっげー古い本を読んでるけど
今でも関心するような事が書いてある
でもほとんど今では役に立たないような事が多いけどな
VCLがいかに初期Windowsのヒデエ場所を隠蔽して見えなくしているかも
だいたい分かる 皆様のご親切に感謝です。
全体の内容がわかってなくての質問でした。
よく見てみると今回の質問は
ネットワークからモノクロ8ビットの画像データをメモリ配列に取り込んで
このメモリ配列の画像データを小さいウインド画面でモニタするために
color=data*0x10000+data*0x100+data;
Image1->Canvas->Pixels[x][y]=color; // これをグルグル
とやっているのを高速化したいのですがお勧めの手法はなんでしょうか?
単純に画像メモリ配列データをウインドに画像として出力したいということで
古いOSと古いマシンの対応は不要です。
勉強不足長文すみません。 ああそうだ、初めて知ったんだけど、ImageコンポーネントのPictureプロパティの
HandleからHBITMAP構造体へのポインタを得て、BITMAP構造体を
GetTObject()で取得しても、bmBitsはNULLになっちゃうのな
これどうすればいいんだろ >>440
おかげさまで何とか理解出来ました。
初歩的な質問に付き合っていただきましてありがとうございました。 >>441
そっちには入っていない
MaskHandleの方に入っている
というかわざわざカプセル化されているVCLの中身を覗いてゴニョゴニョしたいのなら
初めからMFCで書けばいいだろ TBitmap(もしくは、TCanvas)の2つを透過コピーするサンプルコード下さいorz
>>441
TImage->Picture->BitmapのWidthかHeightを設定するタイミングでアサインされるんでわ? ScanLineでマスク画像の白の部分以外を描けばいいだけじゃない?
マスク画像使わないんなら設定した色以外の場合だけ描けばいいんじゃない? AlphaFormatの事だとVCLは事情が異なるからなあ
GDI+をサポートしていないので、描画時に考慮するだけで他の動作は違うし >設定した色以外の場合だけ描けば
調べても動作させても上手くいかなかったので、そうします。 ListViewでレポート表示させている場合に、ある行にフォーカスを設定すると
その行が画面に見えてない時には見える位置まで自動でスクロールしてしまうのですが
スクロールさせないようにすることは可能でしょうか?
スクロールしてしまった後に自力で戻すしかないでしょうか? ある行にフォーカスを設定ってSelectedってこと?
だとしたらウチではそんなことにならないんだけど… SelectedじゃなくてFocused
設定すると点線で囲まれる ListView1->Items->Item[10]->Forcused=true;
にしても全然スクロールしないよ。XEだけど その行が表示されていない状態でフォーカスを設定すると見える位置までスクロールしない?
ファイラーなんかでフォーカス行が見えていない時に↑↓キーでフォーカス行を変更すると
見える位置までスクロールするのと同じことなんだけど ListView1->Invalidate();しても移動しないよ UpdateやRefreshは?
あと移動しないということは見えない状態のままということだよね
それで↑↓キーをどっちか押すと見える位置まで移動する? いろいろ試してみた結果 「Forcusedをtrueにしたから」 というわけでもなく
再描画されたタイミングでフォーカス行までスクロールされているみたい
あと仮想リストビューを使っているのでその辺も違いがあったかもしれない
リストのデータを更新してCountに件数をセットしたタイミングでスクロールされていた
(フォーカスを設定していたタイミングではなかったので、ここで勘違いしてた)
なのでCountに件数をセットする前に表示されている一番上の行番号を退避しておいて
件数をセットした後でまた元の一番上の行番号が見えるように戻してやることで解決したっぽいです
ここまでお付き合いして情報を寄せて頂きありがとうございました C++Builder6のIDEについて質問です。
IDE使用中にパソコンがフリーズしたことがあり、それ以来エラーが出るようになりました。
エラーのメッセージは下記リンク先と全く同じです。
http://www.functiont.info/diary/200509.html
2005年9月18日(日) Delphiの本体でエラー?
--
モジュール 'vcl60.bpl' のアドレス 40110C48 でアドレス 00000018 に対する書き込み違反がおきました。
モジュール 'coreide60.bpl' のアドレス 0052700C でアドレス 000000B4 に対する読み込み違反がおきました。
私の場合は一応は使えるのですが、IDEのメニューで「開く」から別のプロジェクトを開くと
この上のエラーメッセージが出ます。そして検索やコンパイル結果が表示されるウィンドウが
ドッキングから外れて浮いた状態で小さく表示されます。この後このウィンドウを
ドッキングし直せば以降は普通に使えるのですが、また別のプロジェクトを開くと
同じ事象が発生します。
またこのウィンドウをドッキングから外したりして弄っていたら下のエラーメッセージが出ました。
リンク先では再インストールで直ったとあるので、修復インストールや、アンインストール後に
インストールし直してみたりしたのですが改善されませんでした。
ファイルが壊れたのなら上書きで直りそうですが、何かゴミデータでも残っているのでしょうか?。
そのウィンドウの位置やサイズ情報を読み込んで変な位置に表示しようとしてエラーが出ている
ようにも思えるのですが、何かお心当たりのある方いらっしゃいますか?。 レイアウトファイルぶっ壊れてるんじゃね
デスクトップレイアウトとデバッグレイアウトを上書き保存したらどうだろうか レスありがとう。
「標準」という名称でデスクトップの配置を保存してみましたがやはり上のメッセージが出ますね。
また 表示→デスクトップの配置→標準 という感じで保存した名称「標準」を選択しようとしても
同じエラーメッセージが表示されて選択できず <未指定> にチェックが付いたままになります。
この配置の読み込みでエラーが出るということはその辺に問題点があるということなのでしょうけど
一体何を読み込んでしまっているのだろう・・・。
保存すると 標準.dst というファイルが作成されましたが、同じフォルダ内にある bcb.dsk と見比べて
みればいいのかな?。 dsk ファイルも散々書き換えて試したのですが、やはりこの辺を徹底的に
調べるしかないか。 C++Builder6なので同じような項目を探してみたところ以下のような箇所を見つけました。
[HKEY_CURRENT_USER\Software\Borland\C++Builder\6.0\Session]
"DesktopName"=""
"RuntimeDesktopName"=""
現状では空欄になってますけど、これに各々 Default Layout と Debug Layout って入れるということなのかな?。 古いパソコンにもC++Builderを入れてたので(こちらは問題なく動く、けどパソコンが非力)
レジストリを見てみましたがその2つの項目自体が無いですね。関係ないかもしれないです。
>>459 で「標準」という名前でデスクトップ レイアウトとデバッグ時のレイアウトを作ったので
その時に追加されたのかもしれない。そして症状が変わらなかったため削除したので
空欄になってるだけみたいです。 参考にならないかも知れないですがXE4ではこうなっています
[HKEY_CURRENT_USER\Software\Embarcadero\BDS\11.0\Session]
"RuntimeDesktopName"="Debug Layout"
"DesktopName"="Default Layout" http://edn.embarcadero.com/article/39780
8.デスクトップレイアウトの設定
2009辺りからもプリセットで用意されてるみたいですね。
バージョン6の頃はまだ無いみたいです。
またアンインストールしてみるかなぁ。
多分レジストリに情報が残っていたんじゃないかと推測。
BCB6RegClean.exeをやればいいのかな?。 XE2で、エントリーポイント(WinMain)があるファイルの
USEFORMマクロの上に気が付いたら空行を
どんどん追加されてるんだけど、これどうにかならないの? C++Builder2009Proを使っています。
.pas ファイルをコンパイルしようとしているんですが、Indy系のファイルが見つからないとしてエラーになってしまいます。
>[致命的エラー] F1026 ファイル 'IdBaseComponent.dcu' が見つかりません
cppのC++で書かれたフォームにIdHTTPを貼り付ける → コンパイルは通る。
pasのDelphiで書かれたフォームにdHTTPを貼り付ける → 上記のエラーが出る。
C++Builder2009に付属のdccコンパイラはお試し的なもので本格的にコンパイルできるようにするにはDelphi買えってことなんでしょうか?
それともなにか方法があるんでしょうか。
(まあC++BuilderだけでDelphiも利用できたら分ける意味が無いなとは思うのですが) >>466
Delphiユーザーですが、IdBaseComponent.dcuが存在するならば
そこへのライブラリパスが適切に設定されていないのでは?
という気がします。 Delphi糞ユーザーは口をはさまないで下さい。うざいだけです。 >>468
お前どこでも荒らしてるな
DelphiもC++Builderも持ってない癖に エンバカってバグ取り=アップデート(要お布施)ってこと?
XE6が出ても、新規では10万するのかな リリースビルドの設定でパッケージを含んで動的リンクさせないような設定にしたいんだけど
毎回プロジェクト作るごとに設定するの面倒だからデフォルト設定にしたいんだけどそう言う設定ないの? よくわからんけど。
「プロジェクト」->「オプション」メニューから設定してない?
「ツール」->「オプション」から設定すればデフォにならない? ビルドの設定はわからなかったけど、フォーマッタって言うの見てたら
ソースの成形っていうメニューがあることを初めて知って設定して実行したらいい感じになった
VSだとある程度自動だけどこれいいな >>472
どのバージョンを使ってるのか分からないけど
プロジェクトのデフォルト設定はXEまではあったが、XE2からは廃止された
XE2からはオプションセットにプロジェクト設定を保存して、それを適用しろという事らしい Builder XE4でNMSMTPってみつからないんだけど?
なくなった?
Indy使えってこと? NM*とはずいぶん古いな。とっくに作ってた会社もなくなってる。Indyでどうぞ。 入力補完でキャストすれば行けるのに出てこない候補とかあるんだけど
設定とかあるの? XE4ってデフォでAPIがWCHARになってるんだけど
WriteFileって引数はWCHARで通るのに書き出されたファイルみると
ちゃんとなってない・・・
アスキーの"123"ってかきたかったのに"1 2 3 "ってなっちゃうんだけど
これcharでやろうとしたら逆にエラーでるし
どうしたらWCHARでちゃんとWriteFileでファイル作れますかね? あれ?
試しにサイズにsizeof(WCHAR)かけたらちゃんとかけた
lstrlenは文字数を返してるけどWriteFileのサイズってバイト数のままかこれ
でもサイズが半分しか指定してなくて何でWCHARの2バイトのままかかれるのかwからん XE4で質問
ソフトを起動してからボタンを押すとメインフォームのVisible=falseにしたらフォームが消えるんですが
コンストラクタでやっても消えてくれません。
Application->ShowMainForm = false;
これやっても消えてくれません。
起動時にどうやったらフォーム非表示で起動できますかね? ApplicationEvents配置して、OnActiveイベントに記述 >>480-481
BOOL WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped)
HANDLE hFile; /* 書き込み先のファイルのハンドル */
LPCVOID *lpBuffer; /* ファイルに書き込むデータのアドレス */
DWORD nNumberOfBytesToWrite; /* 書き込むバイト数 */
LPDWORD lpNumberOfBytesWritten; /* 書き込まれたバイト数のアドレス */
LPOVERLAPPED lpOverlapped; /* 重複I/Oに必要な構造体のアドレス */
これでしょ?
引数は
LPCVOID だからもとからバイト数だよ。 MainFormが表示されてから、表示を消さないといけない
MainFormが表示される前のタイミングで、表示を消しても無意味
ノーマルなやり方は
MainFormのOnActivate()イベントで、消すのが普通だろうな どういうのを作りたいのかよくわからんがフォーム自体いるのかね
消えたまま起動して後からまた表示させることもあるんかな
トレイに入れておくとか、あるいはバックで動かしたいのか
フォーム使わないなら最初から無いまま作ればいいんだし まあ、オプションの自動生成フォームから、MainFormを外せばいいんだけどね XE4とwin8で一回目にダイアログを実行してなにかファイルを選択して、
二回目にダイアログを実行したとき、フルパスで表示されます
ファイル名だけを表示させる方法を教えてください。
昔はファイル名だけが表示されたと思うんですが、、、、
ttp://www.dotup.org/uploda/www.dotup.org4608757.png >>489
それやると次は、「プログラムを起動しても何も起きません」ってなるんじゃね? >>483
フォームの〜.cppじゃなくて、プロジェクト名.cppのRun()の前で
Application->ShowMainForm = false;
やるんじゃないの? Application->ShowMainForm = false; はコンストラクタでおk >>483で、
> ソフトを起動してからボタンを押すとメインフォームのVisible=falseにしたらフォームが消えるんですがコンストラクタでやっても消えてくれません。
> Application->ShowMainForm = false;
> これやっても消えてくれません。
って書いてあったから流れ的にコンストラクタで Application->ShowMainForm = false; やっても消えないという意味だと解釈してしまったが
質問者は コンストラクタで Visible=false しかやってないってことなのか。
>>493
自動生成のフォームのコンストラクタはもとからRun()の前だよ。 コンポーネント作ってるんだけど、ファイル名を格納するStringで
オブジェクトインスペクタにファイル選択ダイアログを表示させるボタンを表示させたいんだけど
どうやったらいいのでしょうか プロパティを文字列型じゃなくてTFileName型に変えたらどう? あら。ごめん。俺あんま経験なくてw
なんか、プロパティエディタ登録すればいいらしいんだが、
DesignIntf.pasやDesignEditors.pas,VCLEditors.pasのデフォルトや標準のエディタが
登録されてて、これで間に合わなければ自分で作るらしい。
登録にはRegisterPropertyEditorとかいう関数で。
って、俺じゃあれだから、プロの意見の待った方がいいな。 VCLEditors.pasにTMPFileNamePropertyというTMediaPlayer用の
File Open Dialogを表示するプロパティエディタがあるから、これを真似れば
いいんじゃないかと思う。 初歩的な質問ですみません。
for文やwhile文などでくりかえし処理をすると,繰り返しの回数が99回目までは問題ないのですが
必ず100回目で「sqrt domain error」が必ず出ます。
数値を色々変えてみても必ず起きます.
ssqrt domain errorはルートの中身が負のときでるエラーだと思うのですが
それ以外に出る原因はありますか? そう言う場合はまず作ってるプログラムから離れて間違っているのか確認してから
そうでは無いなと確信してから自分のプログラムを疑う物ですよ >>501
√に入れる変数にunsigned入れたらいいんじゃね? デバッグすればいいだけじゃん
ループの100回目でブレークポントを張って
変数の値を確認すればよい void __fastcall TForm2::ButtonWRClick(TObject *Sender)
{
char *tmp;
CamRegInfo ci;
ci.devaddr = 0xba; // dev addr
unsigned short val[3];
int addr = 0;
int data = 0;
tmp = strdup(EditAddr->Text.c_str());
sscanf(tmp,"%02x",&addr);
free(tmp);
tmp = strdup(EditData->Text.c_str());
sscanf(tmp,"%02x",&data);
free(tmp);
ci.devaddr = addr;
ci.data = data;
USBWriteData((unsigned char *)&ci,6,0x07); // to I2C Controller
}
2010年くらいにいただいたビルダーのサンプルプログラムを今,実行しようとしていますが
[BCC32 エラー] Unit2.cpp(204): E2034 'wchar_t *' 型は 'const char *' 型に変換できない
[BCC32 エラー] Unit2.cpp(204): E2342 パラメータ '__s' は const char * 型として定義されているので wchar_t * は渡せない
というエラーがtmp = strdup(EditAddr->Text.c_str());に出ます.
調べるとこうするとエラーが取れました.tmp = strdup(AnsiString(EditData->Text).c_str());
しかし,新たに[ILINK32 エラー] Fatal: ファイル 'K.OBJ' を開けません
というエラーが出て困っています. >>511
オマエのクソレスの方が何の役にもたってないことに気付けボケ 仮想デストラクタをcppに書くと必ず、
「ここには記憶クラス"virtual"は指定できない」ってエラーが出るんだけど
どうしたらよいの? >>513
ヘッダに宣言書いているでしょ?
CPPに書くデストラクタの本体には virtual はつけない。
~~~~~~~~~~~~~~~~~~
もしCPPに書いているのがclass宣言で、その宣言に virtual をつけるのはOK
もしそのようにしているのに怒られると言うなら具体的にコードを書いてみて >>514
ありがとう!ヘッダに宣言書いていました System.DateUtils.hppをインクルードすると、
W8058 ヘッダーに初期化データが含まれているためプリコンパイルヘッダーを作成できない
ってエラーが出るのは、回避不可能なの? >>516
そんなのしょっちゅうだよ
インライン展開はほんとうに控えめだし 継承される可能性のあるクラスは、仮想デストラクターを置けって言うけど、
ヘッダーファイルに↓の置いておくだけでよいの?
virtual __fastcall ~TSample(); >>518
それでもコンパイルエラーは出ないけど、いざ実行されるとランタイムエラーが出るんだっけ
確かそんなはず >>519
特にエラーは何も出ずに実行できるのだが >>518
本体(デストラクタの実体)がないからエラーになるはずだけど
[ILINK32 エラー] Error: 未解決の外部参照 '__fastcall TSample::~TSample()' が x:\xxx\xxxx\xxxx.OBJ から参照されました
宣言したけど使っていない場合はエラーも出ないし実行に支障はない
これはメンバ関数も同じだよね
ヘッダーに書きたいなら宣言にあわせて実体も書いておくものじゃないだろうか。
virtual __fastcall ~TSample() { }
抽象クラスでの純粋仮想デストラクタを考慮するなら
virtual __fastcall ~TSample() = 0;
になるだろうし。
仮にその(>>518)宣言で問題にならないにしても、継承したクラスで問題起きるかもしれないから書いておいたほうが無難だとは思う。 アプリの起動時に、しなきゃならない処理がたくさんあるんだけど
(INIファイルの読み込みとか)
メインフォームやスプラッシュフォームのコンストラクターとかに
書くと気持ち悪いから、アプリケーション初期化関連のメソッドを
並べたクラスを一つ作って、メインフォームのコンストラクターから
インスタンス作って全部やらせるのって、汚いやり方?
1つの仕事を順番にやるだけのクラスになるんだけど。 >>521
これだと、"純粋関数定義の構文が正しくない"と怒られてしまうのだけど。。
virtual __fastcall ~TSample() { } >>522
別の関数作ってそこにたくさんの処理を書いてコンストラクタからその関数を呼び出すだけじゃだめなの?
>>523
そのエラーがどういう状況で発生するのか良くわからないのでお役に立てない感じ。
どういうクラス宣言しているのかちょっと気になります。 >>524
ありがとう。
> >>522
> 別の関数作ってそこにたくさんの処理を書いてコンストラクタからその関数を呼び出すだけじゃだめなの?
メインフォームに関係ない処理を、メインフォームクラスに置くのは気が引けて。。
> >>523
> そのエラーがどういう状況で発生するのか良くわからないのでお役に立てない感じ。
> どういうクラス宣言しているのかちょっと気になります。
ごめん。IDEを再起動してみたら、普通にコンパイルできた。謎だ。 共通なグローバルな初期化はメインのデータモジュール作って、データモジュールのコンスタラクタとかでやれば??
で、各フォーム特有の初期化は各フォームのコンストラクタでやる。
「プロジェクトオプション」の「フォーム」で指定する作成順序はメインデータモジュール->メインフォームの順で。
俺はだいたいそうやって作ってるけど。
大抵、データベースアプリとかで、グローバルな接続コンポはデータモジュール作って、そこに置くように、
その延長でそうしてる。 >>526
TSQLDataSetとかTSQLConnection とかでなく、
自作のクラスを包含させるっていうこと?
ド素人で申し訳ない。。 まず、データモジュールってコンポーネントはしってるんだよね??
グローバルな設定の初期化(終了化)するタイミングはデータモジュールのコンスタラクタ(デストラクタ)なわけで、
後は、君が書いたクラス次第でしょ。ここが何をして、どう使うクラスになってるのか全く想像できないから、
どう説明したらいいか・・ それか、>>572はこういうことか。
もちろん、君のクラスはTComponent派生して、別にIDEに登録して使うわけじゃないと思うから、
TSQLConnectionみたく、IDEから貼り付けできないけど、そのクラスがインスタンスが
アプリの開始から終了までずっと、
存在する必要があるなら、データモジュールに、フィールド(プロパティ)を追加して、データモジュールの
コンストラクタ(デストラクタ)で作成・破棄してもいいし。そこはやっぱ、君のクラスが何してるか、どう使うか次第・・ >>528
> まず、データモジュールってコンポーネントはしってるんだよね??
知らないんだ。リファレンスを見たところ、別のコンポーネントを一括管理するのかと思っているのだけど。
WinSocketの初期化、INIファイルのロード、各種スレッドの起動等を
メインフォームの表示前に終わらせてしまうのが目的。
元々やろうとしてたのは、この各処理を順々にやっていくパブリックメソッドを持った
アプリ初期化用クラスのインスタンスをメインフォームクラスで生成して、
そのメソッドをコールしようと思っていたのだけど。。 >>リファレンスを見たところ、別のコンポーネントを一括管理するのかと思っているのだけど。
そう、それで、別にコンポーネントのためだけに使わなくてもいいわけで、そこに、グローバルなコンポーネント以外にも、
自作のグルーバルなクラスのインスタンスをプロパティ経由とかで、外部に公開してもいいわけで。そこはご自由にと。
>>元々やろうとしてたのは、この各処理を順々にやっていくパブリックメソッドを持った
>>アプリ初期化用クラスのインスタンスをメインフォームクラスで生成して、
>>そのメソッドをコールしようと思っていたのだけど。。
これをそのまんま使うなら、インスタンスの生成とメソッドコールを単にデータモジュールのコンストラクタに移動するだけ終わりじゃ? >>522でキミが 「メインフォームやスプラッシュフォームのコンストラクターとかに書くと気持ち悪い」と言ったコードを「データモジュール」のコンストラクタに書けばいいんだよ。
データモジュールは、C++Builderのバージョンがわからないのであれだけど、
自分のものは 新規作成→その他→C++Builderプロジェクト→C++Builderファイル にある
データモジュール自身にそれらを実行する関数を持たせて「別の関数作ってそこにたくさんの処理を書いてコンストラクタからその関数を呼び出す」ってのでもいいけど。 説明不足で本当に申し訳ない。
汚いやり方とか、気持ち悪いとか言ったのは、
クラス名を動詞にするなとか、データがなくで振る舞い(メソッド)だけのクラスは良くないって
CODE COMPLETEやら、ほかのWEBサイトに書いてあったからなのです。
そういうクラスを作ること自体が、オブジェクト指向と外れているのではないかと。 メソッドだけならクラスじゃなくて関数でいいしね。
データモジュールはヘルプみればわかると思うんだけど、
http://docs.codegear.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/Classes_TDataModule.html
>また,データモジュールのユニットファイルにアプリケーション全体に適用されるものをすべて入れておくようにしてもよいでしょう。
っていう記述がある。
主に非ビジュアルコンポーネントを“一元管理する目的”の TDataModule なので、それはつまり複数のフォームやユニットからのアクセスを受けるということ。
そういう特性を利用して WinSocketの初期化、INIファイルのロード などのアプリケーション全体に影響する設定や処理をそこで行うということ。
ただし「各種スレッドの起動」に関してはそのスレッドが何をするものなのかにもよる気がするので。
データモジュールのユニットファイルにそれらを実行する関数を書く。
データモジュールのコンストラクタからそれを実行する。 >>536
物凄くよく分かりました!ありがとうございます!
参考に一度実装してみようと思います! >>510
リンクありがとうございます.
一通り目を通しましたが,解決方法がわかりませんでした.
どの辺を特に見たらいいですか? シングルトンデザインパターンで実装すると、
マルチスレッド アプリケーションのコンストラクタでローカル静的変数を使うことは危険です
という警告が出るのですが、どう危険なのでしょうか。 初期化コードが複数回あるいは同時に実行されることがある、という この話かな?
ttp://d.hatena.ne.jp/A7M/20081027/1225088907 ありがとうございます。
マルチスレッド化する前にインスタンスが作られるのであれば、
#pragmaで消しても大丈夫な警告なのでしょうか? >>543
分かりました。ありがとうございます!
それから、関係ないのですが、クラス名の1文字目の"T"って何の略ですか?
"TApplication", "TForm", "TThread", "TCheckBox"等の"T"です。 XE4でTChartなくなった??
発見できないんだけど あ、あったわ。
変なタブに潜んでた
まあしかしお前等ってほんと糞の役にも立たないゴミ虫だよなww TurboApplication、TurboForm、TurboThread、TurboCheckBox。 XE4の品質は超クソだな
さすがにXE3から数ヶ月で出ただけのことがあるわ
で、このクソ品質を修正しただけのXE5に更新するには\40,000-って
どんだけクソな会社なんだよ…
今に分かった事じゃないんだけどさ ボーランド時代は安くて痒い所に手が届く使い勝手の良いコンパイラを提供してくれていたのだが それに無理があったからボーランドは手放したんでしょ? とりあえず今のC++ XE4 Update1で発生する不具合
・ビルド時にsaveMemのエラー?でコンパイラが起動出来無くなる事がある
・インクリメンタルリンクを有効にしているとビルド後のバイナリ起動時にDelayLoaderのエラー発生
・突然プロジェクトファイルに不正なタグが書込まれる ProjectExtensions問題 XE2から
・デバッグ実行のプロセス起動時にアプリケーションエラーでIDEごと落ちる
こんなにクソなんです
QCに入れたって日本人担当者とさんざん英語でやりとりした挙げ句、
再現出来ずだしな 可哀想に。
あの「日本人担当者」はボランティアなので多くを期待するな QC 入れるときに 「高橋さんはコメントしないでください」
って一文入れとけばいいと思う。
552 のバグレポートって、何番? 現象が再現しないってのはよくあることだわな
ちゃんと、再現性があるなら
その再現条件を明記しないからだろ
再現しないのは、特殊環境下でしか起きないこともあるしな
あるいは自作プログラムのバグが悪さをして不安定になってるとか
自分が遭遇したBuilderのバグは、ぐぐればまず間違いなく同じ現象が出てくるわ それは甘え。
特殊なのは高橋さんのほうかもしれないしな 「再現できない」ってのは「バグがない」ってことではないのだよ
「テストケースエラー」でもない。
言いがかりをつけているのはどっちかな BCB6で32bitアプリを作る時にはどうすれば良いんでしょうか。
16bitしか作れないんでしょうか。 64bitアプリの間違いか?
BCB6ならすでに32bitアプリなんだが。 何か作ったexeが16bitになってるんですが、どうしたらよいんでしょうか ああ、バージョン情報を含めるをチェックしたらバージョン情報が出てきました。
マイクロソフトのサイトに、exeファイルを右クリしてバージョン情報が出てこなかったら16bitアプリって
書いてあったんですが、右クリで出てきたので32bitなんですかね。 32bitになってました。どうもありがとうございました。 >>565
それはMSのアプリに限っての話だろう。
32bitアプリはバージョン情報を含める事も含めない事もできる。
16bitアプリはバージョン情報を含める事ができない。
MSは自社アプリには必ずバージョン情報を含めるからバージョン情報が出ないなら16bitアプリっていう判断なんだと思う。
あとMSでなくても市販のアプリは基本的にバージョン情報含めているから同じ。
個人開発だと必ずしも含めているとは限らないからその判定法は成立しない。
と、そういうことなんだと思う。詳しくは知らないのだけど。 >>567 の素晴らしい考察に感動したっ!!
そして >>562 のあまりのお粗末さにも感動したっ!!
でさ、みんなちゃんとバージョン情報付けてる?
どうでも良いツールなんか手抜きしてバージョン情報付けなかったりするけど、
>>562に16bitあぷりでつか?って言われちゃうのか 初心者版で初心者かもしれない人に何いってんだか・・ XE2以降ではバージョン情報の設定機能はダメダメになってるよね
プラットフォーム別にバージョン情報を別に出来るって言うのは理解できるけど、
そのおかげで全ビルド構成で別々にバージョン情報が作られてしまう
「ビルド番号を自動更新」にすると、DebugとReleaseで別々のバージョン情報になってしまうという…
一体全体どういう連中が作ってるんだろうか XE2を使っています。
プロジェクトマネージャのウインドウで、各ユニットのフォルダ構造が
表示されていますが、この中でユニットになっていないものがあります。
(+ボタンを押すと、開くようになっていない)
プロジェクトファイルで、DependentOnタグが付いていないユニットが
該当するようなのですが、このタグを直接プロジェクトファイルをいじらずに
付ける方法はございませんでしょうか。 そこまで分かってるんならプロジェクトファイル直接書替えればいいじゃん?
あとは一度プロジェクトからソースを削除してもう一度追加してみるか
はっきりとは分からんけど、ヘッダファイルのインクルードガードのマクロ名で
ユニットになっているかどうかを判定しているように思えた >>572
ありがとうございます。
プロジェクトから削除〜追加でユニット化されました。
インクルードガードのマクロ名で判定しているのは確かだと思います。
そのため、#pragma onceが使う機会を持てません。 > 16bitアプリはバージョン情報を含める事ができない。
含める事ができないんじゃなくて、32bitWindowsからは「16bitアプリのバージョン情報」は読めない(バージョンタブが表示されない)ってだけかもしれないな。 最近、XE2でコンパイルすると
[ILINK32 警告] Warning: プロジェクト名.ilc 0x00010000 / 0x08000000
[ILINK32 警告] Warning: unknown heap name : 0x08000000 / 0x08000000
[ILINK32 警告] Warning: エラーが検出されました(LME286)
[ILINK32 警告] Warning: インクリメンタル リンクを実行できません -完全リンクを実行中...
[ILINK32 エラー] Error: リンクを実行できません。
とか表示されてしまうのだけど、何故? ちなみに、PCを再起動するとコンパイルできるようになる。
IDE自体の再起動ではダメ。 XPじゃないのか?
XE3SP1だったかSP2はそれで動かなくなってたな >>575
Avastとかのアンチウィルス常駐してるなら一時的に無効にしから起動して作業しないとダメだよ
Avastが疑わしいexeとか強制でフックしちゃうから異常動作連発する DriveComboBoxでデフォルトドライブの変更方法教えて
DriveやItemIndexを弄っても全然変わってくれない >>581
Drive プロパティに代入するだけで変わるけど。
wchar_t 型だけど char 型で代入しようとしてない?
Enabled プロパティとか false になってない? BCB6で、リッチエディットの上にマウスが乗った時のマウスカーソルを変更するのは
どうしたら良いんでしょうか 右向きの矢印が出ます リッチエディットのCursorをオブジェクトインスペクタで変更しておけばいいんじゃ? マウスカーソルの変更出来ました。ありがとうございました。 TImageで質問
ストレッチがtrueで
Image1->Picture->LoadFromFileで画像を表示させて
Image1->Widthを変更して再度表示させても以前のサイズのままで
更に読み込むと指定した大きさになるんですがこれすぐ正常なサイズで表示するにはどうしたらいいんですか?
Image1->Picture=NULLにしてもすぐには変わってくれなかったです >>587
Image1->Picture->Bitmap->Height = height;
Image1->Picture->Bitmap->Width = width;
がいるんじゃないかな。 TJPEGImageでjpgを早く読む方法教えて
何かVBとか画像データの検証をオフにしてロードしたら早くできるみたいなんで
これにそういうのあったら教えてほしいですです Form1.cpp の中で
自分で作った関数や変数の宣言をするのと、
Form1.h の中のprivate: や public: の所で
自分で作った関数や変数の宣言をするのでは、
メモリ使用量やプログラムの大きさ等が何か変わってくるのでしょうか。 >>593
ヘッダに書くと小さいコードだとインライン関数になるか
メモリー使用量やプログラムの大きさは大きくなるけど速度は速くなる傾向。
>>594
オブジェクト指向プログラミングはあまり関係ないような気がする。
スモールトークにもJavaにもC#にもヘッダーファイルの概念は無いから。 >>593の前者は非メンバで後者はメンバ、という読みだが >>595 >>596
そういう意味か!!
てっきり、インライン関数かそうで無いかだと思ったよ。
すまん。 オブジェクト指向はメモリやプログラムの大きさの事を考えて設計する方法では無い
そもそもオブジェクト指向勉強してこいとか、質問の答えにさえなってない スレッドのExecute()内で、StringGridを動的生成しようと
以下の様にしました。
TStringGrid *SG = new TStringGrid(this);
[BCC32 エラー] Get.cpp(103): E2285 'TStringGrid::TStringGrid(Get * const)' に一致するものが見つからない
エラーの意味が分からないのですが、
スレッド内で動的に生成してはいけないのでしょうか?
アドバイス頂けると助かります。 >>602
this はおまじないだと思っていました。
調べても良く分からないのですが、
空の StringGrid を作るには this の代わりに何を指定すれば良いのでしょうか?
作成したStringGridを貼り付けるGridFormを指定しましたが、
コンパイル時にエラーは出なくなりましたが実行時エラーが発生します。
TStringGrid *SG = new TStringGrid( GridForm ); Execute内でStringGridの動的生成って、ダメじゃないけど豪快だな
Synchronize()とか使ってメイン側で更新する必要があるので、あまり意味がないことが多々ある
スレッド側で必要なのはStringGridではなく文字列の配列だったり、
スレッド生成時にStringGridも生成すれば十分だったりしないかな? 有り難うございます。
やっぱり余りやらない方法なんですね。
経緯を話しますと現時点では、スレッド内からSynchronize()を使って
StringGridのテーブルを更新しています。
このSynchronize()を使った更新処理が重くてなんとかならないかと考え試行錯誤しています。
Queue()を使った方法も試したのですがStringGridがたまにちらつくのでイマイチでした。
(DoubleBufferedはtrueにしてあります。)
次に、StringGridの更新はスレッド内からしか行わないので、
StringGridをスレッド内で生成すれば、StringGridの所有権がスレッドになり、
Synchronize()しなくて済むので、
早く(並列)なるのでは無いかと考えて今に至ります。
勘違いしている点やアドバイスがあればお願い致します。 TStringGrid(Get * const)
なんだから、テキストファイルとかを渡すんだろ 更新処理が重いなら間引くべきだと思うよ
毎回更新する必要があるなら、それは並列化できない、つまりスレッド化の意味がない 有り難うございます。
間引く方向で検討したいと思います。
有り難うございました。 スレ違いだけどこの仕様、C#でも受け継いでいて本当クソだと思うわ
ヘジたんこういう所はダメなのね >>605
アプリケーション内で使うStringGridはそのひとつなんでしょ?
ただ更新はスレッド側からのみ、メインでやると重くなる、という理由ってことだよね?
重くなるというのが、更新処理中に他のメッセージを処理しなくなりGUIが応答しなくなることを言っているのだろうか?
それとも単純に更新処理に時間がかかるという意味だろうか。
前者でCPUバウンドな更新処理なら TStringGridには Cols プロパティ(TStrings*)や Rowsプロパティ(TStrings*)というのがあるので、
スレッドに TStringList を用意しておき必要な更新処理をすべてこのTStringList に対して行う。
TStringGrid への反映は Synchronize()で Cols プロパティや Rowsプロパティでスレッドの TStringList をAssign してあげればいいんじゃないだろうか。
極力 Synchronize() での処理はデータのコピーにとどめておけばいいと思う。
前者で演算よりもGUIの更新自体(例えば大量の Cells プロパティを更新するなど)が多いなら、
更新処理の合間に適度に TApplication::ProcessMessages を入れてあげればいいと思う。
後者で、単純に更新処理に時間がかかるというなら、更新処理を見直せとしか。
あとStringGridの所有権が誰だろうと、可視コンポーネントはWindowsメッセージによって(つまりメインスレッドで)制御されているのでSynchronize()しなくて済むということはないよ。 Application->ExeName が化けてるんだけど
Win32のフォルダんとこが.\\.とかなってるし
これちゃんと取る方法おしえてくださ
C++BuilderXE4 C++11から本格的にマルチスレッドと同期サポートが入ったから、案外行けるかも
あ、VCLはObject Pascalで書かれてるんだっけorz
.NETも4.5からAsync入ったしうかうかしてると横取りされちゃうぞ BCB6でデバッグの時にF12キー押したら出てくるCPUウインドウを出さないように出来ますか CPUを外してください
そうすれば出なくなりますから CPU外してもF12押したら出ました・・
嘘言うのはやめてくださいしんでください >>615
可哀想に幻覚が見えるのか
精神科をすぐに受診してください BuilderXE4で実行時にPanelのColorを変更するとキャプションが消えるバグがあるのですが
これを回避する方法を教えてください できた
お前等ってほんと糞の役にも立たないゴミだな^^ TPopupメニューをOwnerDrawする時に
表示されるメニューの幅と高さを任意に指定する方法をおしえて OnMeasureItemでWidthとHeightを変更する C++Builder2010でSQLConfigDataSourceがリンカエラーになるんだけど
odbccp32.libを追加してるのに。
ちなみに、XPでは正常にリンクできたのにWin7だとリンカエラーになるのですが
Win7でもちゃんとリンクする方法を教えてくださ Delphi XE4 Professionalを持ってるんですが、
C++BuilderXE5 Starter
のアップグレード版は使えますか? あー、
> Delphi StarterとC++Builder Starterの両方を購入して1つのマシンにインストールして「Mini RAD Studio」のように使うことはできますか?
> いいえ、1つのコンピュータには、1つのStarterエディションしかインストールすることができません。
なので、VMでも何でもいいので別のWindowsがいるので注意してね。 いやもうデルファイ使わないんでC++さえ使えればいいですw コンパイラはx86でC++11対応じゃないので、そこも気をつけて。 >>624
FastReportどこのタブにありますか?
言い忘れてましたがC++Builder2010ですう EX4にはFastReportのタブあったけど
2010には無いから2010ではFastReport使えないっぽいですねこれ
QuickReportも無いっぽいしどうしたらいいのこれ Rabeタブはありますが、Reportsがありませんえん あ、でも、RaveProjectで何か印刷のアレをビジュアルでできそうです
どうせ糞だろうけど頑張ってやってみますありがとうございました糞野郎共 TSoapConnectionを発見した!!XE4
んで、送受信はどうやってやるの? "44Op44O044Kn44Or44OK"みたいなUTF-8でアレされてるのを戻す方法を教えてください
C++BuilderXE4です。 >"44Op44O044Kn44Or44OK"みたいなUTF-8でアレ
よくわからん。日本g TOpenDialogでInitialDirを指定しても直前に開いたとこを開くんだけど
ちゃんと指定したフォルダを開く方法を教えてください >>641
サンクス、確かにOSはWin7でXPではちゃんといってたけど
しかし、C++BuilderXE4のバグなのかわからないんだけど
ExtractFileDir( Application->ExeName )で取得したexeのパスがバグってる
exe作るとWin32フォルダにdebugフォルダが作成されてそこで実行してるけど
取得したパスが必ずWin32フォルダの前に\.\が入ってる
これのせいでDialogのInitialDirやFileNameに指定してもうまくいかなかったんだけど
これちゃんとパスとる方法ありますかね? >>645
ありがとう、感動した。
ExpandFileNameをかましてやったらちゃんとパスがアレしてくれました
しかし今までちゃんとできてたのに急に腐った仕様に変えないでほしいなあ園馬鹿ってやっぱ馬鹿なんだな パスを見るとフルパスになってるんだけど
何故かWin32フォルダの前に必ず\.\が付加されてる。
ちなみに、Win32フォルダが無い別フォルダで実行するとちゃんとしたパスがゲットできてる OSの仕様が絡んでいそうな・・・ よくわからんけど 設定ファイルか何かでそう書いてるだけじゃないの
今まで気づいてないだけとか リンカのファイル出力先がそうなってるから、
デバッガに渡される実行ファイルのパスもそうなる
リンカの出力先指定:.\$(platform)\$(config) プロジェクトオプションでC++(共有オプション)の中間出力と最終出力ディレクトリにある.\を削除すればOK 追記 参照ボタン押すとフルパスになるから文字列からダイレクトに削除してね >>651-653
それやっちゃうと違うPCやフォルダ変えてコンパイルする時はまたその設定が必要なのでは? XE4のTMediaPlayerで現在再生中かどうかを調べる方法を教えてください ゴメン、Modeじゃ分からんかったわ
Notify = trueにして再生開始して、OnNotifyイベントで成功が通知されたら再生終了だ
現在再生中という情報を直接取ることは出来ないみたい
俺がやったのはOnNotifyでMode==Playingで処理結果が成功なら再生終了と判定したよ >>657
ありがとうございます。
OnNotifyは終了だけを検知したかったのでNotify=falseで使いたいんですが
自分で再生したのはわかるのでOnNotifyが来たら終了って判断できるのですが・・・
そういうのがあったらアレかなとおもって聞いてみましたがアレでしたね つーか、今改めて試してみたけど>>656でおkかも
Notify=falseならModeで再生中とそれ以外の区別がついてる感じ フォーム非表示の状態で作成されたフォームのListViewがクリアできない
一旦表示させないとListView->Items->Clear( )受け付けてくれないんだけど
これ非表示のままならどやってリストビュークリアしたらいいの?? >>662
どういう状況かよく分からない
その症状が出る最小のコードでも晒してくれればと思うが。
少なくともこちらでは「フォーム非表示の状態で作成されたフォーム」での
ListView->Items->Clear( )は正常に出来ている。 >>666
処理の前にHandleNeededを呼ぶってこと >>667-668
返信遅れて申し訳ない
C++Builder5の時からそうだったんだけど
普通にフォームにListView貼り付けて設計時にデータ入れときます
んで、そのフォームのコンストラクタでListView->Items->Clear( )すると消えてくれない
ちなみに>>662で非表示でクリアできないうんぬんは消すタイミングの問題で
別フォームのボタンを押したらListViewのあるフォームのListView->Items->Clear( )したら消えますよ >>668
ちなみに、フォームのコンストラクタで
HandleNeeded();
ListView->Items->Clear( );
やっても消えませんでした。 あ、すみません。
間違いました。
↓ですよね。
ListView->HandleNeeded();
ListView->Items->Clear( );
これやったらちゃんと消えましたすみまsん 久々に引っ張りだしてBCB6使いましよ。
未だに便利だな。 >>672
ありがとゆ
しかし、長年CBuilder使っててHandleNeededって初めて知ったぽ・・・ XE4までは使ってたんだけど64bitがClang使ってて怪しいし、C#の方が便利なんで
最近こちらばかり使っている C++BuilderでC#って出てる?
てか、ここID出るよういんあったのね。 以前は.NET向けの何かがあったが今は無いよ
>>676 はVS使ってるって事でしょう ちなみにBCB6からはどれに移行するのが便利かな?
最新の安いの買えば古いのは落とせるんだよね? まず2007。次はXE5で。古いのが使えるのはPro以上で、Arcだろうがアカデミックは除外。 Unicode以前に移行するくらいなら6のままで良いんじゃないの?
ちなみにC++はXE以降で何も変わってないよ
それどころかXE2以降では訳の分からん不具合が結構ある
2009から使ってるけど、Win32VCLならXEが一番まともだと思う >>681
>>682
ありがとう。最新版への移行は試してみたんだけど、確かにUnicode周り
が大変な感じだった。コンパイラは変わってないのね。
2007借りて試してみてダメだったら6のまま現役で作ります。 5って一番よかったわ。
俺もまだ5を使ったりするけど最近はXE4が多いかな64ビットアレできるし TListViewはどやって動的に作成するの?
ListView1 = new TListView( this );
で作成してもAddすると落ちるんですが >>692
クラス自身。だからクラスのメソッド内でしか使わない。
class hoge{
private:
class hoge *this;
};
こういうこと
多少の差異はあるものの >>693
>>692が聞いてるのはそういうことじゃなくて、thisとして何を渡してるのかなんだと思うが。
この場合のコンストラクタのパラメータには既に表示済の(hwndが有効な)TWinControlか
その派生クラスのインスタンスを渡すのがいいと思う。普通はTListViewを乗せるフォームかな。 1も使ったことある
超昔に会社で
Delphi2 相当で
後に連番が繰り上がって 2 がなくて
3,4,5 になっていったのを克明に覚えている 一番最初の記念価格のやつ買いました、しかも本屋さんで。
バージョンの番号が付いていなかったけど、ちゃんとバージョンアップされていきましたね。
単発で終わるかも?って思ってました。 >>693
横着せずにまずは新しいプロジェクト作って簡単なコードで TListView を動的作成したほうが原因つかみやすいだろ。
ちゃんとParent設定してるかとか。 XE5ってXE4から何が変わったの?何か追加された? XE4が腐った。
ソースをコピペしたら意味不明なエラーが出てコンパイルするとリンクエラーが出るようになる。
再起動したらまたちゃんとコンパイルもリンクもできるけどめんどい
エロい人助けてエロい人 XE5を買いなさいと言うエンバカからのお告げじゃない?
まったく直ってないと思うけど
意味不明なエラーってどんなんだよ >>702
エラー内容も書かないとかw
再インストールしろ だって、エラー内容書いたってお前等馬鹿だからどうせ解決しないし
>>703-706みたいなゴミレスは不要なんですよ。
知らないならレスしないで下さい。ウザいだけです。 解決するかどうかは別として開発者ならエラー内容なしにエスパーするのは難しいって知っていると思うが。
専ブラの初心者ユーザ並みの能力だな。 C++Builderで作ったっぽいプログラム資源がある
ただしC++Builderのバージョンや、
どんなカスタマイズ(コンポーネントやパッケージ)を用いているのか
さっぱり不明
プログラムの修正依頼をされたけど
最新版のXE5を使えば、開発できるもんなの?
やってみたが、コンパイルエラーが腐るほど出る >>all
サンクス
>>716
本当にこれでいいのかよくわからん資源を集めて
PGを修正しまくって
コンパイルはどうにか通した
ただ、リンクでエラーになる
[ilink32 エラー] Fatal: シンボル @$xp$25Endigrph@TDibGraphicClass の
サイズがゼロか、オフセットが大きすぎます
(モジュール 'C:\PROGRAM FILES\EMBARCADERO\
20786_ENVISION_IMAGE_LIBRARY\ENV201\TRIAL\CB6\ENDIGRPH.OBJ' 内)
EnDiGrph.hpp obj dcu は無かったのでダウンロードした資源 Envision Image Library とかいうのを
取り込んでいるっぽい
それが古い版だったのでXE5対応のやつをパッケージで
取り込んだ
しかしdcuファイルはあるが、hppファイルが無いため
クラス定義なしのエラーになる ああなんかそのエラーとかって requires セッションになんか加えるんだっけな? EX4のTProgressBarで質問です
ProgressBar->Max = 100;
ProgressBar->Position = 0;
for( int i = 0; i < 100; i ++ ){
ProgressBar->Position ++;
}
ProgressBar->Position = 0;
こうした時にProgressBarの表示が半分くらいのとこで終わるのですが
最後にPosition=0をしないと最後まで表示はされますが
処理が終わってからProgressBarが最後まで行くまでに時間がかかってます。
これ以前のようにPosition++した瞬間にProgressBarの描画がされるようにする方法を教えてください >>721-722
いえいえ、そういうことを言ってるのではなくてですね
TProgressBarが意図的に推移バーを遅延させてるんですよこれ
XE4で>>720やってみてもらうとわかるとおもいますが
そして>>723は視ね Application->ProgressMessage() じゃないの?
最後まで言ったのに描画更新が行われず前回の更新時の画面で止まるってのはたまによくまれにある。
あとプロパティ値に対して ++ ってOKだっけ?
>__property int Position = {read=GetPosition, write=SetPosition, default=0};
展開すると GetPosition()++ 見たいになる的な糞な仕様があったけど、
当然改善されているのかな?
ProgressBar->Position = i+1;
に変えるか
ProgressBar->Position = ProgressBar->Position +1;
にするかとか。
EX4なんて新しいもの持ってないんで最近のことはよくわかんね。 ProgressMessage()
ってはじめてみた Application->ProcessMessages()か
C#で言うとApplication.DoEvents()みたいな
XPマシン電源消したからわからん ×ProgressMessage()
○ProcessMessages()
ループ処理させる時とかでイベント割り込ませるのによく使うよな
掴んだままだと応答なしとか出て行儀の悪いプログラムになるし ProcessMessagesで、手動でメッセージループを回すケースが必要になるなんて
どっちかというと、プログラムの設計が行儀悪いからだと思うけど。
プログレスを表示するってことはそもそも、ある程度時間のかかる処理なわけで、
そんな処理をUIスレッドで行なおうとするからProcessMessagesせざるを得なくなるわけで、
サブスレッドでそもそもやれと思う。 >>720
つか、そもそも、Windowsシステムにおいて描画の処理って優先度低くて、暇な時やるってスタンスだから、
for( int i = 0; i < 100; i ++ ){
ProgressBar->Position ++;
}
でループで頻繁に回しても、描画まとめられちゃうからね・・ >>733
いえいえ、違います>>720は例です
以前はちゃんと描画されてた(Builder5)ので
いつからかはわかりませんが、勝手に遅延描画されてるんですよ >>734
自分(>>725)もBuilder5持ってる、試してみたけど確かになるね。
2009で試したけど、こっちもなる。
MarqueeInterval というプロパティ値は?
>アニメーション表示の更新間隔(ミリ秒)。これにより、強調表示部分が動く速度を設定します。デフォルトは 10 ミリ秒です。値を大きくするほど、速度は遅くなります。
2009でのデフォルトだと10(ミリ秒)
Builder5にはなかったプロパティ。
確認してもダメと言うことならたぶんコントロールとしての動作仕様が変わったとかじゃない?
とりあえず ProgressBar->Positionを更新した後にProcessMessages()を呼び出せばちゃんと更新されるようになる。
もしそれでも更新されないならコードがおかしい(最適化のせい)とかかも知れない。 VisualStyleの影響とか、VCL Styleの影響って事はない? > ProgressBar->Position ++;
この書き方はしたこと無かったな、自分は
ProgressBar->StepIt();
いつもこう書いている
あるいはStepBy(1);
違いがあるのか、無いのかは知らないが 最近XE4 C++ Builderを使い始めた初心者ですが、次のような
コードでエラーが出ないのは何故でしょうか?
char *ptr = "ABCD";
*ptr = 'X';
普通Visual Studio 2010等ではコンパイル・エラーとなりますが、
XE4ではコンパイルが通ってしまいます。。。。(´・ω・`)
XE4の場合は上記のようにポインタを文字列リテラルのアドレスで
初期化する際に、明示的にconst修飾子を付けない限り、文字列
はconst領域のデータ・セグメントには格納されないのでしょうか?
それともコンパイラの警告オプションの設定の問題でしょうか?
初歩的な質問ですみません。 URLを貼ろうとしたら「さくらが咲いてますよ」と言われるんだが
-dcオプション
無視されるみたいだけど >>739
多分嫌儲とJIMがやってるサクラサーバ除外処理でしょう。
面倒だからオープンにスレ立てますか。 ボタンのAnchorsで設計時にLeftとBottomして
実行すると配置より上にボタンが表示されちゃいます。
フォームはMDI子フォームでBorderStyle=bsSizeable
何が原因ですかね?
ちなみに他の画面でも同じ事やってるフォームありますがそっちは正常です。
Builder5 >>742
動的に作成してなくて設計時にボタンを貼り付けてます
>>743
フォームのScaledはfalseにしてます。
正常に表示されてるフォームと同じ設定にしてます
パネルにのっければすむ話なんですがなるべく画面を弄りたくないのでめんどくさいし。
他にアンカーをbottomとかに変更したら実行時に位置が変わる原因て何かありますかね? あー、もしやとおもってscaled=trueにしたらうまくいった。
これtrueにするとグリッドの表示がくずれるんだよなあ・・・
でも他のフォームはscaled=falseにしてるのになんでうまくいくんだろ 更に他の画面でやったらやっぱscaled=falseでもうまくいく
ダメな画面はステータスバーついてるんだけどこれが悪さしてる希ガス なにがどうめんどうくさいのかね?
オボコみたいにコピペでやればちょちょいのちょいだよ XE4が何かおかしくなったので再インスコしてるんだけどInterBaseのインスコで止まる・・
何度やってもダメ、全部アンスコしてからインスコしてもダメ
これどうしたらいいのさ・・・ いくら超初心者とはいえ
われわれは超能力者でもエスパーでもありませんので
もう少し詳しく状況を書いてもらわなければ
何も回答することができません しゃーないからInterBaseはインスコせずに際インスコしたら
今度はCodeSite Expressのインスコで固まった・・・
何この糞ソフト・・・
えん馬鹿ってほんと馬鹿だな・・・ Support KBに完全アンインストールのアーティクルがあったはずなんで、まずは全部消してみては? XE4のTTrackBarで1回動かすとOnChangeイベントが2回入るバグを回避する方法を教えて TTreeViewで質問ですが
起動時にフォルダツリーを作成してるのですが
これを指定した階層のフォルダを開いた状態にする方法を教えて
例えば aaa\bbb\cccって指定したらcccが開かれてるとか 展開された状態にしたいTTreeNodeのインスタンスを取得して、
ExpanededプロパティをいじるかExpandメソッド使うだけでしょ。 いや、そうなんだけどさ。
これ自分で指定ノードまで検索しないとダメなのかなっておもって 自分でそういう関数を作るしかない。
TTreeViewがディレクトリ階層を表しているとは限らないから。
継承でフォルダツリー専用に作られたクラスがあればあるかもしれないけど。 自分でフォルダを読んで
TreeViewしているんだから
その途中で
Expandしたいフォルダに該当するか判定して
該当していたら、開けばいいだけじゃん フォームのBorderStyleをbsSizeableにしてTChartを貼っているんだけど
フォームの大きさに合わせてチャートも大きさが変わるように
Anchorsを全部trueにしてますが、実行するとチャートの大きさが設計時より小さくなってしまいます
フォームのScaledはfalseにしてますが、これちゃんと設計時と同じ大きさになる設定を教えてくださ
C++Builder5 AnchorsでRightとBottomをtrueにするとそれぞれ幅と高さが設計時より小さくなってる
falseにして実行すると設計時と同じサイズ
他のフォームでも全く同じ事してるけどこんな現象にならない、なぜー 予めプロパティで設定しないで、コード上で(OnShowとかで)設定してみたら? ちと質問。
最新のC++BuilderXE6ってOpenMP使える? え、もうEX6出てるのかww
EX5ってあるの?4買ってからあんま経ってないのにもう6で照るのかあ XE6が出て1年近く経ってると思うぞ。
最近は毎年位のスパンで更新している感があるかな。 英語のメール送ってくるエンバカヤロゥ
日本語でサポートしろやエンバカヤロゥ XE6はまだ2月ちょっとだ…XE7は10月頃か?といわれてる。
ちなみにC++BuilderでOpenMPは使えない気がする。ぐぐったらVCでDLL化して使ってる、という話は見かけた。 まじかー
この前XE4買ったかっばだと思ってたのに
ちなみに、4と6って何か大きな違いある?
オブジェクトインスペクタがバグるのは健在なのかな つ ttp://docwiki.embarcadero.com/RADStudio/XE6/ja/Delphi_XE6_%E3%81%8A%E3%82%88%E3%81%B3_C%2B%2BBuilder_XE6_%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD >>770
チョンクス
androidのアプリって簡単に作れるのかなあ うーん、XE6欲しいけど10月にXE7出る可能性あるみたいだしー
てか、XE4で64bitソフト作ったらexeサイズが8MBになるんだけど
XE6ではもっとexe肥大化するのかなあ。
以前Builder5のバグでアプデしたらexeサイズがアレしたけど
これ以上でかくなったら圧縮してもメールで送るの分割せにゃいかんくなる >>768
あれ、2月位だっけ......
OpenMPは簡単に使えないんね......
ネットで調べたら、使ってる書き込みがあったから、
CLangとLLVMのお陰で普通に使えるのかなと思ったんだけど、
実際はVCでDLL化してたんね...... 安くて使い勝手が良かったから使ってたボーランド時代
今はバージョンアップされても何も魅力を感じなくなってしまった XE4のTImage3Dってデフォで変な形してるけどこれ正方形や長方形にするパラ教えてくださ >>779
3D表示は設計時カメラがデフォルトで使用される。
Viewport3DのUsingDesignCameraがTrueだと設計時カメラで表示されるが
falseにするとViewport3DのCameraプロパティに設定されたカメラで表示される。 >>780
ありがとうございます。
ちなみにViewport3Dってどこにありますか?・・・ ViewportsグループにViewport3Dありました。
これで色々試してみますありがとう うーん、うまくいかない・・
手順として
1.Viewport3Dを設置してのUsingDesignCameraをfalseに
2.TCameraを設置してViewport3DのCameraプロパティーをCamera1に設定
3.TImage3Dを設置
カメラとImage3Dの関連付けというかがわからない
カメラ動かしても特にImageの方は形かわらないですし
これうまく使えたら結構色々できそうで良さげなんだけどなあ フォームがアクティブになったのを検知する方法おしえて できた。
お前等ってほんと糞の役にも立たないカスだな^^ 教えてもらっても感謝もしない
質問されても答える気もない C++Builder5 使ってるんですが、
TComboBox、TListBox、TToolBar、TListView にbuffer overflowする欠陥があるってことなんですけど
Builder5だとVCLソースを修正するなんてことできないですよね?
あとこれも。
http://support.embarcadero.com/article/44015 ソースがついてりゃできるし、ついてなきゃできない。エディションによるとしか。ところでBMPの件はともかく、
そんな話あったっけ? XE6を使っています ビルド構成をdebugにして実行すると正常動作しますが
Releaseにして実行ファイルを作成すると起動はするのですが異常に重たい
動作になります(スレッドでRS232Cの通信をやっていて通信が重くなる)
ちなみに、XE6を起動した状態(そのプロジェクトを読まない状態)で
その実行ファイルを実行すると正常に動作します。
実行ファイル作成時のオプションなどをいじれば直るものなのでしょうか?
OSはwin8です。 >>793
最適化とかの影響でおかしくなることもある。
動作が変わってしまう場合はまずdebugと同じにして徐々にはずすとかするといいかもしれない。 >>794
解決しました、DEBUGと同じにそて最適化をはずしてもだめだったのでスレッドの速度を
はかってみたところ
Sleep(1);
がXE6を起動しているときと、単独で起動しているときではSleepしている時間が違うように
みえました。
もともとのルーチンもあまりよくなかったので双方を調整し何とか正常に動作するように
なりました。
ありがとうございました。 Windows7にC++Builder6をインストールしたんだけど
統合環境のエディタ画面のスクロールバーが欠けて
半分くらいしか表示されていないのはテーマのせいかね?
Windowsクラシックに変更すればちゃんと表示されたけど
他に何か改善策ないかな 古いバージョンを使うなら
VM環境に入れればイイじゃん
VMにXPなりターゲットのOSを入れてそこで動かせばエエがな
さすれば、OSを最新に変えても
VMのファイルさえコピーすれば
再インストールする必要もなくそのままつかえるべ テーマで変わるのはあると思う。
自分はWindows7にC++Builder5。
テーマはWindows7ベーシックかな。
右側が若干はみ出しているがまぁ気にせず使っている。
Aeroだと問題ないようだけど。 Aeroでもベーシックでもダメだった
結局BCB6でコンパイル&デバッグする時は画面をクラシックに変えることにした
デスクトップを右クリックして変えるだけで手間もかからないし動作も機敏になるし
ウィンドウの端もキッチリ合わせられるので統合環境ではこの方が見やすいので
あとメッセージウィンドウをソースエディタとドッキングしてるとエラーが出たりしたので
これは外に出して並べることで対処した いまさらだが>>800だけど右じゃなくて左だったわ
まぁいまさらだけど C++Builder2010でメール送信できません。
どっかのサイトまんまのやり方です。
IdSMTP->Sendで固まってタイムアウトまで抜けません。
ちなみに同じコードをC++BuilderEX4でやると正常にメール送信できましたが
C++Builder2010ではどうしたらいいんですかね?
TIdMessage *msg = new TIdMessage( this );
IdSMTP->Host = "yahoo";
IdSMTP->Username = "Username";
IdSMTP->Password = "password";
IdSMTP->Port = 587;
//差出人
msg->From->Name = "From name";
msg->From->Address = "From address";
//宛先
TIdEMailAddressItem* to = msg->Recipients->Add();
to->Name = "To name";
to->Address = "To address";
//件名
msg->Subject = "Subject";
//本文
msg->Body->Text = "This is e-mail.";
//送信
IdSMTP->Connect();
IdSMTP->Send(msg);
IdSMTP->Disconnect(); > IdSMTP->Host = "yahoo";
これでメール遅れるの? builderにおいて、キーボードショートカットで定型文のコメント挿入したいんですが可能性ですか? ちょっとEX8で質問なんですが
DataModule1 = new TDataModule( this );
として
Destroyでdelete DataModule1; すると
そのdeleteの行で無効なポインタ操作のエラーがでるんですが・・・
以前(EX4)はこれでエラー出なかったのになんでですかね?? あれ?何かMdbModuleのDestroyが2回呼ばれてるなんでだろ
とりあえず理由はわからんけど、回避法はわかったからいいや あ、わかった、デフォで自動作成になっとった何この仕様変更 TStringGridでセルの文字をセンタリングとかさせるのってやっぱDrawCellでないとできない?
せっかくカラムクリックで自動で色が変わってくれるのにDrawCellで再描画するとその変がダメになるし
バージョンアップしても以前のコントロールが全く便利になってないなあ
どうでもいいとこに力入れすぎ C++Builder5 Enterpriseをアキバで1kでゲットしたが
使い道があるのか考えてしまった。。。
アップデートもDL出来ないし・・・ Builder5だとシリアルコード入れなくても使えるんだっけ?
自分はPersonalだけど(正規購入だぞw)古いDelphなら欲しいけど古いC++Builderはいらんなぁ
EnterpriseでもVCLのコードって付いてないんでしょ? Builder5もシリアル要りますよ。
バンドルとしてDelphi4 Professionalと
JBuilder3 Professionalが付いてる。
VCLのコードについては、クイックスタートマニュアルの6-2に
「C++BuilderのProfessional版とEnterprise版にはVCLのソースコードが付属しています。」
と書かれてますけどコレのことかな? VCLソースいいなぁ
というか秋葉のどこでげっとしたんだ?
行ってももうないだろうけど
そのお古はシリアルコードもちゃんと有効なん? Win7-32しかなくインストールはまだしていない。
6からは認証が必要らしいけど5までは不要だったような。
シリアルは有効かと思うが・・・
専用PC構築しないとな。。
あ、ディスクだけなら3-7-11にあったよ(笑)
買った物と同じ盤がばら売りされててびびったw
C5のEnt、C5のコンパニオン、D4のPro、J3のProの4枚。
他にもちらほら盤があったね。
ただこちらは1枚で1k也。。。
見間違いではないと思うけど違ってたらすまない。
行くだけ行ってみれば? シリアルは売買できなかったんじゃなかったっけ?誰か登録したやつ使えばライセンス違反じゃないの? >>821
やーやー
情報サンクス
確認だがその数値は住所の番地ということでよろしいか?
その前提でとりあえず行ってみたよ
秋葉原3-7という住所
まず結論だけ言おう
閉まってた(´・ω・`)
たぶん本当に倉庫整理していたら出てきたものを処分しただけなんだろうな。
数千円程度なら使える使えないに限らず試しに買ってみたかったorz >>822
シリアル単体ではないぞ。
プレスされたメディア付きだよ。
利用規約的に言えばメディアを放出した時点で
元オーナーはアンインストールしたものと判断します。
実際は知らんけどさ。
>>823
もう一度言うけど3-7-11です。3-7では無いです。
もっと言うと区が違います(笑) 3-7-11だけじゃ分からん
教えたくないってなら別に良いけど 外神田のほうか?
でも区は同じだが
まあ今度行ってみよう うーん、お店に対する配慮というか何と言うか。
と言うか秋葉原の住所って難しいか? 難しいというよりも住所気にせずに行くから
秋葉原って住所は台東区だったんだな
アキバと言っているのが駅周辺という意味じゃなく住所そのままだと思ってた 入れ違いで書き込みがあったようだ。失礼した。
もうわかったようだね。ご武運を。 >>829
どうもありがとう
無事ゲットしてきた
J3以外全部確保してしまった
ただC5のコンパニオンって家帰って気づいたけど持ってたんだよねwww
インストールも無事成功ですw >>830
おめ。
無事見つかったようで何より。
しかし何故にC5のコンパニオンだけ持っていたのやら。 あーなんかすみません
本当自分の記憶力の悪さに呆然とする
なぜ持っていたかと言うと・・・とディスクの山を漁ってみたが持っていなかった雰囲気
何か別のソフトウェアのオプションディスクと勘違いしてたようですorz
ムダナレスヲサセテシマッテゴメンナサイ・・・
お店でその勘違いをしないでよかったw MDI子フォームのShowイベントでそのフォームを閉じたい時があるのですが
Closeで閉じると一瞬そのフォームが表示されて閉じられるので
表示されずに終了する方法を教えてくださ EX8なんだけど、ツールボタンの標準がツールバーから抜けてウィンドウになっちゃったんだけど・・
これまたツールバーに収める方法教えて・・・
何かダブクリしたら勝手にウィンドウになって戻せなくなるバグなんとかしろよ円馬鹿・・・ 「ツール|オプション|環境オプション|ドッキング|自動オートドラッグドッキング」オフ >>837
できましたありがとう。
これずっとウィンドウになったままですごくウザくて助かりました 複数のコントロールから同じTPopupMenuを呼ぶようにしてるのですが
MenuItemClick時にどのコントロールからメニューを開かれたか調べるのはどうしたらいいですか Popupを自動にするんじゃなくて、コントロールのOnMouseUpイベントでPopupさせる。
そのときにどのコントロールが右クリックされたかを記憶する。
MenuItemClick時にはそれを読み出して利用する。 TADOQueryでSQL文が1024文字を超えるとエラーになるのですがどうしたら正常に処理できますかね 1024までもいかず900くらいでもエラーになりました。
文字数減らすとエラー出無いのですが・・・ XE4とかのオプション画面て画面左側がツリーで右側はツリーで選択された画面になるけど
これって画面の右側ってどうやってるの?
TPageControlでタブ消して複数の画面にしてるの?
他に方法思いつかないので他あったら教えてくださいね ブックオフにC++Builder6の書籍があったので買ってきたが
C++Builder5でも応用できるかしら? >>845
Formを複数用意してTPanelとかのコンテナをFormのParentにして(ry BCB5 から新しいバージョンの BCB に移行する場合、何に移行すれば
良いのでしょうか。
C++Builder XE とか C++Builder 10 Seattle とか色々あって良くわからなくて。 ハードウェアブレークポイント使っていると、ダイアログが出てくるのが面倒 >>852
UNICODE に対応したいから。
ソースコードを大幅に書き直す必要があるのは覚悟しています。
BCB の他に C++ で GUI が簡単に作れる開発環境があるなら
どれでも良いけど、VCL の知識が活かせるならそちらの方が
良いので。
種類が多すぎる割に情報が少なくて結局どれ選んだら良いか
わからないです。 UNICODE対応は2009以降だけど新しいの選んでおけばいいんじゃないの 移行するなら最新のシアトルでいいでしよ。シアトルでも、今まで通りVCL使えるし。もしくは流行りのクロスプラットフォームならFireMonkeyも使えるし。 ActionListでMainMenuとButtonと同じイベントに飛ぶようにしたのはいいんだけど
MainMenuから来たのかButtonから来たのかを判別する方法教えてくださいよ
これ面倒だし使う必要性が全くわからないんだけど。
同じイベ呼びたいならAction使わずに普通にイベントの飛び先指定すればいいだけだし・・・ TAction.ActionComponent 使え
必要性が理解できないなら使わなきゃいいじゃん
君はコマンドを無効にする時ボタンとメニューの両方のEnabledを操作したいのか? 昔あった、エディタ内のフリーカーソル無効化アドイン、URL無くなっちゃってて
移転先かソースコードある場所教えてください EX8で質問。
TThreadでコンストラクタにtrueを設定してコンストラクタでStart();を呼ぶとエラーになるのは何故??
Resume();使えば正常に動作はするけどResume使わずにStart使えってヘルプに書いてるし。
どうしたら正常にStart使えますかね? >コンストラクタでStart();を呼ぶと
このコンストラクタってのは何のコンストラクタ?
1)TThread派生クラスのコンストラクタ
2)TThread派生クラスを所有しているクラスのコンストラクタ
3)まったく無関係なクラスのコンストラクタ
http://qiita.com/7of9/items/09542ff8bace30712593
http://stackoverflow.com/questions/1624071/resuming-suspended-thread-in-delphi-2010
1の場合は、そのコンストラクタでの呼び出しは無理のようだけど
The crux is that the thread cannot start until the AfterConstruction is being called. >>864
1の場合です。
Resumeは普通に出来てたからStartもできるとおもってましたがダメなんですね。
仕方ないからコンストラクタを抜けてからStart呼ぶと正常に動作しました USB-IO2.0(aki)をC++BuilderXE8で動作させようとしています。
Bakesanのところのdllをダウンロードしましたが、全く動作しません。
C++BuilderXE8またはDelphiXE8で動作するサンプルプログラムをしりませんか?
コンポーネントもありませんか? フォームにPanelを張ってPanel->Align=alLeftとしてフォームの左に配置して
そのパネルにSplitterをくっつけて実行時にPanelを幅を変更させてますが
SplitterのAutoSnapをtrueにしてPanelの幅をめいっぱい小さくすると
確かにPanelがフォームにスナップされスプリッターだけが見える状態になります。
この時にフォームの幅をちょっとでも広げたり縮めたりすると
スプリッターをドラッグしても二度とPanelの幅を調整できなくなってしまいます。
スナップさせた状態にフォームサイズを変更しても正常にスプリッターでPanel幅を調整できるようにする方法を教えてください
EX8でございます LabeledEditって設計時にどやってラベルのキャプション返るの?
オブジェクトインスペクタに無いんだけど?EX8 >>869
TextはLabelじゃなくてEditのプロパティじゃまいか >>870
適当に答えた
>>868
C++Builder2009で見たけど EditLabel ってプロパティないだろうか
それを開くと Caption ってのがある
もしEditLabel というプロパティがないのなら分からん XE8だけど度々ツールボタンの配置が勝手に変な配置になることあるんだけど
これツールバーを固定とかできないの? typedef AA* BB; // error
typedef struct AA {
int a;
char b;
};
typedef struct AA* BB // struct が必要
見落としでず〜〜とはまってたorz InternetOpen関数が未解決の外部シンボルとなってしまうのですが、
#include <wininet.h>だけでは駄目なのでしょうか?
C:\Windows\System32にdllは入っているのですが。
バージョンはRAD Studio XE4です。 >>874
ちゃんと wininet.lib をリンクしているか?
ヘッダーをインクルードしただけじゃだめだったはず
もしくはTDllなど使って動的に読み込むか TStringGridでセルをレンジセレクトした時に
どこからどこのセルが選択されてるか知る方法を教えてくださいよ 久々のBCB6でアクチできん、
Win10にしてしまったからかな? bds2006の場合は .borland と .jiam のコピペでいけるけどな bcb6の場合はなんかレジストリの方を書き換えるんだっけかな? 教えて下さい。
TADOQueryでSQLでoleobject型のフィールドを作成し
そこにバイナリデータの書き込みまではできたのですが
それを読み込む方法と何バイトあるかを取得する方法をを教えてください。 C++Builder 10 Seattle トライアル版を落として使ってみたんだけど
プロジェクトを閉じて、次にまた開くと
直前に開いていたソースの状態が保存されていない
例)3個の.cppファイルを開いていて、プロジェクトを保存して閉じる。
次にプロジェクトを開くと、1個の.cppファイルだけが開いた状態になっている。
なんか操作をしないと、ソースの状態は保存されないのかな? 若干意味が分からないんだが「ソースの状態」って何?
「終了時に開いていたファイル(タブ)が起動時に開いた状態になっていない」って意味なのか?
普通の動作じゃないのか?それ
最近になって仕様が変わったんならあれだけど、過去にはそういう動作していたのか? A.cpp B.cpp C.cpp D.cpp E.cpp F.cpp とファイルがあり
プロジェクトを開くと なぜか
A.cpp E.cpp F.cpp が開いた状態になる
A.cpp B.cpp C.cpp だけを開いて、プロジェクトを(保存して)閉じても
次にプロジェクトを開くと
常に、A.cpp E.cpp F.cpp が開いた状態となる
これって普通なの???
でこれが普通だとして、この状態を変えて
プロジェクトを閉じるときの状態を記憶させる方法を知りたい訳 >>886
その動作は知らん
まず作成した「プロジェクト」は何?Windowsアプリケーションとか
各CPPファイルはプロジェクト作成した後に作成したものなのか、それとも既存のファイルをプロジェクトに追加したのか
各CPPファイルは何?フォームとかフレームとかユニットとか
考えられるのはUACのファイル仮想化の影響だろうか
そのプロジェクトはどこに保存されているのか >>886
ツール - オプション - 環境オプション - 自動保存の設定 - プロジェクトデスクトップ
チェックを有効
でどうかな。
C++Builder とか Delphi で生成したバイナリは変な関数や変数名が
勝手にエクスポートされるけど抑止出来ないのかな。
内部で使ってるクラス名とかが見えてしまうのがちょっと恥ずかしい。 CppBuilderやDelphiの文字見えただけで
プッておもってるっつーの。 XE8のTChartで設計時と実行時でタイトルのフォントやサイズが違うんですが
これ設計時と同じにする設定教えてくださ TPopupMenuのクリックイベントでどのコントロールがメニューを出したのかどこ見たらわかるんですか? >>893
PopoupComponentプロパティー Wndows7 Home EditionでC++Builder6使って32bitアプリを造ってるんですけど
昨日まで問題なく動いてたのがアクセスバイオレーションで
「モジュールCC3260MT.DLLのアドレスXXXXXXXXでアドレスYYYYYYYYに対する
読み込み違反が起きました。」というデバッガからのメッセージで停止するようになったんですけど
読み込み違反が起きたのはバイナリファイル(Asciiテキストや16bit整数、32bit整数が混合してます)を
fread()でファイル先頭にあるテキストデータをchar buf[4];にFILE *streamから1組を1回読み込むステップです。
昨日までは問題なく読み込みできました。
読み込みデータの内容ははネットで流通してるバイナリエディタで確認してあります。
「モジュールCC3260MT.DLL」はMSが作ったのかBorlandが作ったのかどちらでしょう。
開発用のPCはネットにつながってます。
マイクロ・ソフトがwindows updateでHDDの中を盗み見して破壊工作したんでしょうか
C++Builderの再インストールで解決するのか
Windows7の再インストールをしなければいけないのか
もっと簡単な解決策はありますか。 >>896
まず、そのDLLはborlandのもの
($BCB\Bin以下にもある)
そして、そのDLL(内のコード)がアクセス違反を起こしたからといって、そのDLLが悪いというわけではない
DLLを呼び出す部分で誤ったパラメータを渡しただけというのが普通 C++Builder XE7で以下のコンパイルエラーの対策を教えて下さい
”E2491:最大VIRDEF数を超過しました。再帰をチェックして下さい”
元のソースでは下記のようなクラスが再帰的に定義されています。
どなたかこのエラーの回避方法などあったらアドバイスをお願いします
/***********************************************************************/
class _NullItem {
public:
std::string nullpo;
std::time_t null_time;
private:
friend class boost::serialization::access;
BOOST_SERIALIZATION_SPLIT_MEMBER();
template <class Archive>
void save(Archive& archive, const unsigned int version) const {
static_cast<void>(version); // No use
archive & boost::serialization::make_nvp("nullpo", nullpo);
archive & boost::serialization::make_nvp("null_time", null_time);
}
template <class Archive>
void load(Archive& archive, const unsigned int version) {
if( version == 0) {
archive & boost::serialization::make_nvp("nullpo", nullpo);
archive & boost::serialization::make_nvp("null_time", null_time);
}
}
};
BOOST_CLASS_VERSION(_NullItem, 0); > E2491 最大 VIRDEF 数を超過した:再帰をチェックしてください (C++)
>
> 割り当てられた VIRDEF シンボルが多すぎます。
> コンパイラは,変換ユニットごとに使用できる VIRDEF の数を制限しています。
> 現在,この VIRDEF の制限は 16384 です。
>
> たとえば,プログラムに 16384 個を超える関数があると,このエラーが発生します。
さぁ、まず心当たりは? >さぁ、まず心当たりは?
心当たりがあります。関数数を数えたことはないのですが、8000位はあります。
変換ユニット毎との制限ということで、ユニットの内容を分割したところ、エラーは出なくなりました。
取り合えずこれで様子見とします。
ヒントをありがとう。 >>896-897
バイナリをテキストモードで読んだとか?
ファイルポインタが指す場所が、間違っているとか、
ファイルサイズ以上の場所を指しているとか >>896
メールなどで個人的やり取りしてソース出せるなら見てみますが。 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
h 質問ですが
フレームにStringGridを貼り付けてて、そのフレームをフォームに貼り付けているのですが
フォームを開いてもフレームのStringGridの一切のイベントが入ってこないのですが
これどうやったらイベント入るようになりますか? TSpeedButton の Down プロパティーのヘルプに
Caption プロパティが true の場合,選択された(押されている)状態の
ボタンを 1 個ユーザーがクリックすると,クリックしたボタンの選択が
解除され Down プロパティが false に設定されます。
と,Caption プロパティが boolean みたいに書いてあるけど何かの間違い? 何かの間違いというか今のヘルプは適当だから疑問に持たず脳内変換するw
自分でもCaption プロパティじゃなくDown プロパティの間違いだと分かっているだろ ほれ。
GroupIndex プロパティが 0 より大きい場合,Down プロパティを true に
設定するとボタンを選択できます。同じ GroupIndex の値を持つ、
選択されていない(押されていない)状態のボタンのうちの 1 つを
ユーザーがクリックすると,クリックしたボタンが選択され Down
プロパティが true に設定されます。
AllowAllUp プロパティが true の場合,選択された(押されている)
状態のボタンをユーザーがクリックすると,選択が解除され Down
プロパティが false に設定されます。
...
メモ:GroupIndex が 0 の場合,ボタンをクリックし終わったときに、
選択状態は解除されます。 C++Builder互換の廉価版コンパイラでもどっかで出してくれないかなぁ
エンバカ高いダロの価格表みて唖然としたゎ 簡単なメッセージボックスを表示させたいのですが下記の記述だとその下のエラーが表示します。
メッセージボックスに関するヘッダーファイルはincludeしてませんがそのせいでしょうか?
初歩の初歩的な質問で申訳ありませんが教えてください。
C++Builder10.1 starterです。
Application->MessageBox("送信スイッチ","確認",MB_OK);
E2034 'char const[5]' 型は 'const wchar_t *' 型に変換できない
E2342 パラメータ 'Text' は const wchar_t * 型として定義されているので const char * は渡せない Application->MessageBox(L"送信スイッチ",L"確認",MB_OK);
知らんけど プロジェクトで使ってる xxx.cpp の xxxのファイル名を変更するには、
どうしたら良いのでしょうか。
BCB6 です。 プロジェクト名.cpp なのか ユニット名.cpp なのか分からんけど
前者なら「プロジェクトに名前をつけて保存」
後者ならそのユニットを選んで「名前をつけて保存」
古いほうはそのまま残っているのでエクスプローラなどから削除 >>913
ご指摘の通りにLを追加することで解決しました。
迅速適切な回答をいただきお礼申し上げます。 メニューバーのアクセラレーター文字を表示させない為には、
どうしたら良いんでしたっけ。 チュートリアルやってたら
型限定子 'TDialogServiceSync' がクラス名または名前空間名ではない
宣言の構文エラー
っていわれるんだけどどうしたら修正できるんでしょうか?
int UserResponse = TDialogServiceSync::MessageDialog(L"This will clear the current document. Do you want to continue?",
TMsgDlgType::mtInformation, mbYesNo, TMsgDlgBtn::mbYes, 0); include追加でよくなった
+++ #include <FMX.DialogService.Sync.hpp>
それと、
--- Fmx::Memo::TDeleteOptions()
+++ Fmx::Memo::Types::TDeleteOptions()
---Fmx::Memo::TDeleteOption
+++Fmx::Memo::Types::TDeleteOption
でコンパイルとおったわー Delphi / C++Builder 10.1 Berlin Starter Edition が無料でダウンロード可能
注意事項
・無料ダウンロードは2016年8月22日から9月9日までの期間限定
・1回の登録/申請で1ライセンス入手可能
・1つのEメールアドレス/アカウントごとに1ライセンスのみ入手可
[Delphi 10.1 Berlin Starter Edition]
https://www.embarcadero.com/jp/products/delphi/starter/promotional-download
[C++Builder 10.1 Berlin Starter Edition]
https://www.embarcadero.com/jp/products/cbuilder/starter/promotional-download
894 :デフォルトの名無しさん [↓] :2016/08/27(土) 23:49:13.99 ID:9sh8Hs6g.net
Berlin StarterでDelphiとC++Builderの両方をインストール
しようとして失敗したりして気づいたこと
サイトから手動でダウンロードする実行ファイルは共通みたい
最初Delphiを手順通りにインストールすれば
C++Builderはインストールコードだけメールで送ってもらい
それをライセンスマネージャで登録する
Delphiでダウンロードした実行ファイルをもう一度実行すると
C++Builderがインストールできるようになる 全然だめじゃんこれ
ツカエネー
ディスク容量の無駄 無料のc++版なんですがLiveBindingの設定が見つかりません
Embarcadero C++Builder 10.1 Berlinです
http://i.imgur.com/mM9Wak9.png これなに?
E2342 パラメータ 'S' は const UnicodeString 型として定義されているので TStrings は渡せない Fmx::Printer::Printer()->FontsをListBoxにaddしたいんだけど、
ListBox1->Items->Add(Fmx::Printer::Printer()->Fonts[i]);
とすると上記エラーがでます。
どう直せば良いでしょうか? >>928
パラメータ'S'が単一の海栗コード文字列引数として宣言されているところに
文字列リストを渡そうとしています。 >>930-931
ttp://docwiki.embarcadero.com/Libraries/Berlin/ja/System.Classes.TStrings.Strings
ここに
>特定の位置にある文字を取得したり設定するには、Strings プロパティを使用します。
って書いてあったから
ListBox1->Items->Add(Fmx::Printer::Printer()->Fonts->Strings[i]);
としたらコンパイルできました
ありがとうございます おめ
delphiで、配列的に[]で直接アクセスできるものを
builderでは、直接[]ではなくItems[]とかStrings[]にするっていうのは、パターンだね
参照ではなくポインタなので、[]が別の意味になっちゃうから Formを追加してForm1とForm2があります。
Form1に変数int portnoがありForm2よりForm1の変数を下記の記述で変更すると
「portnoはTForm1のメンバではない」とエラーメッセージがでます。
Form1->portno = (Edit1->Text.ToInt());
お互いのフォームのリンクはしています。
初歩的な質問で申訳ありませんが教えてください。 portno って Form1 の public 変数?
単なるグローバル変数なんじゃないの >>935
ご指摘の通りに変数の宣言位置を間違えていました。
public: のもとで宣言することで解決しました。有難うございます。 C++ Builder 10.1 Berlin Starter Edition落として使ってみてるんですけど
std::shared_ptr みたいな、C++11の機能はまだ未実装なんですかね?
#include <memory> しても「E2316」が出てしまいます。 C++Builder XE7以降でOpenCVを使いたいのですが、
使用するまでの手順を教えて下さい orz すみません
ttp://docwiki.embarcadero.com/Libraries/Seattle/ja/FMX.TreeView.TTreeViewItem.Create
URLのページにはTTreeViewItem.Createがあるのに
TTreeViewItem* tvi = TreeViewItem1->Create(NULL);
と書くと
'Create' は 'TTreeViewItem' のメンバではないとコンパイラに言われてしまいます
実行時にTTreeViewに項目を追加したいのですが、どう書けばよいのでしょうか?
Embarcadero C++Builder 10.1 Berlinです TTreeViewItemの方じゃなくてTTreeViewItemsの方にAddメソッドあるでしょ。
Addメソッドの戻り値がTTreeViewItemじゃなかったけ? >>940
CreateメソッドはDelphiのインスタンス作成メソッド
C++(Builder)でのコンストラクタにあたるもので直接呼び出すものじゃない
TTreeViewItem* tvi = new TTreeViewItem(Owner); >>941-942
TValue a;
FolderDetails obj(L"新しいフォルダ");
TTreeViewItem* tvi = new TTreeViewItem(TreeView1.Selected);
tvi->Parent = TreeView1.Selected;
a = &obj;
tvi->Data = a;
tvi->Text = obj.Name;
こんな感じでできました ありがとうございます ×TreeView1.Selected;
○TreeView1->Selected;
です >入門者向け「Delphi」「C++Builder」の有償販売が終了、無期限の無償版として公開
> エンバカデロ・テクノロジーズ社は27日、入門者向けに提供している統合開発環境「Delphi 10.1 Berlin Starter Edition」
>および「C++Builder 10.1 Berlin Starter Edition」の有償販売を終了し、無期限の無償版として公開したことを明らかにした。
>従来はそれぞれ38,000円(税別)で販売されていた。
ttp://forest.watch.impress.co.jp/docs/news/1021826.html 有料でいいからそれくらいの価格で最新版を出してくれ すみません
TWindowHandle *handle = Form1->Handle;
TWinWindowHandle *h = WindowHandleToPlatform(handle);
と書くと
[bcc32 エラー] Unit1.cpp(81): E2451 未定義のシンボル TWinWindowHandle
[bcc32 エラー] Unit1.cpp(81): E2268 未定義の関数 'WindowHandleToPlatform' を呼び出した
とコンパイルエラーになります
#include <FMX.Platform.Win.hpp>
はしてあります
どう書いたら良いのでしょうか?
Embarcadero C++Builder 10.1 Berlinです Fmx::Platform::Win::TWinWindowHandle *ThisHandle = Fmx::Platform::Win::WindowHandleToPlatform(this->Handle);
でコンパイル通りました でもHWNDがほしい場合は
HWND hWnd = Fmx::Platform::Win::FormToHWND(Form1);
こっちで using namespace Fmx::Platform::Win {
TWindowHandle *handle = Form1->Handle;
TWinWindowHandle *h = WindowHandleToPlatform(handle);
HWND hWnd = h->Wnd;
} メインフォームからNewで作成&表示したFormAを
FormAのXボタンを押した時に破棄するにはどうすれば良いでしょうか?
FormAにはそれぞれ数MBytesのデータを持っていて、
使い方によっては500枚位New→Showする場合もあります。 補足です。
FormAを作成表示する時
FormA = new TFormA( NULL );
FormA->Show();
FormAのヘッダに、
WORD img[X_SIZE][Y_SIZE];
となっています。
タスクマネージャで見ているとFormAを作成&表示するタイミングで、
アプリのメモリ使用量が増え、FormAをXボタンで閉じてもメモリ使用量は減りません。
何かヒントでも良いので宜しくお願いします。 >>953
Formの生成→破棄を繰り返すとメモリ使用量がどんどん増えてしまい空きがなくなってしまうのですが、
回避策はないのでしょうか? >>955
有り難う御座います。
deleteはしています。
FormAのFormDestroyイベントで、
delete FormA です。
newする時に FormA = new TFormA( NULL ); とすると、
自動で破棄されるとありましたので試しても同じでした。 ちゃんと確認しろよ・・
>FormAのFormDestroy
FormAのFormDestroyイベント発生してないだろ???
FormAのOnCloseイベントでActionがcaHideになってるから閉じても
ただ隠されてるだけ。
Action = caFreeに。 トレースしてデバッグすればすぐに分かりそうなもんだが そういやBorlandの処理系って効率重視で
showとhideだったな C++BuilderXE8でたまにツールボタンの並びが勝手になるバグがあるんだけど
これツールボタンを固定する方法あります? OnClose の所で Release(); をしておけば、メモリは解放されるだろう。 BuilderからDelphiのコードを使用すると関数等がエクスポートされちゃうんですけど
これを抑止する方法は有りませんか? Export していない関数を.defに書けばExportできるけど
Export している関数を.defにどうやって書けばExport しないようにできるんですか? C++Builderで一番新しいのってなんて名前? C++Builderだろ
RAD Studioとかの話? 次のバージョンの名前は「C++Builder 10.2 Tokyo」じゃね? いや、
「C++Builder 10.2 PyongYang」(正男追悼 Special Version)
だな・・・。
これくらいの反骨リベラルセンスが欲しいw C++BuilderXE6でSFTP(クライアント機能)を使用したいと思っています。
調べるとOpenSSHライブラリのWindows版がありダウンロードしたのですが、
中身はコンソール用のEXEファイルでした。
使用方法としては、プログラムからシェル経由でOpenSSHのEXEを呼び出すという事になるのでしょうか?
ライブラリにはlibとかdllがあって、APIを呼び出すイメージかと思っていたので・・・ ところで
ビルドするたびにビルドした日時をフォームCaptionに表示させたいんだけど
そういうことは可能ですか? >>977
そういうのは__DATE__マクロと__TIME__マクロ使うんじゃないの? >>978
ありがとう
そんなマクロがあったの知らなかった androidアプリ作る環境作るにはいかほど支払えばよいですか? TChartで質問
TChartShapeでStyle=chasLineにしてますが
TChartShapeのY0とY1の値がTChartのLeftAxsisの範囲外に出た時に
TChartのLeftAxsisが自動的に範囲内になるようにする設定を教えてください
ちなみにTFastLineSeriesで同時に折れ線グラフも描画しているのですが
こっちはちゃんとLeftAxsisが自動調整してくれています。
Chart1->LeftAxis->AutomaticMaximum = true;
Chart1->LeftAxis->AutomaticMinimum = true;
Chart1->LeftAxis->Automatic = true; チャートだばかやろう!
Series1->AddXY( 10000, 12000, "", clTeeColor );
↑
これすると実行時エラーになんだよ!
さっさと理由おしエロよ豚共が!! ちなC++Builder5な
XE8ではエラーでなかったわ。
C++Builder5で>>987のエラー回避おしエロくだあし GNU GDB 7.2 snapshot - with rudimentary TDS (Turbo Debugger Symbol) format support (originally written by Troy Rollo) obtained from old mail list postings,
and migrated to this snapshot with some corrections and slight enhancement.
https://sourceforge.net/projects/gdbwtds/ A tool to convert Borland tds debug symbol files to Microsoft dbg symbol files.
https://sourceforge.net/projects/tds2dbg/ DelphiTDS
the purpose of this application is to display as much information as possible about debug info (TDS)
https://github.com/tothpaul/Delphi/tree/master/DelphiTDS このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2007日 12時間 0分 52秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。