くだすれC++Builder( ..
[2ch|▼Menu]
437:デフォルトの名無しさん
08/03/11 19:34:26
dwDesiredAccessの値を全部試してみましたが、
だめでした。

「ウインドウハンドル ファイル名」でググッて
実装しているんですが。

GetForegroundWindowして、希望のexeがトップかどうかを
調べてるだけなんです。。。

ほかにいい方法ありませんか?
あきらかにAPIの問題だけど、あのスレ結構きついんだなぁ。
BCBしかわからんし。すれ違いかな?しつこくて申し訳ないです。

438:デフォルトの名無しさん
08/03/11 19:58:21
というか、何がしたいのか全くわからん

439:デフォルトの名無しさん
08/03/11 20:09:03
アクティブなウインドウが特定のアプリかどうかを
調べたいのです。

そのため、GetForegroundWindowでウインドウハンドルを求めて、
アプリ名を検出し、特定のアプリかどうかの文字列判定をしています。

というわけで、アプリ名を知りたいのではないのです。

具体的には、作ってるのはユーティリティで、特定のアプリを
操作しているときに、激しく自前ソフトを実行し、
非特定アプリを操作しているときは、特定のアプリかどうかの
判定のみを実行するのです。ぅ〜ん、うまくいかないなぁ。
実行とビルド実行でこれだけ差がでるとつらいなぁ。

440:デフォルトの名無しさん
08/03/11 20:29:05
うちの似たようなことしてるソースだとこれで動いてるけど

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, pid);


441:デフォルトの名無しさん
08/03/11 20:44:04
>>440
おみごと!
どうにか動きました。よくわかんないけど。
いろいろありがとうございました。

442:デフォルトの名無しさん
08/03/11 20:44:14
フルパス必要なきゃこっちの方が手軽かも

DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);

HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,pid);

PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);

bool ret = Process32First(snapshot, &pe32);
while(ret) {
if( pid == pe32.th32ProcessID ) ShowMessage(pe32.szExeFile);

ret = Process32Next(snapshot, &pe32);
}

CloseHandle(snapshot);

443:デフォルトの名無しさん
08/03/11 21:09:03
ども。参考にさせていただきます。
9xにも対応させたいし。って対応可能??
では。

444:デフォルトの名無しさん
08/03/12 01:15:57
9xはProcess32First/Nextでフルパス返してくる(NT系はファイル名のみ)
NT系でフルパス取るにはやっぱりPSAPIで取らないとだめ。

あと9x対応にするにはGetModuleFileNmaeExとEnumProcessModulesをLoadLibrary/GetProcAddressでロードしないとエラーが出る。

445:デフォルトの名無しさん
08/03/12 02:01:47
質問です
TListViewにて
ListView1->ViewStyle=vsReport;にして
ListView1->Columns->Items[0]->Alignment=taRightJustify;
としても、文字列表示が左寄せのままです。
他の列はちゃんと右寄せに表示されます。
先頭列を右寄せで表示するにはどうすればいいでしょうか。




446:デフォルトの名無しさん
08/03/12 06:14:06
TValueListEditorコンポーネントの行数設定は、どうすればできますか?

447:デフォルトの名無しさん
08/03/13 01:31:11
>445
最初のカラムのAlignmentが無効なのはコモンコントロールの仕様じゃなかったっけ?

448:デフォルトの名無しさん
08/03/20 20:01:53
リストボックスをコンボボックスのように一行で表示して
プルダウンリストで表示するプロパティを探しているのですが、
わかりません。教えていただければ助かります。
リストボックスでなくてもいいです。

コンボボックスのように入力は受け付けたくありません。
例としてはIEのインターネットオプションのプログラムタグの
HTMLエディタや電子メールといったリストボックスです。

449:デフォルトの名無しさん
08/03/20 20:25:27
コンボボックスのStyleプロパティにcrDropDownListで問題あるの?

450:デフォルトの名無しさん
08/03/20 20:28:39
OKでした。節穴でした。
ありがとございました。

451:デフォルトの名無しさん
08/03/20 22:39:55
テキストファイルを読み込ませるにはどうすればいいんですか?

今までGCCでやっていたときには同じフォルダにテキストファイル
おいておけばよかったんですが
Turbo C++に変えてからは同じフォルダに置いてもできません

452:デフォルトの名無しさん
08/03/20 22:50:54
カレントディレクトリ?ファイル名は絶対パスで扱うほうが間違いないと思うけどね。

453:デフォルトの名無しさん
08/03/20 23:22:49
>>452
できました
テキストファイルをプロジェクトファイルにおいていました

実行ファイルはDebug_Build内に作られるんですね

454:デフォルトの名無しさん
08/03/21 00:43:11
WinMainの先頭に
SetCurrentDirectory(ExtractFileDir(Application->ExeName).c_str());
とか書いておけばいい

455:デフォルトの名無しさん
08/03/21 23:52:20
それはちょっと…。カレントディレクトリはいつ変更されるかわからんから。

456:デフォルトの名無しさん
08/03/26 01:10:47
win2000でBCB6を使用しています。
TListViewでチェックボックスを表示した場合とTCheckListBoxに表示される
チェックボックスでは見た目が違うのですが(TListViewに表示される方が枠が黒く太い)
これをTCheckListBoxで使われているようなチェックボックスに変える簡単な方法は
ないでしょうか?

457:デフォルトの名無しさん
08/03/27 09:12:23
教えてください。
ダイアログボックスでOKボタンが押されたときに、TEditの内容が未入力だったら
TEditにカーソルを持っていき、入力をしてもらうようにしたいと考えています。
カーソルを持っていくには、
Edit1->SetFocus();で出来たのですが
OKボタンがおされたときに、OKBtnClick(TObject *Sender)で
Edit1のなかみを調べて、何も入っていなければ
Edit1->SetFocus();を実行しても、ダイアログが閉じてしまいます。
これは、ボタンにModalResult=mrOkを指定しているからだとは思います。
OKボタンがおされたときに、Edit1がカラならEdit1へ
ちゃんと入力されていれば、そのままダイアログを閉じたいのですが
どうすればよいでしょうか。


458:デフォルトの名無しさん
08/03/27 09:23:51
if (Edit1->Text.IsEmpty()) {
    Edit1->SetFocus();
    ModalResult = mrNone;
}

