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

C++Builder相談室 Part4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-4あたり。
0153デフォルトの名無しさんNGNG
>>149
DelphiにMatchesMaskてのがあるから、dllにでもして(゚∀゚)アヒャ



それともBCB6に実装されてる?>持ってる人
BCB5には無いよ。
0154デフォルトの名無しさんNGNG
Masks漢字とか対応してる?ってか
それ以前に真中とか先頭に*来るとちゃんと動かないよーな。
0155デフォルトの名無しさんNGNG
正直Likeは便利すぎ。

結構厄介かもな。
0156デフォルトの名無しさんNGNG
>>153
BCB6にはあるようだね。masks.hppに。

正規表現で良ければ、boostのRegex++使うとかってのはどう。
0157149NGNG
皆さんありがとうございます。

BCBの5なので無いです……Delphiもありません。

ハァ……
0158デフォルトの名無しさんNGNG
Likeと同じ動作に拘るならMatchesMaskをさらにカヴァーして使うしかない。
(ただしバグがあったような? 要確認)

正規表現ならば>>156氏紹介のRegex++を。
0159デフォルトの名無しさんNGNG
include\PCRE.H は?
wchar でコンパイルすれば、そのまま使えるでしょ。
0160148NGNG
以外と早く返事来た

日本語版C++Builder 6 はアップデート#1は適用されております。
アップデート#2、#3につきましては現在、公開準備を進めており
ます。今しばらくお待ちくださいますようお願い申し上げます。

ということだそうです。
0161デフォルトの名無しさんNGNG
>現在、公開準備を進めております。
何ヶ月放置してるんだよ..

JBuilder7 Update3 が3ヶ月遅れで公開されたことを考えると、Update#3 は来年頭か..
0162デフォルトの名無しさんNGNG
お盆前にもそんなような返事貰った記憶があるな。
0163質問ですNGNG
Printer()->Canvas->CopyRect(rect, PaintBox->Canvas, rect);
上のようにPaintBoxの描画内容を印刷しようとしたのですが、できませんでした。
TBitmapを使わずに、領域を直接コピーして印刷できないのでしょうか?
どなたか解決法を伝授願います。OSは2000、Versionは5proです。
0164デフォルトの名無しさんNGNG
BeginDoc()EndDoc()
0165163NGNG
>>164
レスありがとうございます。
その命令の中に書いてあるのですが、印刷できません。
0166Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ
D5の時点で2バイト文字にバグありです。>>158さん
その後治ったかどうかしらないけど、
どうせ治ってないんじゃないかな
(日本技術部ないし。)

この辺をみれば修正方法がのっているのですが
[Delphi:50700] Re: 文字列比較のワイルドカード文字
[Delphi:53856] Re: MatchesMask 関数でメモリーリーク
[Delphi:53862] Re:MatchesMask は 2 バイト文字非対応ですか?
[Delphi:53879] Re: MatchesMask は 2 バイト文字非対応ですか?

当然VCLのソースがいるんですな。
バグがちゃんと某から修正されていてその情報が
すぐに確認できればいいのにね。

どこか内緒の匿名でupりましょうか?
0167デフォルトの名無しさんNGNG
僕のビルダーver.1なんだけど、
何とかヴァージョン6にグレードアップできないかな?
0168デフォルトの名無しさんNGNG
>>166
50行程度の関数だから代わりを使うだけ。
>>151
のソースの%を*に変えてしまい、
?と[]の処理を追加すればいっちょあがり。
[]なしなら今手元にある。
0169デフォルトの名無しさんNGNG
>>163
TFrom->Print()じゃダメなん?
0170149NGNG
重ね重ねありがとうございます。
まずDelphiかBCB6の購入を上申してみます。