459:デフォルトの名無しさん
08/03/27 09:30:42
TForm::OnCloseQueryで中身をチェックする

460:デフォルトの名無しさん
08/03/27 11:18:26
>>458
>>459
できました。
どうもありがとうございます。


461:デフォルトの名無しさん
08/04/04 07:54:34
三項演算子の使い方を教えてください。
AnsiString str;
int index;
if(index!=0)
str="AAA";
else
str="BBB";
これは、
str= index!=0 ? str="AAA" : str="BBB";
このように書けば良いのはわかるのですが、
if(index!=0)
 str.printf("%d",a);
else
 str.printf("%d",b);
これの三項演算子での記述の仕方がわかりません。
indext!=0 ? (str=str.printf("%d",a)) : (str=str.printf("%d",b));
とすると、strにはstrの長さが文字として入ってしまいました。


462:デフォルトの名無しさん
08/04/04 08:04:16
index!=0 ? str.printf("%d",2) : str.printf("%d",3);

463:デフォルトの名無しさん
08/04/04 08:36:01
>>462
できました。ありがとうございます。

すいませんがもう一つ教えてください。
if(index!=0)
 str.printf("%d",a);
else
 str="あいうえお";
の場合はどうすればよいでしょうか。
index!=0 ? str.printf("%d",a) : str="あいうえお";
ではエラーになってしまいます。


464:デフォルトの名無しさん
08/04/04 08:46:40
型を合わせる
index!= 0 ? (void)str.printf("%d", a) : (void)(str = "あいうえお");

465:デフォルトの名無しさん
08/04/04 08:58:40
>>464
なるほどー
すごい勉強になりました。
E2034 'AnsiString' 型は 'int' 型に変換できない
というエラーの意味が全然わからなかったのですが、
三項演算子は、両方で同じ型にしないとダメなんですね。
どうもありがとうございます。


466:デフォルトの名無しさん
08/04/04 12:25:42
てゆーかさ、普通は
str = index != 0 ? "AAA" : "BBB";
とか
str.printf("%d", index != 0 ? a : b);
と書くんだよ。
あと、コンストラクタの初期化リスト等、どうしても「式」が必要な場所とか。
だから、「同じ型」の「式」が並ぶのが当然なの。「式文」じゃないから。

467:デフォルトの名無しさん
08/04/04 14:06:01
質問ですが、VSSとBCBを連携させることはできますか?

468:デフォルトの名無しさん
08/04/04 15:49:54
連携ってどういうふうに?
相互にobjを使うのは形式が違うから誰か変換ツール作らないと無理だけど
同じC++言語だから変換する意味無いでしょうから誰も作らない。

469:デフォルトの名無しさん
08/04/04 16:11:21
Visual SourceSafe ?

470:デフォルトの名無しさん
08/04/04 16:12:28
CVSならコンポあった気がしないでもない

471:デフォルトの名無しさん
08/04/10 01:04:43
まさかC++の方もフリーカーソルだったりしますか?

472:デフォルトの名無しさん
08/04/10 08:13:59
モチロンソウヨ

473:デフォルトの名無しさん
08/04/10 21:15:44
絶望した

474:デフォルトの名無しさん
08/04/11 01:34:37
GExpert?

475:デフォルトの名無しさん
08/04/14 15:13:54
C++Builder2007で開発をしております。

C++Builder6で作られたプロジェクトのビルドができません。
エラー内容は以下の通りです。

[BCC32 エラー] functional(135): E2093 < 演算子が使われたがクラス string には定義が存在しない。


どなたか教えて頂けますか。

476:デフォルトの名無しさん
08/04/14 16:19:18
>>472
いい事言うなあお前。
みんなが頭じゃわかっててもなかなか実践できない事を口に出して言えるなんざ大した自信だよ。
それで出来てなかったらあのインチキ占いのバアさんと一緒だぞお前。
そんなに当たり前の事を言いたかったら尼さんにでもなって言行等しくなってから説教したらどうだ。

477:デフォルトの名無しさん
08/04/14 18:31:56
おk

478:デフォルトの名無しさん
08/04/14 22:25:46
>>475
いい事言うなお前。

479:デフォルトの名無しさん
08/04/15 00:05:26
>475
newsgroupで質問した人?エスパー求むってのもちょっとねぇ。
最小限の再現状況をさらしなさいな。

480:デフォルトの名無しさん
08/04/15 02:33:06
>>475
最低限、エラー行を書けよ。
そんな質問の仕方では誰も答えねえぞ。


481:デフォルトの名無しさん
08/04/15 22:42:20
型のチェックが厳密になってるから
曖昧な表現はすべて確定的表現にしないとダメよ

482:デフォルトの名無しさん
08/04/16 02:50:01
475です。

>>479>>480>>481
質問の仕方が悪くてごめんなさい。
このエラーで困ってたのは
私(とnewsgroupで質問してた人)の関係者なのですが、解決したとのことです。
詳しい事は聞いてないのですが
エラーが出る直前にコンパイル中のCPPに#include <string>を追加したら通ったそうです。
どうもありがとうございました。

483:デフォルトの名無しさん
08/04/17 15:48:42
>482
関係者なんですね?わかります。
ともあれnewsgroupにもなんか書いておいたほうがいいと思いますよ。

484:デフォルトの名無しさん
08/04/18 18:28:24
批判されたら他人のせいにするのは、ゆとりの常套手段。


485:デフォルトの名無しさん
08/04/28 15:47:08
初心者ですが質問させてください。
特殊フォルダを取得したいためSHGetSpecialFolderPath()を使いたいのですが、
定義されていないというエラーが出ます。
#include <shlobj.h>を先頭に挿入すると、さらに大量のエラーが出ます。

どうすれば、よいのでしょうか。
この系統の方法以外で特殊フォルダのパス名を取得する方法はありますか?


486:デフォルトの名無しさん
08/04/28 16:46:18
とりあえず、質問するときにはBuilderのバージョンを書いてね。
それが礼儀っちゅうもん。
#include "shlobj.h"するには、
NO_WIN32_LEAN_AND_MEAN を追加しなければ、二重定義エラーがでる。
設定方法は、Builderのバージョンによりちょいと異なる。


487:デフォルトの名無しさん
08/04/28 23:09:59
>>486 様

すみません、これから気をつけます。
バージョンに関してですが、Turbo C++です。
無料に引きつけられて勉強を始めましたが、国民機時代のTurbo君とは
名前だけが同じだけで後は全く別物でした。(汗)
Turbo C++をもう少し使ってみて、ものになりそうでしたら製品版の
Builderを買おうと思っています。

本題につきまして、
NO_WIN32_LEAN_AND_MEAN を#defineしましたら、問題なく動きました。
本当にありがとうございました。
今後も調べても分からないことを質問させて頂きますのでよろしく
お願いいたします。

488:デフォルトの名無しさん
08/04/28 23:19:36
>>487
こっちのTurbo君などはいかが?
URLリンク(dn.codegear.com)

ちなみに新TurboのExplorerエディションはコンポーネントの追加が出来ない以外はほぼProfessionalと同等の機能持ってた気がする。
ちなみに自作や他作コンポーネントはRAD環境で使えないだけでソース上でnewすればExplorerでも使える。

489:デフォルトの名無しさん
08/05/01 22:57:30
C++Builder6.0で、VBのMidBみたいに指定した場所の文字を抜き出すにはどうやったらいいのでしょうか?
ググったらBuilder3で、専用の関数を作ったりしてましたが・・・6.0でも簡単にはできないのでしょうか?

490:489
08/05/01 23:21:32
あ、文字は半角のみで全角は扱いません

491:デフォルトの名無しさん
08/05/02 00:20:10
文字を?c_str/dataで。文字列を?Copyで。

492:489
08/05/02 00:36:04
ああっ、AnsiStringのSubStringとかで出来たんですね
すいませんでした&ありがとうございました

493:デフォルトの名無しさん
08/05/02 00:44:32
別にAnsiString使わなくても::strncpy(dest, src + 先頭オフセット, 抜き出す長さ);でいいじゃない。

494:デフォルトの名無しさん
08/05/02 02:59:51
AnsiStringがずっと便利じゃん。
バッファとか考えなくてイイ。


495:デフォルトの名無しさん
08/05/02 08:06:11
速度を取るか簡便性を取るかは自由

496:デフォルトの名無しさん
08/05/07 13:17:55
TStringGrid を継承したクラスを作ろうとしたら、「型名が必要」というエラーがでてしまいました。

新規作成→アプリケーション から、ヘッダファイルでとりあえず、classの宣言をしただけなんですが
「Unit1.h」

#include <Forms.hpp>
//---------------------------------------------------------------------------
typedef class TMyStringGrid : public TStringGrid
{ // ← ここんとこで 「[C++ エラー] Unit1.h(12): E2303 型名が必要」 と怒られます
private:
public:
__fastcall TMyStringGrid(TComponent* Owner);
}TMyStringGrid;
//---------------------------------------------------------------------------
class TForm1 : public TForm


「TStringGrid」 を「TForm」や「TCheckBox」に変更すれば、問題なくコンパイルされるので
「タイプミスか?」と何度もチェックしてみたのですが、、、

環境は
BCB6pro、cb6_upd4_pro修正パッチ適用済、WinXP pro SP2
です。ご指導の程、よろしくお願いいたします <(_ _)>

497:デフォルトの名無しさん
08/05/07 13:28:29
>>496
まずはVCLリファレンスの読み方でも勉強しようか

TStringGrid
ユニット Grids

結論から言うと宣言されてない型から継承したクラスをどうやって作るのかと。

498:496
08/05/07 13:33:21
すんません、自己解決しました。

#include <Grids.hpp>