あと、>>168さんのソースが気になる……
0171デフォルトの名無しさんNGNG
>>170
bool wmatch(const char *p, const char *s) {
 for (;;) {
  switch (*p) {
  case '\0':
   if (*s == '\0') return true;
   else return false;
  case '*':
   p++;
   for (;;) {
    if (wmatch(p, s)) return true;
    if (*s == '\0') return false;
    else s += INC(s);
   }
  case '?':
   p++;
   s += INC(s);
   break;
  default:
   if (SP(p)) {
    if (p[0] != s[0]) return false;
    if (p[1] != s[1]) return false;
   } else {
    if (*p != *s) return false;
   }
   p += INC(p);
   s += INC(s);
  }
 }
}
0172デフォルトの名無しさんNGNG
>>167
6を買えばバージョンアップできるよ。
0173デフォルトの名無しさんNGNG
CLXコンポーネントのTTextBrowserを使って表示したリンクを初めてクリックした時、
テキスト(TTextBrowser->Text.Length() が 0になる)が消えるのは仕様でしょうか?
今のところ、初めてのリンククリックの時のみデータをリロードして誤魔化してますが
非効率極まりなくて泣けてきます。
0174超初心者NGNG
あまりにも初歩的な質問ですみません。
コンパイルの方法を教えてください。
BCC32を実行はできますが、そこからのファイルのコンパイル方法が
どうしてもわかりません。どうすればよろしいですか?
よろしくお願いします。
0175173NGNG
あ、ソース上げるの忘れてました。
コンストラクタでm_isEverLinkClicked = m_isEverLinkBug = false;としています。

void __fastcall TChatForm::TextBrowserClick(TObject *Sender)
{
if(m_URL.Length() != 0){
#ifdef _WIN32
AnsiString url = m_URL;
::ShellExecute(NULL,NULL,url.c_str(),NULL,NULL,SW_SHOWNORMAL);
#else
(略)
#endif
m_isEverLinkClicked = true;
}
}

void __fastcall TChatForm::TextBrowserTextChanged(TObject *Sender)
{
// Bug:Component
// 内容:TTextBrowserのリンクを初めてクリックした時、テキストが消える
// 対策:再度テキストをロードする
if(m_isEverLinkClicked && m_isEverLinkBug == false){
if(TextBrowser->Text.Length() == 0){
m_SendTextStream->Seek(0,soFromBeginning);
TextBrowser->LoadFromStream(m_SendTextStream);
}
m_isEverLinkBug = true;
}
}
0176デフォルトの名無しさんNGNG
>174はC++Builderじゃなくてこっちかな?
http://www.borland.co.jp/cppbuilder/freecompiler/devsupport.html
いずれにしろ、MS-DOS/コマンドプロンプトの使い方はスレ違い&板違いだけど。

でも、"BCB"って入力してないだけかも。
0177デフォルトの名無しさんNGNG
C++Builderで、ボタンを押すとホームページを表示させることはできますか?
ちなみに、C++Builder5ラーニングバージョンです。
0178デフォルトの名無しさんNGNG
いくらでも方法はあるんだけど。
0179デフォルトの名無しさんNGNG
インターネットエクスプローラを起動させることはできますかね。
0180デフォルトの名無しさんNGNG
できるよ。
0181デフォルトの名無しさんNGNG
ShellExecute(0, NULL, "http://hoge.net/hoge.html",NULL,NULL, 0);
WinAPIだけど。
0182デフォルトの名無しさんNGNG
方法など教えてもらえませんか?
よろしくお願いします。
0183デフォルトの名無しさんNGNG
かぶっちゃいました。ごめんチャイ。
0184デフォルトの名無しさんNGNG
開くことができました。ありがとうございます。
0185デフォルトの名無しさんNGNG
先ほどのページを開くもので、
String s = "http://www.yahoo.co.jp";
ShellExecute(0, NULL,s,NULL,NULL, 0);
としたところ、
'AnsiString' 型は 'const char *' 型に変換できない
と出ました。どのようにしたらよろしいでしょうか?
0186デフォルトの名無しさんNGNG
みのもん
0187デフォルトの名無しさんNGNG
ShellExecute(0, NULL,s.c_str(),NULL,NULL, 0);
0188デフォルトの名無しさんNGNG
>>185
ヘルプくらい嫁
0189デフォルトの名無しさんNGNG
ありがとうございます。できました。
0190デフォルトの名無しさんNGNG
改行がCRLFのテキストファイルから1行ずつ読み込みたい(長さは一定ではない)のだがVCLさんにそんなやつないですか?
0191デフォルトの名無しさんNGNG
>>190
TStringList.LoadFromFile
0192デフォルトの名無しさんNGNG
>>191
なるほどw ありがとれす
0193デフォルトの名無しさんNGNG

AnsiString fName=ExtractFilePath(Application->ExeName)+"dummy.txt";
AnsiString dt;
TStringList *sl= new TStringList();

sl->LoadFromFile(fName);

dt=sl->Strings[0]; //1行目

ShowMessage(dt);

sl->Free();

>>191
TFileStreamばかりにらめこしてまつた。このへんはVCLに慣れてないととっさには出てきませんかね?
0194デフォルトの名無しさんNGNG
>>193
とっさというか私の定石なんで。
その代わりSAXとDOMの関係みたいに量が増えれば増えるほど効率は落ちますが。
0195デフォルトの名無しさんNGNG
ideに統合できるバージョン管理ソフトはないのかなぁ
0196デフォルトの名無しさんNGNG
「統合できる」って具体的にどんなことを期待しているの?
0197デフォルトの名無しさんNGNG
eclipseのような操作感を期待してます。
0198貧乏学生NGNG
VC++で挫折しました。C++Builderはとっつき易そうでした。C++Builder
は貧乏な私が買う価値がありますか?それともC++の勉強不足だ、帰れな
のか教えてください。VBならAPI位なら使える程度です。
0199貧乏学生NGNG
ニホンゴまちがえた。
0200デフォルトの名無しさんNGNG
>>198
Delphiが使えるなら大丈夫。
0201貧乏学生NGNG
Delphiが使ったことありません。どうすれば、、、。
0202デフォルトの名無しさんNGNG
どの辺で挫折しました?
配列やリストのようなデータ構造とか、ソートのようなアルゴリズムで挫折したなら、
言っちゃ悪いけど何やっても無理。
ウィンドウ関数やMFC、APIなどで挫折したなら、RAD可能なC++Bのほうが
学習カーブは緩いので、大丈夫と言えるんじゃない?
0203貧乏学生NGNG
 MFCでつまずきました。GUIが難しいんです。ぜんぜんVC++(ビジュアルじゃないC++)
C++Bの"->"でGUIを書くのが不思議な感じするけど、簡単そう。
この違いはなぜなんだろう。
0204デフォルトの名無しさんNGNG
たのむ。荒らす気がないならあげるな
0205デフォルトの名無しさんNGNG
>>203
それはVCLが優れているからです。GUIの部品をコンポーネントとして
持っていて、それを組み合わせるだけで、極めて少ないコーディング
量で、Windowsプログラムが出来てしまいます。

もっともこれはDelphiも同じ。
0206デフォルトの名無しさんNGNG
WindowsのExplorerのエクスプローラーバーのフォルダツリーのような
コンポーネントをCLXで作ろうと思っているのですが、
ネット等で調べたところVCLのサンプルしか見当たらず
class PACKAGE TDirectoryTreeView : public TTreeView
{
//(省略)
};