これが必要だったみたいです (^^;;;;
ども、お騒がせでした

499:496
08/05/07 13:36:14
>>497
あ、すいません、前後してしまいました
いや、なんかそこらへんのクラスに必要なヘッダってのは最初っから
インクルードされてるもんだと思ってました (^^;;;;

ありがとうございました <(_ _)>

500:デフォルトの名無しさん
08/05/07 13:38:16
>>499
パレットからフォームにコンポーネント置けば勝手にヘッダファイルが追加されるけど、ソース上でのみ宣言だと手動でヘッダincludeしないとダメだお

ついでにtypedefはいらん気もするけど。

501:496
08/05/07 14:09:51
>>500
なるほど、そういう仕組みでしたか。

typedef しとかないと、宣言のときに一々 class xxxx って
頭にclassをつけなきゃいけなくなると思っていたのですが、
あれ?typedef しなくても、「 class 」って記述抜きで通っちゃいました
なんでだろう????

色々とありがとうございました <(_ _)>


502:デフォルトの名無しさん
08/05/08 10:21:49
そして、ドナドナ

503:デフォルトの名無しさん
08/05/09 06:35:46
unixのソースをPC上に移植したいと考えています。
・別階層に同名のファイルやフォルダって作れますか?(
・一気にサブフォルダを含めてプロジェクトに作成する事はできますか?
(一つずつ、フォルダを掘って作成しないといけませんか?ドロップできなくて..)

504:デフォルトの名無しさん
08/05/09 17:04:01
コンポーネントのアンインストール方法

コンポーネントを試作中なのですが
コンポーネントをインストールした状態でのテストをしてみたいと考えています。
(オブジェクトインスペクタがどんな感じになるかとか。。。)
ということで

1.テストコンポーネントのインストール
2.コンポーネントのテスト
3.テストコンポーネントのアンインストール
4.コンポーネントの手直し

という手順を繰り返したいのですが
3.をどうやってやったらよいのかがわかりません

bcb6proです。
ご指導の程よろしくお願いします <(_ _)>

505:デフォルトの名無しさん
08/05/09 17:12:20
パッケージのインストールのダイアログで該当パッケージのチェックボックスを外すでいいんじゃないの?
てかアンインストールしなくてもテスト>手直し>コンポのビルド>インストールで問題ない。

506:504
08/05/09 17:55:26
>>505
なるほど!それでやってみます
ありがとうございました <(_ _)>

507:デフォルトの名無しさん
08/05/09 18:08:30
複数のフォームで同一の関数を使うにはどうしたらよいのでしょうか?
ヘッダファイルのpublicに入れるだけではダメですよね?
ソフトはBCB6.0Proです。
よろしくお願いします。

508:デフォルトの名無しさん
08/05/09 18:35:37
入門書嫁としか

509:507
08/05/10 00:51:44
調べたところ、以下の本が良い、とのことで注文してみましたが・・・載っていますでしょうか?
田舎なので本屋に置いてないので、見てから買うことが出来ないため、来るまでわからないんです。

URLリンク(www.amazon.co.jp)
%E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%80%88Vol-2%E3%80%89%E5%AE%9F%E8%B7%B5%E3%83%86%E3%82%AF%E3%8
3%8B%E3%83%83%E3%82%AF%E7%B7%A8-%E7%94%B0%E4%B8%AD-%E5%92%8C%E6%98%8E/dp/4877830626/ref=sr_1_22?ie=UTF8&s=books&qid=1210348178&sr=1-22

510:デフォルトの名無しさん
08/05/10 13:26:42
とりあえず関数の宣言が書いてあるヘッダファイルを
全部のフォームのソースにインクルードしときゃいいんじゃね?

511:デフォルトの名無しさん
08/05/10 13:59:05
派生コンポーネントでのプロパティのオーバーライド
アクセッサの再利用について。
bcb6.0pro / WinXP SP2 pro

例えば、TEdit を継承して TMyEdit というコンポーネントを作成し、
そこで、BorderStyle プロパティをオーバーライドして
BorderStyle を変更するときに、サイズも一緒に変化させるようにしたい場合、
新規の writeアクセッサ の中で従来のアクセッサを再利用することは出来ないもんでしょうか?
つまり
// QMyEdit.h
//---------------------------------------------------------------------------
class PACKAGE TMyEdit : public TEdit
{
private:
  void __fastcall SetMyBorderStyle(TBorderStyle BorderStyle);
      // Myアクセッサ宣言
  TBorderStyle FBorderStyle; // ここで再宣言?しないと
      // 「'FBorderStyle' は 'TMyEdit' のメンバーではない」 と怒られる
protected:
public:
  __fastcall TMyEdit(TComponent* Owner);
__published:
  __property TBorderStyle BorderStyle =           // プロパティオーバーライド
                        {read=FBorderStyle,
                        write=SetMyBorderStyle, // ←ここのwriteを拡張したい
                        default=bsSingle};
};
//---------------------------------------------------------------------------

512:デフォルトの名無しさん
08/05/10 14:01:05
// QMyEdit.cpp
//---------------------------------------------------------------------------
void __fastcall TMyEdit::SetMyBorderStyle(TBorderStyle BorderStyle) // Myアクセッサ実装
{
  if(BorderStyle != FBorderStyle)
    if(BorderStyle == bsSingle) this->Width += 10; // なんだかんだで
    else                    this->Width -= 10; // ぐちゃぐちゃやってから

  TCustomEdit::SetBorderStyle(BorderStyle);      // 基底のアクセッサを呼び出す
}
//---------------------------------------------------------------------------

と、こんな感じのソースなのですが
[C++ エラー] QMyEdit.cpp(39): E2247 '_fastcall TCustomEdit::SetBorderStyle(const TBorderStyle)' はアクセスできない
と怒られてしまいます。
っていうかよく考えたら、元々こいつらはprivateで宣言されてるはずなので
当たり前っつっちゃ、当たり前なんですが、なんとかして SetBorderStyle ってのを
再利用できないものでしょうか?
それともやっぱり、ゴリゴリと一から実装し直さないと駄目なのものなのでしょうか?
よろしくお願い致します <(_ _)>

513:507
08/05/10 15:49:09
>>510
それはやっているんですけど、動かないので・・・。
メインのフォームに書かれている関数なので、そのヘッダファイルは他のフォームでもインクルードしているのですが、
未定義の関数として見られてしまうんです。

514:デフォルトの名無しさん
08/05/10 16:40:20
TEdit から継承されたBorderStyleに値を突っ込めばええだけだろ。



515:デフォルトの名無しさん
08/05/10 16:51:18
>>513
メインフォームのメンバ関数として定義してりゃそりゃ見つからんだろ。
普通の関数にしないと。

516:デフォルトの名無しさん
08/05/10 18:26:48
>>514
なるほどっ!!

//  this->BorderStyle = FBorderStyle; // ←これじゃBorderStyleが変わるわけがない
    TEdit::BorderStyle = FBorderStyle; // ←こっちでバッチリ!!

オーバーライドされる前のやつってのも、こうすれば使えるんっすね!!
ありがとうございましたぁーーーーっ!!!

517:507
08/05/10 18:55:18
>>515
あー、そゆことですか
ありがとうございました

518:デフォルトの名無しさん
08/05/10 19:38:35
>>517
C++Builderの入門書じゃなくてC/C++そのものの入門書読むことをすすめとく。
STLもvectorくらいは最低覚えとけ。

519:デフォルトの名無しさん
08/05/13 15:48:44
プロパティエディターを登録しようとしても「'__classid' には VCL 形式のクラス型が必要」となってしまう。

enum TMyEnum {meA = 3, meB = 6, …… };
という型のプロパティを、オブジェクトインスペクタでプルダウンリストから選択して設定できるようにしたい。
ということで、プロパティエディターに TEnumProperty を使って登録しようと思ったのですが、ヘルプを参考に
  #include <DesignEditors.hpp>
  namespace Tenumproperty
  {
    void __fastcall PACKAGE Register()
    {
      RegisterPropertyEditor(__typeinfo(TMyEnum), 0L, "", __classid(TEnumProperty));
    }
  }
とやっても、
[C++ エラー] BinEdit.cpp(52): E2242 '__classid' には VCL 形式のクラス型が必要
というエラーが出て通りません。
インクルードするヘッダを <VCLEditors.hpp> と取り替えたり、両方記述してみたり、
あるいは、「Designeditors::TEnumProperty」としてみたりとか色々と試行錯誤してみましたが駄目でした。
  class DELPHICLASS TEnumProperty;
  class PASCALIMPLEMENTATION TEnumProperty : public TOrdinalProperty
というのは「VCL 形式のクラス型」ではないのでしょうか?

ご指導の程、よろしくお願いいたします。
<(_ _)>


520:デフォルトの名無しさん
08/05/13 16:46:19
すみません。RegisterPropertyEditor のヘルプをよく読んでいませんでした。
エラーが出ていたのは、__classid(TEnumProperty) ではなく、__typeinfo(TMyEnum) の方でした。
TMyEnum はクラスではないので、
  PTypeInfo TypeInfo;
  PPropInfo PropInfo = GetPropInfo(__typeinfo(TForm), "BorderStyle");
  if (PropInfo)
    TypeInfo = *(PropInfo->PropType);
という具合にしないといけないようですが、GetPropInfo がよくわかりません。
ヘルプを見ても引数が void のものしかありませんし、
Win32API の方で GetProp というのが該当する様ですが、こちらに変えてもうまくゆきませんでした。
enum型の型情報ポインタってのは、いったいどうやったら取得できるのでしょうか (´;ω;`)


521:デフォルトの名無しさん
08/05/13 19:02:40
ヘルプに記載はありませんでしたが、
  extern PACKAGE PPropInfo __fastcall GetPropInfo(PTypeInfo TypeInfo, const AnsiString PropName)/* overload */;
こんな関数がオーバーライドされているようでした。
コンポーネント本体のヘッダ、ソースと同じパッケージに突っ込むことで
なんとかこれで「TMyEnum型の型情報ポインタ」とやらを取得できているっぽいです。
これで、プロパティエディタを登録できたはず!
と思いきや、全然反映されていません(´;ω;`)
素のTEnumPropertyじゃ駄目なのかと、継承クラスを作ってもみましたが、やっぱりだめ
  Designintf::TPropertyAttributes __fastcall TAlignmentProperty::GetAttributes(void){
    return TPropertyAttributes() << paValueList << paRevertable;
  }
  AnsiString __fastcall TAlignmentProperty::GetValue() {
    int iValue = GetOrdValue();
    switch(iValue) { 〜中略〜
    default : return AnsiString("dtUnknown");
    }
  }
  void __fastcall TAlignmentProperty::SetValue(const AnsiString asValue) {
    if(asValue == AnsiString("dtLeftTop") ) SetOrdValue(DT_LEFT + DT_TOP + DT_SINGLELINE + DT_NOCLIP);
    else SetOrdValue(NULL);
  }
TEnumPropertyを継承したときのオーバーライドってこれで合ってますでしょうか よろしくお願いします <(_ _)>


522:デフォルトの名無しさん
08/05/17 22:06:01
動的にフォームを出したいのですが、
TfmOption *fmOption = new TfmOption(this);
fmOption->ShowModal();
delete fmOption;

どうもうごきません。

それとモーダルもしたくないのですが、
普通にメインウィンドウと同等のウィンドウとしたいのです。
オプションで初期にはロードしたくありません

523:デフォルトの名無しさん
08/05/18 07:43:32
>>522
TForm::Visibleをチェック。
新規作成したフォームはデフォルト値がfalseになってる。

524:デフォルトの名無しさん
08/05/18 10:04:48
ShowModal();すると、自動的にVisible=trueに設定されるから
Visible=trueは必要ないハズ。
>>522は基本的にOKだと思う。
動かないとは、表示されないという意味なのだろうか。
モーダルにしたくないなら、
fmOption->Show();


525:デフォルトの名無しさん
08/05/18 14:42:51
//---------------------------------------------------------------------------
void __fastcall Tform1::Button1Click(TObject *Sender)
{
*fmOption = new TfmOption(this);
fmOption->Show();

}
//---------------------------------------------------------------------------
void __fastcall Tform1::Button2Click(TObject *Sender)
{
delete fmOption;

}
//---------------------------------------------------------------------------

//ヘッダ
private: // ユーザー宣言
TfmOption *fmOption ;

まず、*fmOptionの*すらわからずやってます。

やりたいことは、オプションのコンポーネントがおおすきるので、
fmOptionの起動に時間がかかります。
それで、exe起動時に起動画面をだし、その間にオプションを出すよていです。
自動生成フォームとして提供したら起動画面がオプションがロードされた後
出てきて意味がないのです。
で、メインフォームのprivate変数にオプション保持用の変数をもって、
ロードしたいのですが、簡単そうでむずかしくて・・・。

526:デフォルトの名無しさん
08/05/18 14:43:57
ネット見てもShowModalしか出てこなくて。

527:デフォルトの名無しさん
08/05/18 19:21:12
で?

528:デフォルトの名無しさん
08/05/19 01:06:04
つかC/C++の基本だけでも勉強しないとにっちもさっちもいかなんじゃないかな。
その気がないならDelphiのほうがまだましだと思う。

529:デフォルトの名無しさん
08/05/19 17:06:13
>>525も低脳だが、
>>528の方がもっと低脳

の件について

530:デフォルトの名無しさん
08/05/19 19:49:26
なんでー?

531:デフォルトの名無しさん
08/05/19 19:58:38
>525
ヒント:ヘルプ

532:デフォルトの名無しさん
08/05/20 17:59:51
>>529
× の件
○ な件

533:デフォルトの名無しさん
08/05/20 18:07:55
ものすごく素朴な質問なんですがエディットボックスがあるとして
buf[0]の値が255であるとき

Edit->Text.printf("%02X",buf[0]);

ヘキサの[FF]と表示されるようにしたいのですが、やはり
AnsiString ss.printf("%02X",buf[0]);
Edit->Text = ss;
のように代入するしか方法はないのでしょうか?先人の方教えて
頂けませんか?

534:デフォルトの名無しさん
08/05/20 18:25:01
Edit->Text = AnsiString().sprintf("%02X", buf[0]);

535:533
08/05/20 18:45:00
>>534
教えて頂きありがとうございます。長い間のモヤモヤがとれて
すっきりしました。

536:デフォルトの名無しさん
08/05/20 19:39:56
char[100]とかで配列持ってて、
AnsiStringで受け取った入力を、char[80]から入れたいんだけど、どすればいいんすか?


537:536
08/05/20 19:41:10
連投すんません
入力されるブツは、日本語ダス

538:デフォルトの名無しさん
08/05/20 19:58:30
>>536
strcpy

539:デフォルトの名無しさん
08/05/20 20:22:05
エディトボックス入力(日本語を想定)のAnsiStringの文字列長ってどうやって調べるの?

540:デフォルトの名無しさん
08/05/22 21:03:52
すいませんが教えてください。
BDS2006にて
VCLフォームアプリケーションを新規作成する。
TExcelApplicationをフォームに貼り付ける。
コンパイルすると
[リンカ エラー] Error: 未解決の外部参照 '__fastcall System::Variant::operator =(wchar_t *)' が
C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\BCBOFFICEXP.LIB|Excel_XP_srvr.cpp から参照されました
というエラーが出ます。
このエラーの解決方法がわかりません。
なにかをincludeしなければならないのでしょうか。


541:デフォルトの名無しさん
08/05/22 21:09:34
ちなみに、BCB5で同じことをすると、
Excel_XP・・・となっている部分が
Excel_2K・・・となり
問題なくコンパイルは通ります。


542:デフォルトの名無しさん
08/05/22 21:12:15
>>540
ヘッダじゃなくてライブラリファイルが抜けてるっぽいね。リンカエラーだから。


543:デフォルトの名無しさん
08/05/26 22:29:09
imageコンポーネントでTColor型で絵を描いていきたいんだが、
BMP形式で保存すると32bitになりますよね?
そこで、PixcelFormat で pf24bitを指定すると、なぜか書けないんです。
そこで、あえて32bitを指定してもなぜか書けずに特に指定せずに
image->picture->〜 = (TColor)0xffffff
だと書ける。
ただ、保存するのは24bitのBMPにしたいんだが、ググると
ColorToRGBという関数があるみたいなんですが、
これの使い方教えて貰えませんか?ヘルプ見ても、いまいちわからなくて。
また、この関数使うのより簡単に24bitBMPへ保存できる良い方法が有れば伝授してください

544:543
08/05/26 23:01:57
すいません。
環境は、Builder 2006です。

545:543
08/05/27 19:08:00
自己レス
Canvasに書いてから、pf24bitを指定する事で書けました。
どうやら順番があったようです

546:デフォルトの名無しさん
08/06/08 14:40:21
bcb2007を使っています。
dll内にフォームを用意したいのですが
うまくいきません

Form1=new TForm1(this);Form1->ShowModal();delete Form1;
うまく呼び出す方法はあるのでしょうか?

547:デフォルトの名無しさん
08/06/09 23:17:59
C++Builder6.0でマルチスレッドのプログラムを作っています。

フォームにボタンとラベルを各1個配置し、ボタンをクリックする度に
ラベルに表示される数字が+1されるようにしてあります。
以下のコードで普通に実行するぶんには動くのですが、(※)の箇所で
ブレークを掛けてステップ実行を2回くらいやって再実行すると
フリーズ(と思うほど長時間固まる)してしまいます。
なぜなのか教えて頂けないでしょうか。

void __fastcall TAppThread::Execute(void)
{
  int  cnt;

  cnt = 0;
  count = 0;
  while ( 1 ) {
    cnt++;       //(※)
    cnt--;
    cnt++;
    Synchronize( Update );
    Suspend();
  }
}
void __fastcall TAppThread::Update()
{
  Form1->Label1->Caption = IntToStr( ++count );
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if ( appThread )
    appThread->Resume();
}

548:デフォルトの名無しさん
08/06/17 03:43:57
builder6.0を使っている初心者です。
恐縮ですが質問させてください。

プログラム上で動的にコンポーネント(TPanel)を配置しています。
そのコンポーネントにOnDragDropとOnDragOverイベントを取得させて
動作させたいのですがやり方がよく分からずうまくいきません。
初歩的な質問で申し訳ありませんが教えて頂けないでしょうか。
よろしくお願いします。

549:デフォルトの名無しさん
08/06/17 08:15:26
抽象的すぎて意味わからんがな(´・ω・`)

550:デフォルトの名無しさん
08/06/17 10:23:37
C++Builder6 をつかっています。

だんだんプロジェクトが大きくなってくると、デバッガのインスペクトとかで表示される値が
むちゃくちゃになってきます。回避方法ってないものでしょうか?

551:デフォルトの名無しさん
08/06/17 10:26:58
>デバッガのインスペクトとかで表示される値が むちゃくちゃになってきます。

それは無い。

552:デフォルトの名無しさん
08/06/17 11:24:59
そんな変数無ぇって言われる事はあるな

553:デフォルトの名無しさん
08/06/17 11:26:56
それはプロジェクトの大小じゃなくて、
コンパイラの最適化の結果。

554:デフォルトの名無しさん
08/06/17 11:32:53
そこは置いといて、変になることがあるってことよ

555:デフォルトの名無しさん
08/06/17 11:52:05
BCB6では変にならないお。

プロジェクトにファイルを追加した直後は、ブレークポイントで止まらなくなるけど。
ブレークポイントで止まった後は変数が変になることはない。

556:デフォルトの名無しさん
08/06/17 12:13:29
全然関係ないけど、うちのBCB6は

struct Hoge : vector<int> {};
Hoge hoge;

try
{
    string a;

    if (a.empty())
        throw exception();

    Test test;
}
catch (...)
{
}

これのTest(何のクラスでもいい)のデストラクタがなぜか呼ばれるんだけど、
再現する人いるかな。

557:550
08/06/17 12:37:45
ごめん、うちのバージョンは5だった・・・。

コンパイラの最適化OFFで、

if(Instance != NULL)
{
 Instance->Data = 3;
}

とかやって、Instance->Data にブレークポイントを設定したとする。
それで、Instance の値を見ると NULL になってることがある。
プログラム自体はちゃんと動くんだけど、デバッガが、グダグダになることがある。
ダイレクトXアプリってのもあるのかなぁ?

あと、これは仕様だと思うんだけど、いつのまにか、TOpenDialog で
マイコンピュータを開くと、なにも表示されなくなった。

558:デフォルトの名無しさん
08/06/17 12:39:14
>>557
多分、6にうpするとそんなことない。

559:デフォルトの名無しさん
08/06/17 12:49:03
>>558
6ってもう買えないよね?

560:デフォルトの名無しさん
08/06/17 12:53:02
あー、新規なら買えるのか。スレ汚しスマヌ。

561:デフォルトの名無しさん
08/06/17 16:40:40
コードガードにバグがある6を今更買うの?

562:デフォルトの名無しさん
08/06/17 16:42:46
5ならコードガード無いんじゃね?

ま、5と6使った自分なら、間違いなく6を選ぶ。

563:デフォルトの名無しさん
08/06/17 17:07:53
5にもコードガードついてるよ。5のコードガードのバグは気づかなかった。
BDS2006 はもってるんだけど、なんかこれもバギーらしいな。
思い切って、2008 がでるまで待とうかとも思ってるんだけどね。
9月ぐらい?

printf デバッグとかもう嫌だよ・・・。

564:デフォルトの名無しさん
08/06/17 18:40:32
デバッガで変数が正しく表示されなくなったら
パソコンを再起動
これ常識。
これで回復する。
自分のプログラムで、どっかぶち壊しまくってるんだよ。


565:デフォルトの名無しさん
08/06/17 18:45:00
9xじゃあるまいし

566:デフォルトの名無しさん
08/06/17 18:52:20
9xなら暴走して落ちるんだよ。
自分で自分のDSをぶちこわしているから変数がヘンになる。


567:デフォルトの名無しさん
08/06/17 19:11:35
今時アプリがどんだけメモリ空間壊したって、PCの再起動なんて必要ないだろw
DSとか言ってるから古い人ぽいけど。

568:デフォルトの名無しさん
08/06/17 19:47:06
じゃあFSとか言えば納得するのか


569:デフォルトの名無しさん
08/06/17 22:13:34
メモリ空間を壊すって事は、Builder の場合、
デバッガ、コードガード、OS、の3つをすり抜けないと無理なんだけど、
そう言う事って出来るの?セキュリティホールみたいな物か?


570:548
08/06/18 02:27:24
すみません。説明不足でした。

void __fastcall TForm1::N1Click(TObject *Sender)
{
TTabSheet* tb;
TScrollBox* sbox;
TPanel* panel;
TButton* bt;

tb = new TTabSheet(PageControl1);
tb->PageControl = PageControl1;

sbox = new TScrollBox(tb);
sbox->Parent = tb;
...
panel = new TPanel(sbox);
panel->Parent = sbox;
...
bt = new TButton(panel);
bt->Parent = panel;
...
bt->DragMode = dmAutomatic;
}

こんな感じでPageControlに新しいタブを作成し、その中にTScrollBox、
更にその中にTPanel、更にその中にTButtonを配置させています。
やりたいことは、この新しく配置したTPanel上のTButtonをマウスドラッグで
移動できるようにしたいのですがその方法がよく分からないということです。
回りくどい説明で申し訳ありません。

571:デフォルトの名無しさん
08/06/18 07:39:03
ボタンをドラッグってどんな操作を想定してるの?ボタンはクリックするものなのに。

572:548
08/06/18 12:05:40
>>571
マウスの操作でボタンの座標位置を変更できるようにしたいです。
「自分で追加したボタンを自分の配置したい位置につまんで移動できる」
と言った方がわかりやすいかもです・・・。

OnDragDropイベントではなくOnMouseMoveイベントを使えばもっときれいにできるのかもしれないんですが、
ここではとりあえず「ドラッグで移動して配置する」という操作だけを目的としていたので
イベントとして使いやすいと感じたDragDropを使用しています。

573:デフォルトの名無しさん
08/06/18 22:48:51
いや、だから、ボタンをつまもうとしたらクリックになっちゃうでしょ。
でクリックしようとしたときにちょっとした操作ミスでドラッグで移動になる、と。
そんな自己満足なUIは考え直せって。

574:デフォルトの名無しさん
08/06/18 23:07:01
そんなのレイアウトモード←→通常モードみたいな感じで切り替えれば済む問題でないの

575:デフォルトの名無しさん
08/06/18 23:39:38
もちろんそれでもOKだと思うが。
で所望の動作はWM_NCHITTESTでHT_CAPTIONってのがお手軽。

576:548
08/06/20 02:47:20
>>573-575
ボタンクリックとドラッグ混同の操作ミス等、言われてみたらその通りだと感じました。
アドバイス含め、対処できるように組み直したいと思います。
移動についてはさせることができました。
アドバイス、ご指摘ありがとうございました。

577:デフォルトの名無しさん
08/06/20 15:57:40
>>576
うちも VCL 以外で近いことを以前やったことあるけど、
そのときの実装は何ピクセル以上ドラッグするとドラッグ開始、
っていうふうにしてた。

578:デフォルトの名無しさん
08/06/24 04:30:23
古いプロジェクトをコンパイルすると

-Hr スイッチにより vcl4.h を vcl.h の代わりにインクルードします

っていうメッセージが出るんだけど、このスイッチって何処に記載されてるの?
古いプロジェクトの移行って面倒だね・・・。

579:デフォルトの名無しさん
08/06/30 16:46:20
Vi$taにBCB6をインスコできますか?

580:デフォルトの名無しさん
08/07/01 04:50:20
V$sta捨てれ

581:デフォルトの名無しさん
08/07/01 09:39:37
正直、そうしたいんですが、出来上がったexeのVi$ta検証に必要。

ところで、Vi$taってなぜかXPとマルチブートできませんよね?

582:デフォルトの名無しさん
08/07/01 09:50:06
っリムーバブルフレーム

583:デフォルトの名無しさん
08/07/01 19:26:51
>>579
Vistaの動作検証だけなら開発は2000かXPで。
視覚スタイルは.manifest同梱で対応可。
Vistaアイコン(PNG圧縮256px)はIcoFxで可能。
res作成はVista対応SDKのrc.exeで可能。

584:デフォルトの名無しさん
08/07/01 19:49:26
2000だとVistaなSDKがインスコできない罠が(;゙゚'ω゚'):

585:デフォルトの名無しさん
08/07/01 22:49:40
>>583
そうなのか・・・XPに入れてexeとdllだけ2000にコピーしたから気付かなかったわ。

586:デフォルトの名無しさん
08/07/02 08:57:02
>>583
ビジュアルスタイル対応は、Theme Manager 使った方がいいのでは。

587:デフォルトの名無しさん
08/07/04 22:52:10
Windows XPでTurbo C++を使っているのですが、
TButtonのCaptionの色を変えるのに、次のようなコードでは変わりませんでした。


void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Button1->Caption == "blue") {
Button1->Caption = "red";
Button1->Font->Color = clRed;
} else {
Button1->Caption = "blue";
Button1->Font->Color = clBlue;
}
}

どうしたらいいんでしょうか? アドバイスよろしくお願いします。



588:デフォルトの名無しさん
08/07/04 22:56:41
TButtonのキャプションの文字色は変更できません。これはWindowsの仕様です。
もし文字色をシステムに従わないようにしたいのであれば、オーナドローでどうぞ。

589:587
08/07/04 23:06:41
>>588 迅速な回答ありがとうございます

590:デフォルトの名無しさん
08/07/06 01:08:29
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
char *aaa;
aaa = "jpg";
if(aaa == "jpg")Button1->Caption = "jpg";
}

C言語の基本的なことだとはわかっているのですが・・・
これがtrueにならない理由って何でしょう?
基本的すぎるのか、文字列でググっても出てこないのはなぜー

591:デフォルトの名無しさん
08/07/06 01:18:27
>>590
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char* aaa;
char* bbb;
aaa = "jpg";
bbb = "jpg";
ShowMessage(AnsiString().sprintf("aaa=%08X bbb=%08X", aaa, bbb));
}

592:デフォルトの名無しさん
08/07/06 03:08:06
メモリ壊しまくりんぐ

593:デフォルトの名無しさん
08/07/06 04:34:54
リリースビルドならtrueになりそう

594:デフォルトの名無しさん
08/07/06 05:21:36
char* の大きさは4byteだから、 3文字突っ込むとちょうど4byte使用するから
メモリは壊れないのではないのか。


595:デフォルトの名無しさん
08/07/06 05:24:50
operator ==(const char*, const char*) {}
ができないのを今初めて知った(´・ω・`)

596:デフォルトの名無しさん
08/07/08 13:57:48
>>590
if ( strcmp( aaa,"jpg" )==0 ) とすればええんでないの?

"jpg"ってすると、メモリのどっかに確保された4バイト('j','p','g',0)のアドレスを示す。
aaaに格納された"jpg"のアドレスと、ifで比較している"jpg"のアドレスが違うからfalseになる。

597:デフォルトの名無しさん
08/07/08 18:27:30
>>590
char* でやらないで AnsiString でやれば動く。

598:デフォルトの名無しさん
08/07/09 23:36:09
イベントハンドラを呼び出すとき、
Button1Click(Button1); Button1Click(Button2); Button1Click(Form1);
のどれでも動くみたいですが、Senderには普通何を与えるのが正しいの?
Senderの役割を教えてください。

//Form1上にButton1とButton2
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button1Click(Button2);
}


599:デフォルトの名無しさん
08/07/09 23:54:20
Senderはイベント呼び出し元のTagやデータ読むのに使うから、そのイベントに関連づけたいオブジェクトを指定。
たとえば拡大ボタンと縮小ボタンがあって、それぞれにイベントハンドラ書くのはアホ臭いから
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 int zoom;
 TButton* button = dynamic_cast<TButton*>(Sender);
 zoom = button->Tag;
 if (zoon == 1) 拡大();
 else 縮小();
}
こんな感じで使ったりする。

ハンドラ内でSender使わないならthisで十分。

600:デフォルトの名無しさん
08/07/10 00:14:17
>>599 ありがとうございます。


601:デフォルトの名無しさん
08/07/22 14:35:51
WindowsXPでBCB6.0を使っています。

 URLリンク(homepage2.nifty.com)
上記のサンプルプログラムを自分の環境で実行してみたのですが、以下のエラーが出てしまいます。
 [リンカ エラー] 外部シンボル 'GetIfTable' が未解決(D:\ADDRESGET\UNIT1.OBJ が参照)

ソースファイルをダウンロードして実行してみたところ、正常に動作したことから環境は間違って無いと思うのですが・・・。
インクルードファイルも同じにして、オプションのリンカやディレクトリ/条件も揃えてみましたがダメでした。
この場合、何を見たらよろしいのでしょうか?
よろしくお願いします。

602:デフォルトの名無しさん
08/07/22 14:54:57
iphlpapi.libリンクしてないだろ。
bcb/lib/psdkにあるのプロジェクトに追加しる

603:デフォルトの名無しさん
08/07/22 15:01:37
>>602
・・・その通りでした。
インクルードで指定して、エラーも出ていないから必要無いと思い込んでました。
本当にありがとうございました。

604:D
08/07/22 15:12:34

  ☆ チン ハラヘッタ〜
       ハラヘッタ〜
☆ チン  〃 ∧_∧
 ヽ___\(\・∀・)
  \_/ ⊂ ⊂_)
  / ̄ ̄ ̄ ̄ ̄ /|
 | ̄ ̄ ̄ ̄ ̄ ̄| |
 |淡路たまねぎ|/
   ̄ ̄ ̄ ̄ ̄ ̄