bool __fastcall TDirectoryTreeView::init(void)
{
  HIMAGELIST img_list_handle;
//(中略)
  img_list_handle = (HIMAGELIST)SHGetFileInfo(
    PAnsiChar(item_id_list), 0, &file_info, sizeof(file_info),
    SHGFI_PIDL | SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
  if(img_list_handle == 0){
    FIMalloc->Free(item_id_list);
    ShowMessage("SHGetFileInfo失敗\n" + AnsiString(__FILE__) + "\n(" + AnsiString(__LINE__) + ")");
    exit(1);
  }

上のようにImageListのハンドルを取得し、
this->Images = new TImageList(this);
this->Images->Handle = img_list_handle;
としている例しか見つけられませんでした。
どうやらTCustomImageList::Images->HandleはVCLにしか存在しないようなので
CLXでTImageListにアイコンを取得する方法をご存知の方がいらっしゃれば
御教授お願いいたします。
開発環境はWindows2000sp3、Borland C++ Builder6 Professionalで、
コンポーネント内のWindows、Linux固有のコードは#ifdef __WIN32__で
分けて書いています。
0207Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧  えっと、TTreeView.Images
 ミ,,゚Д゚彡  にImageListを設定して
 ミつ[|lllll]).  TreeNodeのImageIndexを…
〜ミ   ミ   
  ∪''∪  いや、よくわかないです。
0208デフォルトの名無しさんNGNG
>>206
ユーザにイメージリスト作らせてそれ代入させれば良いんでは?
0209デフォルトの名無しさんNGNG
BCB Update3の日本語化エラーメッセージファイルが欲しいよ〜。
0210デフォルトの名無しさんNGNG
>>209
すまん。月曜夜まで待て。
0211デフォルトの名無しさんNGNG
>>207
すみません、私の説明不足でした。

TTreeView.Images に ImageList のポインタを設定して TreeNode の ImageIndex を
利用するのは分かったのですが、SHGetFileInfo で取得できるのは HIMAGELIST なので

TTreeView->Images->Handle = img_list_handle;
としているサンプルしか見当たらなかったのです。
しかし TTreeView.Images が Handle を持っているのはVCLだけのようなので、
CLXではどのようにしたら良いか分かりません。

HIMAGELIST が指し示す ImageList のポインタを TTreeView.Images に設定すれば
良いのだろうかと思ったので

TTreeView->Images = (TImageList *)img_list_handle;
も試してみたのですが、この行の実行時に AccessViolation を起こしてしまいました。

>>208
すみません、仰る事が上手く理解できませんでした。
あらかじめ用意しておいたイメージリストを、実行時にユーザーに選択させる
という事でしょうか?
もしそうならば、それは想定しているものとは違うものになってしまうので
残念ながらできません。
0212Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧    /やっぱしよくわかなのですが
  ミ,,゚Д゚彡 < DelマガのVol22とかそれ前後の号に
   ミつ つ   \CLXでファイルマネージャを作っている
 @ミ  ミ      連載が載っているので
   ∪''∪     それを参考にしてみたらどうでしょうか。

ソースなら、Webでも手に入るし…
(本買わないとダウソだめかもですが)
0213仕様書無しさんNGNG
外部EXEを起動するコマンドって何?
どっかのオブジェクトがメソッドとして持ってるのかな?
0214206NGNG
>>212
ありがとうございます。
調べてみます。

>>213
system関数じゃダメですか?
0215仕様書無しさんNGNG
>>214
system関数ですか!やってみます。
具体的にどうやって書けばいいですか?
0216デフォルトの名無しさんNGNG
>>215
help読め
0217デフォルトの名無しさんNGNG
>>210
楽しみにしております。僕も作り方が分かればお手伝いしたいのですが
全然わからなくて・・・
0218仕様書無しさんNGNG
>>214
DOSプロが邪魔です。。
ほかの方法はないですか?
0219デフォルトの名無しさんNGNG
>>218
>DOSプロ
死ぬか?
0220デフォルトの名無しさんNGNG
>>219
オナエモナー(ププ
0221デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=%E6%A4%9C%E7%B4%A2%E3%82%82%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%E5%A5%B4%E3%81%AF%E9%80%9D%E3%81%A3%E3%81%A6%E3%82%88%E3%81%97&ie=UTF-8&oe=UTF-8&hl=ja&lr=
http://www.google.co.jp/search?q=%EF%BC%A4%EF%BC%AF%EF%BC%B3%E3%83%97%E3%83%AD&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0222デフォルトの名無しさんNGNG
>>1
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /    -  - |
  ||| (5      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃─┃|  < こんなサイトを見つけた
|| | | |  \ ┃  ┃/    \  正直、スマンカッタ
| || | |    ̄         \_________
http://freeweb2.kakiko.com/saitama/
0223デフォルトの名無しさんNGNG
http://alink3.uic.to/user/ranran2.html
0224デフォルトの名無しさんNGNG
>>213
何とかExecute
0225Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ
WinExecかShellExecuteですか?>>213さん>>224さん
0226 NGNG
VCLのヘルプをコンバートして、MSDNに突っ込んだりってできませんか?
PlatformSDKとVCLの検索が別々になってたりするので・・・
0227デフォルトの名無しさんNGNG
日本語エラーメッセージ結局来なかったな(´・ω・`)ショボーン
0228デフォルトの名無しさんNGNG
>>227
おらよ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1036037417&rm=100

待たせてすまん。
展開してでてくる bcc32.jpn を複製して comp32p.jpn を作ってください。
bcc32.jpn と comp32p.jpn を bin ディレクトリにコピーすることになります。
0229デフォルトの名無しさんNGNG
>>228
ありがとう&お疲れ様!
ホント、Borland Japanのサポート体制は腐っているよね。Update3どころか、
Update2も出てないんだから・・・・・

これで、最新のBCB環境を使うことができます。どうもありがとう!
0230デフォルトの名無しさんNGNG
うれしいのでage
0231デフォルトの名無しさんNGNG
Update3 は、“Public Beta”扱いだ。と US newsgroups で説明がでています。
後はドキュメントを差し換えるだけだそうなので、バイナリ差し換えは起きないものと
思われますが。

>Borland Japanのサポート体制は腐っているよね。
そんなことは無いよ。既に彼らの管理外にあるのだからしょうがない。
0232デフォルトの名無しさんNGNG
勝手に管理外にすんなよ。藁
0233デフォルトの名無しさんNGNG
いろいろあるんだよ.... 表に出せない社会の裏を感じ取ってくれぃ。
0234デフォルトの名無しさんNGNG
某 ML 等に転記できる方、よろしくね。
それと、正式に Update3 日本語版が出たら“かならず”そちらを当てること。
そうしないと「最新のBCB環境」にならないような気がとってもするなぁ。
0235デフォルトの名無しさんNGNG
なるほど。感謝祭休みで日本の火曜日早朝までずれ込んだわけだな?
0236デフォルトの名無しさんNGNG
無償のやつが使えません
自動設定setbccのstep3のパス優先度の選択の現在のパス設定に\command;がなぜかないのが原因っぽ いっす
C++Builder5,5です
0237デフォルトの名無しさんNGNG
CPad使ってたけど
C++Builder5.5は
ダウンロードすべき?
0238デフォルトの名無しさんNGNG
せめて自分が使っている製品がなんて名前なのかくらい把握しといてくれ。

こっちの方が適切でしょう
http://pc3.2ch.net/test/read.cgi/tech/1030493157/
0239デフォルトの名無しさんNGNG
サーンクス!!そんなスレがあったとは
0240デフォルトの名無しさんNGNG
こんにちは。
コンパイラにC++Builder5.5のbcc32.exeとCpadを使っていますが、
構造体メンバの配列をとても増やしたら
(例えば
{double x[1800][1800]
double y[1800][1800]
double z[1800][1800]
})

Fatal: Error detected (LME1514)

こんなエラーがでてしまいました。
構造体メンバの配列の大きさは減らしたくなく、
このエラーをとりたいのですが…

どなたかアドバイスお願いします。
0241デフォルトの名無しさんNGNG
スタックサイズを超えてるからじゃない?
0242デフォルトの名無しさんNGNG
嫌がらせなのかなぁ?

C++Builder5.5 なんて製品無いんだってば。

CBuiler は 5 か 6
BCC は 5.5


0243デフォルトの名無しさんNGNG
ちなみにC++Builder6 ServicePack3(public Beta)に付属のBCCは
version 5.6.2ね。
0244デフォルトの名無しさんNGNG
>>243
製品名としては 5.6.x ってのは存在しないから。わかって言ってると思うけど。
0245デフォルトの名無しさんNGNG
>>240
どれだけのサイズになるか計算してみた?
(1800^2)*8*3バイトだよ。74メガ強だ。
さっさとGlobalAllocでもしなされ。
0246デフォルトの名無しさんNGNG
>>240
マジレスしようかどうか迷ったが・・・・

取り敢えず一番簡単な解決策はstatic領域に確保しなされ。
0247デフォルトの名無しさんNGNG
そーいやB-GEEKSを立ち読みしてたら、ワーム作成の解説しているところで
「フリーのコンパイラ、C++Builder5.5(bcc5.5)をダウンロードして、云々」って記述があった。
そのせいなのか?
bccはフリーだけどBuilderはフリーじゃないし5.5じゃないんだよぅと突っ込みたかった。
0248デフォルトの名無しさんNGNG
>>247
明らかに略になってないしなw
0249デフォルトの名無しさんNGNG
>>228
thx
ありがたく使わせてもらってます。
0250デフォルトの名無しさんNGNG
>>247
てーことは、C++Builder5.5 って表記している輩はワーム作成者かい?
0251284.287NGNG
>>236は俺です
確かread me かなにかからコピーして5,5をつけたしただけです
PC初心者なんでウィルスみたいなのはつくれません
0252284.287NGNG
read meです今確認、5,5はついてなかったので付け足したんだと思います
いろいろ検索したあとだったので、検索欄に書いてあったのをコピーしたのかもしれないけど
■ このスレッドは過去ログ倉庫に格納されています