605:デフォルトの名無しさん
08/07/22 15:38:51
>>603
コンパイルとリンクに違いについてもうちょっと勉強した方がいい

606:デフォルトの名無しさん
08/07/25 03:16:38
文字列の加工方法について質問です。

char chrBuf[1024];
AnsiString asBuf;

strcpy(chrBuf,"123456");
strcpy(asBuf.c_str(),chrBuf);
asBuf.Delete(3,3);
Label1->Caption = asBuf.c_str();

これで、「126」と表示させたいのですが、実際には「123456」となってしまうのは何故でしょうか・・・?
よろしくお願いします。

607:デフォルトの名無しさん
08/07/25 04:39:22
char chrBuf[1024];
AnsiString asBuf;

strcpy(chrBuf,"123456");
asBuf = chrBuf;
asBuf.Delete(3,3);
Label1->Caption = asBuf;

とやりたいの?

Caption は AnsiString だから、AnsiString → char * → AnsiString っていう
キャストが行われると思うんだけど、これはわざと?

c_str() で確保されたメモリ空間の寿命は未確定。
コピー先として使うべきではない。

608:デフォルトの名無しさん
08/07/25 10:30:26
>>607
AnsiStringを加工に使いたいのですが、挙動を理解しきれてないので・・・。

URLリンク(homepage1.nifty.com)」で、
>char* c_str( )
>文字列をC言語の char* 文字列で返す。返すのはあくまでも char* 型のポインタであり、
>文字列のコピーが作られるわけではない。従って、受け取った char* 文字列を安全に操作したい場合は strcpy( ) などでコピーすると良い。
と、あるのでコピーしたのですが・・・解釈が違ったのかな?

ポインタとして渡せば動作するのですね。
ありがとうございます。

609:デフォルトの名無しさん
08/07/25 10:35:12
>c_str( )

は、無理して使う必要は無い。

どうしても使わないといけないときは、AnsiStringとstd::stringの渡しくらい。

例えば、

AnsiString SBuf;
string sBuf;

のとき、

sBuf = SBuf.c_str();
SBuf = sBuf.c_str();

と書く。

それ以外は、「.c_str()」を書かなくても、多分演算子がオーバーロードされてて、簡単に代入できる。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4359日前に更新/254 KB
担当:undef