C++Builder相談室 Part16

このエントリーをはてなブックマークに追加
681デフォルトの名無しさん
やってしもうた・・・
VS2003→VS2005に完全移行
VS2003をアンインストールしてから気がついた
.NET1.x向けアプリのメンテができないってどういうことよ('A`)
こんな別物なら製品名変えてくれよも後の祭りorz
682デフォルトの名無しさん:2006/09/07(木) 13:46:24
>>681
馬鹿?
当分の間、古い開発環境も残すのは常識じゃん。
683デフォルトの名無しさん:2006/09/07(木) 13:58:27
V$系はバージョン違いを共存できないっしょ。
684デフォルトの名無しさん:2006/09/07(木) 14:24:58
>>683
超阿呆の馬鹿?
http://msdn2.microsoft.com/ja-jp/library/ms246609.aspx
>複数バージョンの Visual Studio のインストール
>Visual Studio 6.0、
>Visual Studio .NET 2002、
>Visual Studio .NET 2003、および
>Visual Studio 2005 を同じコンピュータにインストールすることがサポートされています。
685デフォルトの名無しさん:2006/09/07(木) 14:42:10
>>684
超阿呆の馬鹿?

現実には競合起すよ。
686デフォルトの名無しさん:2006/09/07(木) 14:50:07
>>681
コピペウザイ
687デフォルトの名無しさん:2006/09/07(木) 17:12:47
>>670
すでにSSE/SSE2処理関数が完成してて今後メンテナンスする必要がないのなら、応急処置として __emit を使う手もある。
簡単に言うとasm文の中に任意のバイナリコード(アセンブル後のコード)を埋め込んでしまう方法。

でも自分ならSSE/SSE2処理関数をDLLに追い出してVC++でコンパイルするかな。
(VisualC++ 2005 Express Editionなら無料だし)
688デフォルトの名無しさん:2006/09/07(木) 17:23:08
>>681
古い開発環境はVMwareやVirtual PC使ってまるごと保存管理するといいよ。
689本田:2006/09/08(金) 01:22:23
>>674
> >>672
> ありがとうございます。
> NASMとの組み合わせでは、インラインアセンブラはできないみたいです。
> 厳しい・・・

インラインアッセンプラを使ってる所から、
SSE,SSE2のニーモニックコードを削除して、
コンパイルできるようにして、
アッセンブリ言語を出力する。

出力されたアッセンブリ言語に、
SSE、SSE2ニーモニックコードを加える、
それをNASMでアッセンブルする。
690デフォルトの名無しさん:2006/09/08(金) 01:34:45
-Eでmasmなりを指定しても良さそうだし
適当なところに asm include mymacros.inc みたいな感じでも
出来そうな気がするけど。

masmを代替アセンブラとして使えるように
アセンブラ出力に ifdef ??version とかが入ってるわけだし。
691デフォルトの名無しさん:2006/09/09(土) 01:30:51
よーわからん、ターボ君は無料?
で、boost使えますか? BCB6なんだが、安いなら自宅用に買うかな
692デフォルトの名無しさん:2006/09/09(土) 01:44:00
693デフォルトの名無しさん:2006/09/09(土) 09:34:20
BCBからのバージョンアップは28,000円か
694デフォルトの名無しさん:2006/09/09(土) 10:01:10
BCBからBDSへは29800円でしたw
695デフォルトの名無しさん:2006/09/09(土) 10:28:38
paradox7なんですが、フィールド名に「1個目」ってのを使ったら
SQLの問合せで不具合を生じて困ってます。

SELECT 1個目 FROM mytable;

で、結果が
個目
1
1
1
1
1
1
1
ってなってしまいます。
ちゃんと1個目として認識させるにはどうしたらいいのでしょうか?
696デフォルトの名無しさん:2006/09/09(土) 10:58:25
>695
SQLの基礎からやり直してきてください
http://pc8.2ch.net/db/
697695:2006/09/09(土) 11:50:52
わかりません><
698デフォルトの名無しさん:2006/09/09(土) 12:06:17
本屋で入門でも買えよ
699デフォルトの名無しさん:2006/09/09(土) 12:30:33
意地悪><。
700デフォルトの名無しさん:2006/09/09(土) 12:58:47
>>692
サンクス、まず家でやって会社で提案かな〜〜
701デフォルトの名無しさん:2006/09/09(土) 14:05:55
>>695
SQLはよく知らんが別に結果はそれでいいんじゃないのか?
702695:2006/09/09(土) 15:41:37
もういいです。><
フィールド名変えました
703デフォルトの名無しさん:2006/09/09(土) 16:19:18
ネーミングセンスもプログラミングセンスもない香具師だな
704デフォルトの名無しさん:2006/09/09(土) 17:13:09
フィールド名って最初に数字来てもいいんだっけか?
705デフォルトの名無しさん:2006/09/09(土) 20:54:19
みんなフィールド名って言うんだな。
ややこしいからカラムで良いじゃん。
706デフォルトの名無しさん:2006/09/09(土) 21:45:21
列名
707477:2006/09/10(日) 02:46:06
超初歩的で申し訳ないのですが原因が良く分からないので・・(一部省略してます)
[HogeClass.h]
#ifndef HogeClassH
#define HogeClassH
//---------------------------------------------------------------------------
class Hoge{
private:
public:
Hoge( void );
~Hoge( void );
}

[HogeClass.cpp]
//---------------------------------------------------------------------------
#include <vcl.h>
#include "HogeClass.h"
//---------------------------------------------------------------------------
Hoge::Hoge( void )
{
}
Hoge::~Hoge( void )
{
}

コンパイルするとHoge::Hoge( void )のコンストラクタの行で
[C++ エラー] HogeClass.cpp(10): E2111 ここでは型 'Hoge' は定義できない
[C++ エラー] HogeClass.cpp(10): E2136 コンストラクタには戻り型は指定できない
と怒られるのですが、何故なのでしょうか・・orz
708デフォルトの名無しさん:2006/09/10(日) 02:46:39
失礼、名前欄は無視して下さい
709デフォルトの名無しさん:2006/09/10(日) 03:00:27
void 全部消してごらん
710デフォルトの名無しさん:2006/09/10(日) 03:01:13
あとヘッダ側の最後の}の後ろに;がないな
711デフォルトの名無しさん:2006/09/10(日) 03:10:28
>>709-710
ヘッダの最後の;が抜けていたのが原因だったようです
ありがとうございました
712デフォルトの名無しさん:2006/09/10(日) 08:57:28
メインスレッドから生成したTThreadのクラスに値を渡すのと
TThreadのクラスからメインスレッドへ値を返すには具体的にどのようにやればいいのでしょうか?

現在はメインスレッドにpublic変数を定義してTThreadのクラスから参照していますが
よくないやり方のような気がしてならないのです
713デフォルトの名無しさん:2006/09/10(日) 11:18:54
>>712
TThreadを継承したクラスを作ってるはずだからそっちに受け渡し用のメンバ関数を作ればいい。
べつにメイン側にメンバ関数を作ってもいいと思うが。

言うまでもないと思うがスレッド間の同期には気をつけるように。
714デフォルトの名無しさん:2006/09/10(日) 14:59:22
>>713
レスありがとうございます
試行錯誤してみます
715デフォルトの名無しさん:2006/09/10(日) 18:05:45
SAFE_DELETE()が定義されていない関数と言われるのですが
何かinclude必要なものありましたっけ?
716デフォルトの名無しさん:2006/09/10(日) 18:40:05
>>715
誤爆?
717デフォルトの名無しさん:2006/09/10(日) 23:39:29
SAFE_DELETE()が定義されていない関数と言われるのですが
何かinclude必要なものありましたっけ?
718デフォルトの名無しさん:2006/09/11(月) 00:23:05
719デフォルトの名無しさん:2006/09/11(月) 00:24:32
全く参考になるサイトがありませんね
720デフォルトの名無しさん:2006/09/11(月) 01:28:18
一目瞭然ですけど。
721デフォルトの名無しさん:2006/09/11(月) 04:10:35

 Turbo C++ は、
Borland Developer Studio 2006 Professionalの
C++Builder2006とほぼ同等の機能を持つBorland(DevCo)の新製品


TurboC++についてBorlandの説明サイト
http://bdn.borland.com/ja/article/33666

C++Builder2006の新機能
http://www.borland.com/resources/jp/pdf/white_papers/whats_new_bcb2006_ja.pdf

Turboのブランド復活
http://www.itmedia.co.jp/enterprise/articles/0608/08/news056.html

TurboC++ 機能一覧pdf
http://www.turboexplorer.com/files/jp/turbocpp_features.pdf

Turbo Explorerは、下記Webサイトからダウンロードして入手のほか、
雑誌や書籍等の付録CD-ROMとしても提供する計画とか。
Turbo Professionalは、9月19日より出荷を開始予定。

http://www.turboexplorer.com/jp/
http://www.borland.com/downloads/download_turbo.html

722デフォルトの名無しさん:2006/09/11(月) 15:48:16
ほぼ同等の機能を持つモノの単身が28000円
は高杉なんすけど
一度BDS2006であの値段出してるんだから
UGは2万円以下にすべき
俺は買わんぞ
723デフォルトの名無しさん:2006/09/11(月) 19:14:28
BDSの方がお買い得ですかね?
724デフォルトの名無しさん:2006/09/11(月) 19:26:12
正確に言えば、6月までのBDS優待販売が一番お得だった

今のTurbo Proの値段見たら、Highlanderの発売を待つよな
725デフォルトの名無しさん:2006/09/12(火) 01:18:30
もともとサードパーティーのコンポーネントは使わないんだよなー
そうすると無償版で十分
726デフォルトの名無しさん:2006/09/12(火) 01:27:36
自作コンポも使えないじゃん。
727デフォルトの名無しさん:2006/09/12(火) 01:53:38
自作コンポも使わんよ
728デフォルトの名無しさん:2006/09/12(火) 16:09:56
どうでもいいけど、テンプレにある
<<有料>>
TMS Component Studio
http://www.tmssoftware.com/

TAdvStringGrid,TAdvColumnGridは100万行・列まで対応してるらしいぜ!
自pcで試したら、メモリ不足って言われてメイクで落ちたが・・・orz
729デフォルトの名無しさん:2006/09/12(火) 20:30:19
Turboも使わんよ
730デフォルトの名無しさん:2006/09/12(火) 22:02:22
BDS2006あるからね。
731デフォルトの名無しさん:2006/09/13(水) 01:48:48
1行レスの低能アンチさん達乙
Borlandスレのアンチにソックリだが、まさかそこから来たんじゃないよな  ま、思考方法が同じなんだと思う
もうちょっと中身のある文章書いた方が利口に見えると思うよ
732デフォルトの名無しさん:2006/09/13(水) 06:21:55
AnsiStringのメンバ関数「Format」の使い方がわかりません。
すみませんが、教えていただけないでしょうか?

また、このような基本的な事は、どのように調べたらよいのでしょう?
(オンラインヘルプでは意味不明なのですが、ふつうそれで
理解できるものなのですか)
733デフォルトの名無しさん:2006/09/13(水) 07:32:58
>>732
ヘルプだけで、わかる人にはわかる。
734デフォルトの名無しさん:2006/09/13(水) 15:31:48
>>732
BCB Format でググればいろいろ出てくる。
とりあえず、C/C++屋はAnsiString.spirntf()の方を使えばよい。
735デフォルトの名無しさん:2006/09/13(水) 22:02:25
>>731 おまえは3行書いても中身がないな
736デフォルトの名無しさん:2006/09/13(水) 22:48:40
でも735は731の3分の1の内容も無いからなぁ。
737デフォルトの名無しさん:2006/09/13(水) 23:14:36
ゼロの3分の1でもゼロだから、いっしょ
738デフォルトの名無しさん:2006/09/14(木) 05:11:05
>>735
wwwwww
ワロタwwまた見事に1行レスだよwww
これでオマエがどうして低能って言葉に骨髄反射しちゃう人間なのか 良くわかっちゃたwwwwwww

>おまえは3行書いても中身がないな
いやいや、他人に事実を指摘してあげることは、中身のあることだよ 何を言ってるの?www大丈夫?
 
リアルで低能なチンカス だったんだね ホントにかわいそうw
739デフォルトの名無しさん:2006/09/14(木) 06:24:51
うまく切り返したつもりで、自分がゼロって認めちゃった人がいるね。
740デフォルトの名無しさん:2006/09/14(木) 09:57:19
>>731 はゼロでも3行書いてる分、アホさも3倍だよね
741デフォルトの名無しさん:2006/09/14(木) 10:01:58
 __     __       n     _____  _____     ___ ___    ___
 |   |    /  /      / /    /       | /__  __/ [][] _| |_| |__ _| |_
 |   |.   /  /    /⌒ヽ/     /   / ̄ ̄|. l    / /     |    _  | |_  レ'~ ̄|
 |   |  /  /    ( ^ω^ )    /   /.  / /    |  |___      ̄|  | / / /   /| |
 |   |  /  /     ノ/ /  ノ   /    ̄ ̄ /     \__|     |  |  ̄ /_  /  | |_
 |   |. /  /   // / ノ     /   / ̄ ̄ ̄                |_|     |__|   \/
 |   |/  /  ⊂( し'./    /   /  
 |.     /     | ノ'      /   /                     ニュー速VIP
 |    /.     し'      ./   /                  http://ex14.2ch.net/news4vip/
  ̄ ̄ ̄              ̄ ̄
742デフォルトの名無しさん:2006/09/15(金) 00:12:20
相談するだけで叩かれるのを承知でお尋ねします。

*Value++ と (*Value)++は
どう違うんでしょうか?
743デフォルトの名無しさん:2006/09/15(金) 00:15:28
>>742
括弧の有る無しが違う。
744デフォルトの名無しさん:2006/09/15(金) 00:32:21
void Loop(int *Value,bool flag)
{
if (true) *Value++; else *Value--;
*value=0;
}
をi=0;Loop(&i,true);で呼び出してみ?
745デフォルトの名無しさん:2006/09/15(金) 00:37:02
あ、引数flag関係なかった。
void Loop(int *Value);だけでいいや。
746デフォルトの名無しさん:2006/09/15(金) 00:56:07
>>742
まあ、基本的に、
*Value++
なんて他の人がわかりづらいかもしれないコードは書いちゃだめだよな
747デフォルトの名無しさん:2006/09/15(金) 01:21:19
なんとなく、ストアと同時にインデックスレジスタをインクリメントしてくれる気がするから
*p++ という表現は嫌いじゃないな。
748デフォルトの名無しさん:2006/09/15(金) 03:03:45
void strcpy(char *src, char *dst)
{
while(*dst++ = *src++);
}
749デフォルトの名無しさん:2006/09/15(金) 03:21:18
バッファオーバーラン一直線
750デフォルトの名無しさん:2006/09/15(金) 08:55:21
>>748
コピー先とコピー元が標準と逆だろ〜
751デフォルトの名無しさん:2006/09/15(金) 10:20:31
>>748
これってどうなったらwhileから抜けるの?
752デフォルトの名無しさん:2006/09/15(金) 12:28:16
>>751
あのwhile文を意訳すると、
 if ( 偶然一致 || GPフォルト )
という文になる。
753デフォルトの名無しさん:2006/09/15(金) 13:36:59
>>752
アレ?代入って偽になることあるんですか?
754デフォルトの名無しさん:2006/09/15(金) 13:48:05
偶然一致って?
評価されるのは *dst でこいつが0(偽)になったら終了っていいうループでないの?
755デフォルトの名無しさん:2006/09/15(金) 13:51:11
結局、
*Value++
なんて書くと混乱させまくるということが証明されちゃったなw
756デフォルトの名無しさん:2006/09/15(金) 14:32:13
>>748
これ、K&R(これが発祥地だが)でも禿本でも普通に使われているんだよな。
わかってる人間にとっては簡潔で可読性の高い表記なんだ.が。

>>753
代入式は代入後の左辺値が評価される
これが分からないと

void __fastcall TForm1::Button1Click(TObject *Sender) {
 if ( TButton* p = dynamic_cast<TButton*>( Sender ) { ... }
}

こういうBCBの定石も使えない
757デフォルトの名無しさん:2006/09/15(金) 15:18:05
エラー E2377: If文に ) がない(関数 _fastcall TForm1::Button1Click(TObje
ct *) )
758デフォルトの名無しさん:2006/09/15(金) 15:32:53
>>751
NULL文字をコピーした時点。(文字列をコピーし終わったら)
>>748の場合、whileで評価されるのは *dst
NULL文字は0x00だから、falseになる。
759デフォルトの名無しさん:2006/09/15(金) 18:34:43
ポインタ以外にNULLという表現を使うなんちゃって野郎が居るから
初心者がさらに混乱する
760デフォルトの名無しさん:2006/09/15(金) 19:41:40
NULL(ぬるぽ) と '\0'(ぬるこーど) の違いを分かってない香具師多いよね

っつーか「ぬる」っつーのも誤読だ死ね
761デフォルトの名無しさん:2006/09/15(金) 19:59:49
>>760
ポインタを値と考えると、NULLは0以外のなにものでもないから、あながち間違いでもないけどな
762デフォルトの名無しさん:2006/09/15(金) 20:00:04
VC6でDLLを作成してそれをC++Builder4で使おうとしています。
色々調べたのですが、まずは簡単な

変数:nPCLIB
関数:fnPCLIB()

関数と変数が入ったDLLを作ろうと思い、次のことを試しました。

1.VCでDLLを作成

  ・作ったDLLのdumpbin結果
    1 0 00001005 ?fnPCLIB@@YAHXZ
   2 1 00032A78 ?nPCLIB@@3HA

    →修飾された関数・変数名がEXPORTされている

2.impdefで1.で作ったdllからdefファイルを作成する
 
 ・defの中身を見ると

  LIBRARY PCLIB.DLL

  EXPORTS
  ?fnPCLIB@@YAHXZ @1
   ?nPCLIB@@3HA @2

  →当然defファイルを作るとDLLと同様に修飾されている
763デフォルトの名無しさん:2006/09/15(金) 20:00:28
3.defファイルの修飾を外してVCに追加し、DLLを再ビルドする

・defの中身(修正後)
  LIBRARY PCLIB.DLL

  EXPORTS
  fnPCLIB   ←修飾を外したつもり
  nPCLIB

・新DLLのdumplib結果
  1 0 00001005 fnPCLIB
 2 1 00032A78 nPCLIB

   →修飾が外れているように見える

4.implibで3.のdllからBuilder用のlibファイルを作る

 ちなみに3.のdllからもう一度defを作ると、中身は

 LIBRARY PCLIB.DLL

 EXPORTS
 fnPCLIB @1
 nPCLIB @2

  →??また修飾(序数)がついてる??
764デフォルトの名無しさん:2006/09/15(金) 20:01:10
5.Builderでヘッダーをincludeし、3.のdllをコピーしてきて、
  4.のlibファイルをプロジェクトに追加してビルドする

ヘッダーの中身
 #ifdef PCLIB_EXPORTS
 #define PCLIB_API __declspec(dllexport)
 #else
 #define PCLIB_API __declspec(dllimport)
 #endif

 extern PCLIB_API int nPCLIB;
 PCLIB_API int fnPCLIB(void);

→名前解決ができていない!と怒られる

DLL内の関数名が修飾されたままで一致しないのが原因かと思っているのですが、
defファイルを直してもまた戻ってしまうようでどうすればよいか行き詰ってしまいました。

長い上に詳しい方から見ればアホな質問かもしれませんが、ずっと悩んでます。
ヒントでもいただければとてもうれしいです。
765デフォルトの名無しさん:2006/09/15(金) 20:38:37
>>761
http://www.kouno.jp/home/c_faq/c5.html#4
> NULLはポインターとしてのみ使うべきである。
766デフォルトの名無しさん:2006/09/15(金) 20:53:46
「だから何なのか」を書かないのは
無関係な引用でハッタリかます時の基本だね。
767デフォルトの名無しさん:2006/09/15(金) 21:57:38
だから何なのか
768デフォルトの名無しさん:2006/09/15(金) 22:03:36
だから「バカは有名なC FAQすら知らない」ということがわかる。

>>764
extern "C" とimplib(必要なら-a付き)じゃ駄目なのか?
769デフォルトの名無しさん:2006/09/15(金) 22:07:04
何がだからなのか
770デフォルトの名無しさん:2006/09/15(金) 22:15:37
それがどうしたの?
771デフォルトの名無しさん:2006/09/15(金) 22:19:12
いやまあ、バカがバカさ加減を晒すのは自由だしね。
ここは2chだし。
772デフォルトの名無しさん:2006/09/15(金) 22:19:54
こうしたの。
773デフォルトの名無しさん:2006/09/16(土) 00:04:32
>>765
それはNULLマクロを、ポインタ以外へ使うなって事でしょ。
"NULL文字"って言葉を使うなって意味じゃないよ。
'\0'の、一般的な呼び方だよ。
774デフォルトの名無しさん:2006/09/16(土) 00:43:28
その"NULL文字"って言葉を使っているのが、「わかってない証拠」だよ。
'\0'はNULであって、NULLではないよ。
775デフォルトの名無しさん:2006/09/16(土) 00:47:21

なんで ぬるぽ のことになるとみんなむきになるのかな
776デフォルトの名無しさん:2006/09/16(土) 00:48:22
777デフォルトの名無しさん:2006/09/16(土) 00:49:07
char *p;

p = NULL; // OK
p = '\0'; // bad

*p = '\0'; // OK
*p = NULL; // bad
778デフォルトの名無しさん:2006/09/16(土) 02:33:54
>>775
宗教論争はどさくさ紛れに馬鹿でもそれっぽく参加できるからね。
779デフォルトの名無しさん:2006/09/16(土) 03:41:16
NULLに関しては宗教論争じゃなくて、理解しているかいないかの違いだけだがな。
780デフォルトの名無しさん:2006/09/16(土) 04:06:54
C++ビルダー6でさ、XP風のボタンにすることできますか?
デフォでは四角い3Dボタンじゃなく、白くてカーソル当てたら周りがオレンジになるボタン
Jediコンポーネントはあるが、ボタンのためにEXEがでかくなりすぎる
そのまんまのBCB6でできるのかな?
781デフォルトの名無しさん:2006/09/16(土) 13:24:38
>>779
うん、そういう「設定」で参入してるんだろうなぁってのは容易に想像がつく。
782デフォルトの名無しさん:2006/09/16(土) 17:13:55
↑こういうのを、どさくさ紛れに参加してる馬鹿って言うんだよね。
783デフォルトの名無しさん:2006/09/16(土) 18:44:51
↑こういうのもね
784デフォルトの名無しさん:2006/09/16(土) 20:07:13
C++Builder 6 アップデートパック #4
http://support.borland.com/entry.jspa?externalID=4322&categoryID=90
を入れようと数日前からずっとアクセスしているのだが
ftp server が落ちていて、全く繋がらない。
誰か、他に落とせる場所知らない?
785デフォルトの名無しさん:2006/09/17(日) 10:36:27
>>784
昨日マシンの再セットアップをしたけど、こっちからは問題なく落とせたよ。
ttp://www.borland.com/downloads/registered/download_cbuilder.html
786デフォルトの名無しさん:2006/09/18(月) 02:50:05
>>777
本来はその通りなんだよね。
 ・NULLは空の意味(内部表現で値0を使う)
 ・\0は全bitが0のコード
 ・0は整数値としてのゼロ
C言語を高級アセンブラとしてしか見ない人には
意味的にも、NULLと\0と0は一緒だとしてしまう。
787デフォルトの名無しさん:2006/09/18(月) 03:27:12
>>786
むしろ、C言語を高級アセンブラとしても見られる人が、
意味的にも、NULLと\0と0は一緒だと思うことができている、だと思うんだが。
難易度はそっちのほうが難しいし。

そーゆー、学習しづらい値と参照の境界をわかりやすくすっぱり分けたのがJAVAとかだろ。
788デフォルトの名無しさん:2006/09/18(月) 03:50:51
どう見ても、区別がついてない人が暴れていただけです。
連休だしね。
789デフォルトの名無しさん:2006/09/18(月) 11:01:25
 結局、NULLと¥0と0は同じものって結論なの?
¥0と0はメモリーブロックにあり0x00て値が入っているってことでなんとなく
納得がいきそうだけど、NULLはどうなの?メモリーに存在しているの?関数とかで該当があれば該当があるポインタを返し、なければNULLを返すってものがあるからNULLって数値(ポインタ)がありNULLが指す値がありそうな気がするけど。
790デフォルトの名無しさん:2006/09/18(月) 11:10:12
789続き
>>777
 の方法で(pはint型だからp='¥0' ’char型’だから代入できない)
  p=0;
printf("%c",*p);
  p=NULL;
printf("%c",*p);

はコンパイルできないで、わかる人だれか押しえてください。
791デフォルトの名無しさん:2006/09/18(月) 12:07:28
そういえばNULLって使ったことないや。
792デフォルトの名無しさん:2006/09/18(月) 13:27:03
#define NULL <either 0, 0L, or (void *)0> [0 in C++]

どう見ても宗教論争です。本当に有り難うございました。
793デフォルトの名無しさん:2006/09/18(月) 13:40:36
>>790
コンパイルは余裕で通る
794デフォルトの名無しさん:2006/09/18(月) 13:42:42
論争中もうしわけないんですが、VirtualTreeViewがgemから落とせません。
なくなってしまったのでしょうか?
795デフォルトの名無しさん:2006/09/18(月) 17:47:23
どいつもちゃんと回答できないようだね。
知ったかぶりして毒はいてるだけじゃん。
*p++と(*p++)の違いが、説明できてない。
VCだと変わんないんだよ実際。
796デフォルトの名無しさん:2006/09/18(月) 18:02:44
>>795
皆わかってるから。出しゃばんなさんな厨。
797デフォルトの名無しさん:2006/09/18(月) 18:02:59
>>795
他のでもかわらんのけ?
798デフォルトの名無しさん:2006/09/18(月) 18:03:32
>>795
>*p++と(*p++)の違いが、説明できてない。

誰もそんなこと問題にしていない
799デフォルトの名無しさん:2006/09/18(月) 18:17:16
いや、ちょっとまて
>*p++と(*p++)の違い
違わんだろ、これはw
800デフォルトの名無しさん:2006/09/18(月) 18:18:37
吹いた
801デフォルトの名無しさん:2006/09/18(月) 18:20:46
>>795
*(p++) ≠ (*p)++
802デフォルトの名無しさん:2006/09/18(月) 18:29:49
要するにBCBだと違うと言いたいのだろう。
803795:2006/09/18(月) 18:34:14
>799
すまん間違えた。
(*p)++だ
804デフォルトの名無しさん:2006/09/18(月) 18:36:25
一瞬、「NULLと'\0'の違いなんて、*p++と(*p++)の違いと同じ」と言ってるのかと思ったが
本当にろくな知識がないまま適当なこと言ってバカ晒してるだけみたいだね。
805795:2006/09/18(月) 18:36:40
後、終わってることに気付かなかったね。
すまん>>796-803
806795:2006/09/18(月) 18:38:28
>>804
俺が悪かったから、もう勘弁してくれ。
ただ、ちゃんと説明しろよ。
807デフォルトの名無しさん:2006/09/18(月) 18:42:29
たとえ*p++と(*p)++が違うということを言っているのだとしても
そんなのNULLと全然関係ないんですけど。

どういう思考回路でそんな話になるのか理解できないね。
とりあえずC FAQを一通り読んでから、偉そうなこといいなよ。
808795:2006/09/18(月) 18:45:15
NULLの話なんて一切してませんけど?

809デフォルトの名無しさん:2006/09/18(月) 18:54:21
どっからその「誰もしていない*p++の話」が沸いて出たの?
810デフォルトの名無しさん:2006/09/18(月) 19:00:07
そりゃ、>>795の言うように*p++と(*p)++の違いなんて誰も説明出来てないよ。
だって誰も説明してないし。
何故なら誰も質問してないし、誰も話題に出してないから。

あ、もしかして>>806は、自身が質問してるの?
811795:2006/09/18(月) 19:01:25
>>742を実際にやってみて、おかしくなったから。
BDS2006です。BCB6とかはやってないけど。
んで、その後のレスがなんの解決にもなってなかったから。
んで、読み返して終わってるのに気付いて、805の発言。
ただ、解ってるんだったら、毒じゃなくてきちんと説明しろよと。
要するに毒吐いている奴は無知なくせに他人を攻撃してるだけ。

だから無知じゃないんだったらちゃんと説明できるでしょ?
812デフォルトの名無しさん:2006/09/18(月) 19:06:47
いや、それはさすがにどんな入門書にも書いてあるでしょうが、
前者は、Valueの中身を参照してから、Valueを+1する
後者はValueの中身を+1する

自分でもどれほどバカな質問か
つまり、ちょっと調べるだけですぐわかる質問である、ということを
わかっているみたいだけど
813デフォルトの名無しさん:2006/09/18(月) 19:08:26
一応、「ちゃんとここにも書いてあるよ」というのを示しておくよ。
http://www.kouno.jp/home/c_faq/c4.html#3
814デフォルトの名無しさん:2006/09/18(月) 19:09:17
>>811
すでに答えがあるじゃん>>801
これ見て意味がわからなかったら、それはC/C++を一から勉強しなおすしかない
それはスレ違いの話題だから続けるなら適当なスレに移動すべし
815795:2006/09/18(月) 19:16:09
>>812
待ってました。マトモな意見。
ただ、引数しか触ってないんですよね。代入文の右辺がp*++です。
>>744だと、
何故、条件文が無いと上手く動くのかも不明なんですけど。
trueもfalseも無視して、関数全体の記述が全て無効になるのかも。
816812:2006/09/18(月) 19:23:00
「まともな」って、おまえの頭、ほんとにお花畑だな。

794までの20レスくらいの流れのなかで、おまえが742だとわかる人が
おまえ以外に何人いると思ってるんだよ。
世界が自分中心に回ってるみたいでうらやましいよ。


自分がどんなコードを書いたか、どんな引数を渡したか
まだまだエスパー募集中ですか?
817デフォルトの名無しさん:2006/09/18(月) 19:32:26
「マトモな意見」と言うわりには、その「マトモな意見」の内容を
理解しようとはしないんだなw
818795:2006/09/18(月) 19:32:39
742じゃないんですけどね。

いや、ちゃんと答えようとしていた人があなただけだったんで。
実際には>>813のところを反芻して解ったんですけどね。
>>813の人ありがとうございました。

ここって相談とかする場所ですね?知識のない人を攻撃する場所
だと思ったんですが。
まぁ2Chってそういう場所だって事はわかってるけどね。
まぁ、他人を攻撃して優越感に浸りたいだけなんだろうが、
自己解決したんでもういいです。
819デフォルトの名無しさん:2006/09/18(月) 19:36:28
812がキチンと説明できてるとは到底思えぬ。
820デフォルトの名無しさん:2006/09/18(月) 19:37:36
あと、795も本嫁。
821812:2006/09/18(月) 19:39:40
一応書いとくけど、>>804>>810とか、もちろん>>813も俺だから。

たとえおまえが742本人でないとしても、
他の人には>>795>>742の関係なんか全然わからないのだから
おまえが「他の人には見えないものが見えている」のは間違いないよ。
822デフォルトの名無しさん:2006/09/18(月) 19:40:11
そもそもここはC++Builderの相談室なんだけどな
823795:2006/09/18(月) 19:48:51
解ったらもういいや。
はい、ごくろうさん。
824デフォルトの名無しさん:2006/09/18(月) 19:49:55
日頃の生活の中にプライドの満たされ所を一切持たないまぬけほど、
こういう場所でその分を取り返そうとして「絶対引かない」姿勢を見せるんですよ。
そうなったらもはや、スレの主旨なんておかましなしなわけです。
まぬけですからね。
825デフォルトの名無しさん:2006/09/18(月) 19:56:40
いや、ちょっとまて...
if (true) *i++; else *i--;
これ両方無視されるぞ?
iは使われてませんとか言われるし、やっぱり変じゃない?
826デフォルトの名無しさん:2006/09/18(月) 19:58:15
ほかの変数との絡みのない変数は使われていないも同然だからです。
827795:2006/09/18(月) 20:06:08
>>823
こういう輩もいるわけで...
812と813が同じ人だったらスミマセンでした。
828デフォルトの名無しさん:2006/09/18(月) 20:35:01
メソッド内でTStringListを使うとき
TStringList *HogeList = new TStringList()
try{
}
__finally{
delete HogeList;
}
という感じで記述しますが、
HogeListを同クラス内の各メソッド間で自由に参照するには
どこでどのように記述すれば良いのでしょうか?

ヘッダーのprivateでTStringList *HogeList;
クラスのコンストラクタでnew、デストラクタでdelete
適当なメソッド内でHogeListの操作を行うように記述してみた所
コンパイルは通るのですが、
実行するとHogeListを参照する所でEConvertErrorが発生しました。
829デフォルトの名無しさん:2006/09/18(月) 20:38:23
気になってやってみたけど、まぁやってみてよ。
>>742の人が書いている
>void Loop(int *Value,bool flag)
>{
>if (flag) *Value++; else *Value--;
>*value=0;
>}
をi=0;Loop(&i,true);で呼び出してみ?

で、ifの行を抜けば、0が帰る。
ifがあるおかげで、0も戻らないというのはどういう仕組みだ?
*value=0; はどこ行った?
まさか、変な事をした時点でreturnのコードを勝手に作るとか?
これって、>>826とか、*p++と(*p)++がどうとか関係ないよね。
830デフォルトの名無しさん:2006/09/18(月) 21:46:30
>>829
if文の行でポインタ自身の値がどうなるか
考えてみたか?
831デフォルトの名無しさん:2006/09/18(月) 21:53:11
>>829
結局>>812-813が全然理解できてないんじゃん
あ、また自称別人かw

なお、void Loop()に戻り値があるわけない
帰るとか戻るとか訳のわからんことを言うな
832デフォルトの名無しさん:2006/09/18(月) 22:21:51
結論としては、
他人が見る可能性のあるコードは、
十二部にかっこをつけるなりしてわかりやすいコードにしろということだな。
833デフォルトの名無しさん:2006/09/18(月) 22:36:21
十二部ってなに?
834デフォルトの名無しさん:2006/09/18(月) 22:44:55
十二分でした 失敬失敬
835デフォルトの名無しさん:2006/09/18(月) 23:17:16
そろそろ他所でやってくんない?
836デフォルトの名無しさん:2006/09/19(火) 00:47:33
>>828
そら
>実行するとHogeListを参照する所でEConvertErrorが発生しました。
そこんとこでだめなことしてるんでそ
わかんなきゃそこんとこのソースさらすこと
837デフォルトの名無しさん:2006/09/19(火) 16:20:57
>>836
大体こんな感じです
class Hoge{
private: TStringList *HogeList;
}
---
void Hoge::Hoge(){
TStringList *HogeList = new TStringList();
}
void Hoge::~Hoge(){
delete HogeList;
}
void Hoge::AddStr(){
HogeList->Add("TEST"); // ここで EConvertError, 「書式文字列"%s"は正しくないか引数の型と一致しません」
}

838デフォルトの名無しさん:2006/09/19(火) 16:37:02
HogeList->Add(AnsiString("TEST"));
839デフォルトの名無しさん:2006/09/19(火) 17:03:03
>>838
それでもやはり例外が出ました。
うーん何がいけないのだろう(;´Д`)
840デフォルトの名無しさん:2006/09/19(火) 18:58:15
今、手元にBCBが無いのでなんとも言えないんですが、
TStringListとAdd(AnsiString);
の間にもういっちょ何か要るって事はない?
例えば、ImageとPenの間にCanvasが無いみたいな。
(これはコンパイラ通らないけど)
841デフォルトの名無しさん:2006/09/19(火) 19:14:18
単に文字列をAddするだけなら
TStringList->Add(AnsiString);
842デフォルトの名無しさん:2006/09/19(火) 19:40:34
newされる前にAddしてるんじゃないのか?
843デフォルトの名無しさん:2006/09/19(火) 19:52:03
そもそもそこでEConvertError例外が来ることが信じられない
844837:2006/09/19(火) 21:17:10
信じられないかもしれませんが実際起こってます。
まともに動くものが作れる方がいましたら書いていただけないでしょうか?
845デフォルトの名無しさん:2006/09/19(火) 21:19:53
他人デバッグ
846デフォルトの名無しさん:2006/09/19(火) 21:28:06
Hoge::Hoge() コンストラクタの HogeList 変数はメンバーじゃないのでは
847デフォルトの名無しさん:2006/09/19(火) 23:01:36
>>837

>大体こんな感じです
エラーが起きたコードをそのまま張れヴォケ

>HogeList->Add("TEST"); // ここで EConvertError, 「書式文字列"%s"は正しくないか引数の型と一致しません」
どこに書式文字列がある?
書式文字列のある、ConvertErrorをおこしたそのコードをさらせこの池沼
848デフォルトの名無しさん:2006/09/19(火) 23:29:27
>>847
それは賛否両論だし。わざわざ他人にも解りやすく要点をまとめてくれるんだろうに。
お前のような慇懃無礼なヤシに教わろうとも思ってないだろう。
書式文字列なんて書いていないのに、そのエラーが戻ってきてるんでしょ。
849デフォルトの名無しさん:2006/09/19(火) 23:31:07
再現する最小限のコード

これが大切。
850デフォルトの名無しさん:2006/09/19(火) 23:42:40
>慇懃無礼
851デフォルトの名無しさん:2006/09/20(水) 00:53:08
>>850
なんですかその
カチンと来たけどケチつける口実思いつかないから
その肝心のこじつけを人任せにする負け犬っぷりわ
852デフォルトの名無しさん:2006/09/20(水) 01:02:47
慇懃無礼は目も当てられないほどの甚だしい誤用だけども、

>>847が慇懃でかつ無礼であるのは、言いえて妙かもしれんw
853837:2006/09/20(水) 01:17:34
改行大杉と言われるのでうpしました。
ttp://www.rupan.net/uploader/download/1158682617304000.bJ63Af
お手数ですが確認をお願いします
854デフォルトの名無しさん:2006/09/20(水) 01:38:07
>>853
警告読もうぜw
ついでに 846 も読んであげるといいと思うけど。
855デフォルトの名無しさん:2006/09/20(水) 01:38:16
>>853
>>846で正解。
EConvertErrorでなくて、ヌルポ。
856デフォルトの名無しさん:2006/09/20(水) 01:39:01
>>837の方のソースでいくよ

>void Hoge::Hoge(){
>TStringList *HogeList = new TStringList();

ここで新たにTStringList* HogeListを定義してしまっている
これはHogeのメンバであるHogeListとは別の変数として定義されている
Hoge::HogeListを初期化するなら
HogeList = new TStringList;
でないとダメ
Hoge::HogeListが初期化されてないからそれを参照しようとするとエラーが発生する
しかしEConvertErrorではないはずだが?

EConvertErrorを起こしているのは別のところだよ
それはその部分のソースを提示してくれないと判断できない。

あと、エラーとは直接関係ないが、

>void Hoge::Hoge(){
なんでコンストラクタに戻り値が?
857856:2006/09/20(水) 01:39:34
かぶったか
858856:2006/09/20(水) 01:42:57
つっこまれるまえに

×なんでコンストラクタに戻り値が?
○なんでコンストラクタにvoidを明示する?
859デフォルトの名無しさん:2006/09/20(水) 01:47:41
まあ、原因がぬるぽだという事がわかってよかったね(^^)
860837:2006/09/20(水) 01:48:50
お蔭様で解決できました。

>>void Hoge::Hoge(){
>なんでコンストラクタに戻り値が?
こちらの表記ミスです。
ちなみに先ほど新たに1から書き直したものが>>853です

>しかしEConvertErrorではないはずだが?
私の環境ではAdd関数を行うメソッド(AddStr())(>>853ではButton1Click)を呼ぶまでは問題なく
呼んだ瞬間に間違いなくEConvertErrorが出ています。

指摘して頂いた
TStringList *HogeList = new TStringList();

HogeList = new TStringList;
に書き換えた所問題なく動作しました。

レス下さった方、長々とお付き合いありがとうございました。
861デフォルトの名無しさん:2006/09/20(水) 08:13:31
他人デバッグ
862デフォルトの名無しさん:2006/09/20(水) 15:19:10
しばらくは this->HogeList = ... とか書いた方がいいんじゃねーの?ww
実際、こう書く奴がいてさ、this->m_str ってアホかwとか思った。
863デフォルトの名無しさん:2006/09/20(水) 16:42:46
補完がきくから、長いメンバー変数の入力が楽、という利点はあるので、
馬鹿にするだけのものではないと思うが。
864デフォルトの名無しさん:2006/09/20(水) 17:55:57
人のことアホっていう奴がアホって、おばあちゃんが言ってました。
ちなみに、関西では褒め言葉。
865862:2006/09/20(水) 18:41:36
ああすまん、m_ のプレフィクスと this-> の併用がおかしくてな。
話が通じないほど端折り過ぎた事は認める。
this-> つけるのは、俺は冗長だと思うから皮肉で言ったのだが、そういう利点もあるなら、記憶クラスも分かってない奴ようなにはお勧めなのかもな。
866デフォルトの名無しさん:2006/09/20(水) 19:25:19
ファイルのタイムスタンプを調べるためにFindFirst()を使っているのですが
返される値の読み方がよくわかりません。

AnsiString ReturnTimeStamp(AnsiString Path){
 if ( FindFirst( Path, faAnyFile, sr) == 0 ) {
  return sr.Time;
 }else{
  return "FileNotFound";
 }
}

例えば8月29日6:26のファイルの場合891106163と返されます。
ヘルプを見ても検索してもいまいち参考になるものが見つからなかったのでご教授よろしくお願いします。
867デフォルトの名無しさん:2006/09/20(水) 19:26:31

TSearchRec sr;
が抜けてました
868デフォルトの名無しさん:2006/09/20(水) 19:29:38
さらに修正申し訳ない
sr.Timeは整数値ですね・・

× AnsiString ReturnTimeStamp(AnsiString Path){
○ int ReturnTimeStamp(AnsiString Path){

× return "FileNotFound";
○ return 0;
869デフォルトの名無しさん:2006/09/20(水) 19:41:53
>>866
FileDateToDateTime で変換する
870デフォルトの名無しさん:2006/09/20(水) 19:53:22
>>866
WindowsAPIのFindFirstFile使う手も
こっちは2GBオーバーの巨大ファイルのサイズもきちんと取れる。
タイムスタンプはFileTimeToSystemTimeでSYSTEMTIMEに変換すれば簡単に取れる。
871デフォルトの名無しさん:2006/09/20(水) 19:56:05
>>869-870
なるほど、参考になりました。
あと、>>866のはFileCloseもしなきゃいけませんね・・
ありがとうございました。
872デフォルトの名無しさん:2006/09/20(水) 22:04:18
FindFirst()でも2G超ファイルサイズは取れるけどね。
873本田:2006/09/21(木) 06:56:21
>>765
> >>761
> http://www.kouno.jp/home/c_faq/c5.html#4
> > NULLはポインターとしてのみ使うべきである。

>C++の構文解析手法
http://www.geocities.co.jp/SiliconValley-SantaClara/1294/parsingcxx.html
>NULL は (void *)0 ではない
>
>なぜこのようになったのかはまだ調べている最中であるが、
>考えられる理由のひとつにメンバへのポインタがある。
>これはクラスの先頭からメンバへのオフセットを値として持つために、
>最初のメンバを指す場合は0を”有効な”値として見なければならない。
>このことを考慮に入れてしまったために NULL とは異なる値を持つに至った可能性があるが、
>C++の標準規格では (int)0 を NULL として良いようなので説得力はいまいちである。
874デフォルトの名無しさん:2006/09/21(木) 09:16:24
どう考えても
C++ではvoid *をキャストなしで他のポインタに代入できないから
が、圧倒的に最大の理由だけど。
875デフォルトの名無しさん:2006/09/21(木) 10:07:24
TMemoなどにUnicodeを表示させるにはどうすればいいのでしょうか?
876デフォルトの名無しさん:2006/09/21(木) 11:04:51
877デフォルトの名無しさん:2006/09/21(木) 16:37:23
なんか30分毎くらいの感覚で素人に、いちゃもんつけてる奴がいるな。
無職で暇なんだろうが、楽しいか?
内容も薄っぺらいしwwwwwwwwwwww
878デフォルトの名無しさん:2006/09/21(木) 17:38:17
痛いよ
879デフォルトの名無しさん:2006/09/21(木) 17:58:14
>>876
Japaneseが文字化けしちゃってますけど・・・
880デフォルトの名無しさん:2006/09/21(木) 18:10:16
>>879
バグ報告は開発元に。
ソースはあるから自分だけこっそり直すことも可。
881デフォルトの名無しさん:2006/09/21(木) 20:38:59
>>879
間違えて中文コピペったに1GUNGLA
882780:2006/09/23(土) 02:14:25
みっけますた
ttp://hp.vector.co.jp/authors/VA015850/delphi/tips/etc13.html

BCBでXP風のボタンにしたいってやつです
ソフト.exe.manifest ファイルをexeと同じ位置におくだけでOK
883デフォルトの名無しさん:2006/09/24(日) 23:59:22
BCBやらDELPHI使ってる奴って、仕事で使えないんだけど。
こいつら、ほんと困るんだよね。
884デフォルトの名無しさん:2006/09/25(月) 00:02:26
>>883
自分のことか?
885デフォルトの名無しさん:2006/09/25(月) 00:05:46
いや、俺のことだが。
886デフォルトの名無しさん:2006/09/25(月) 00:09:34
いやいや、俺のことだ。
887デフォルトの名無しさん:2006/09/25(月) 01:06:31
以上、リストラ組の煽りですた。
888デフォルトの名無しさん:2006/09/25(月) 01:19:17
まてまてー!俺を忘れてもらっちゃこまる!
889デフォルトの名無しさん:2006/09/25(月) 08:19:24
601 名前:デフォルトの名無しさん[] 投稿日:2006/09/24(日) 23:55:30
自分が調べたいことをパラパラと探せないし、
かといって、ろくなこと書いてないし、サンプルもないし。
書店で本をみればロクなこと書いてないワリにめちゃめちゃ高いし、
やっぱVCのほうがいいっすよ。
本なんて買わなくても周りに知ってる人がいくらでもいるし。
BCBはね、DELPHIやってる人のほうが詳しかったりして。
なんで今更PASCALやらDELPHI固めのGUI操作を覚えねばならぬ。
890デフォルトの名無しさん:2006/09/25(月) 19:17:48
スレ違い
891デフォルトの名無しさん:2006/09/25(月) 22:46:09
>>889
スレ違いウザ
892デフォルトの名無しさん:2006/09/26(火) 01:22:21
>>889
スレ違いウザウザ
893デフォルトの名無しさん:2006/09/26(火) 03:34:17
>>889
スレ違いウザウザウザ
894デフォルトの名無しさん:2006/09/26(火) 07:52:33
スレ違い(ウザ)*
895デフォルトの名無しさん:2006/09/26(火) 14:08:23
BCB5でAVIファイルを再生してForm内のPanel1(TImageも可)に表示したいのですが、
put_Owner()がエラーとなってActiveMovie Window内に表示されます。

TPanel *Panel1
HRESULThRslt;
IGraphBuilder*pGrph;
IMediaControl*pMdaCtrl;
IVideoWindow *pVideoWin;

CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (LPVOID *)&pGrph );
hRslt = pGrph->QueryInterface( IID_IMediaControl, (void **)&pMdaCtrl );
hRslt = pGrph->QueryInterface( IID_IVideoWindow, (void **)&pVideoWin );
hRslt = pVideoWin->put_Owner((OAHWND)Panel1->Handle);

エラーコードをWinError.hで調べてみると
// MessageId: E_NOINTERFACE
//
// MessageText:
//
// No such interface supported
//
#define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002L)
でした。
我が師よ、どうコーディングすれば良いのでしょうか?
896デフォルトの名無しさん:2006/09/26(火) 14:37:40
>>895
IVideoWindow::put_Ownerの前にIGraphBuilder::RenderFile()呼ばないとダメだったかもしらん。
自作コンポは先にRenderFileやってた。
897デフォルトの名無しさん:2006/09/26(火) 15:08:52
895です。
>>896
師の教えにより、困難を克服致しました。896万歳!
898デフォルトの名無しさん:2006/09/26(火) 15:56:45
>>897
mp3ファイルとかだったりするとビデオレンダラ生成しようがないからね
899デフォルトの名無しさん:2006/09/27(水) 11:21:15
ListViewのMouseUpイベントなんですが、左ボタンだとちゃんとイベントに来るのですが
右ボタンだとクリックならイベントが来なくてダブルクリックだとイベントがきます。
これは何が原因なのでしょうか?
900デフォルトの名無しさん:2006/09/27(水) 22:32:36
BCBだから
901デフォルトの名無しさん:2006/09/27(水) 22:37:18
>>899
藻前のバグ
902デフォルトの名無しさん:2006/09/27(水) 22:44:33
いやBCBだから。
TPanel->Autosize=true;みたいな感じだから。
903デフォルトの名無しさん:2006/09/28(木) 01:59:05
>>899
BCBだからで正解
回避方法は知らん
904デフォルトの名無しさん:2006/09/28(木) 10:48:58
>>903
やっぱこれバグかー
ちなみにBCB5なんだけどそれ以降のバージョンでもダメか?
905デフォルトの名無しさん:2006/09/28(木) 11:57:20
ListViewの現在のカーソル位置(四角の点線)のインデックスを取得する方法を教えてください
906デフォルトの名無しさん:2006/09/28(木) 13:25:32
>>899
どういう意味?
右のシングルクリックだとイベントが来ないってことか?
それだったらウチは問題ないぞ?
907デフォルトの名無しさん:2006/09/28(木) 15:06:22
>>899
ListViewのアイテム上で右クリックしてもOnMouseUpに飛んで来ないのは
コンテキストメニュー(ポップアップメニュー)を出すため。
なのでOnContextPopupで待つといいよ。

>>905
ListView->SelectedやListView->GetItemAt()でListItemを取得して
ListView->Items->IndexOf()使えばインデクス取れるよ。

複数のアイテムの選択を有効にしている場合は、各アイテムのSelectedプロパティを見てください。
for( int i = 0; i < ListView->Items->Count; i++ ){
  if( ListView->Items->Item[ i ]->Selected ){
以下略
908デフォルトの名無しさん:2006/09/28(木) 15:42:47
>>906
え?マジですか?右のシングルクリックでこないんですよー
でも、右クリしてから離すときにマウスを移動して離すとなぜかくるんですよね。
>>907
神様ありがとうございます!!
それは全く気が付きませんでした。
それでIndexの話なのですが、マルチセレクトをしているのですが
それで複数選択してる最中にCtrlを押しながら矢印キーでカーソル移動できますが
このときに移動しているIndexはSelectedになっていなかったものですから・・

ちなみに、選択されている行で右クリしてもMouseUpのイベントは入ってくれませんでした
909デフォルトの名無しさん:2006/09/28(木) 16:03:46
>>906
それは項目を選択してないから
項目が選択された状態ならOnContextPopupに飛ぶ

あとBDSでも同じ動作だった
910デフォルトの名無しさん:2006/09/28(木) 19:05:56
>>909
ホ、ホンマやー!右でMouseUpって使ったことないから盲点だった
911907:2006/09/28(木) 21:17:29
>>908
あの書き込み程度で~扱いとは大袈裟な。w

選択されたアイテムではなくフォーカスのあるアイテムなら
ListView->ItemFocused で取得できるので、これを
ListView->Items->IndexOf()に渡してインデクスを取得するといいよ。
912デフォルトの名無しさん:2006/09/29(金) 00:00:08
実行ファイル名にプロジェクト名とは別の名前を付けたいのですが、
設定場所が見つかりません。
ご存知の方いらしたら教えて下さい。
913デフォルトの名無しさん:2006/09/29(金) 00:11:43
>>912
バージョンは?
914912:2006/09/29(金) 00:30:55
>>913
バージョンは6.0 Professionalにアップデートパック 4です。

プロジェクト->オプションソースの編集でそれらしきところ(PROJECT value)を書き換えても
変わりませんでした。
915デフォルトの名無しさん:2006/09/29(金) 10:58:22
>>914
プロジェクトファイルの<PROJECT><MACROS><PROJECT>のvalue書き換えで行けそうな。テストしてないけど。
916デフォルトの名無しさん:2006/09/29(金) 11:00:20
ってそれやったのか。

あとはメインソースの名前変更してみるとか。
917デフォルトの名無しさん:2006/09/29(金) 13:11:31
>>914
「プロジェクト->オプションソースの編集」での変更は保存されないような気がする。
いったんプロジェクトを閉じて、外部エディタでxxx.bpr(UTF8)を直接書き換えてみては?
918デフォルトの名無しさん:2006/09/29(金) 13:26:14
>>911
ぬおいおおおおお!!
ItemFocusedってあるとは知らなかった!
ありがとーありがとー。
さっそくためしてみます
919デフォルトの名無しさん:2006/09/29(金) 17:43:50
質問させてください

環境
BDS2006C++Builder

以下をコンパイルしようとすると、「E2328 プロパティを持つクラスは値をコピーできない」
と怒られてしまいます。

hファイルにc_Exというクラスを定義。
c_Ex型のP_c_Exプロパティを作成

↓こんなかんじ
C_Ex p_c_Ex;
__property SetP_c_Ex = {read = p_c_Ex,write = SetP_c_Ex};

で、cppファイルにある関数「SetP_c_Ex」の中で↑で定義したp_c_ExにinP_c_Exを入ようとする所でコンパイルエラーがでます。

↓こんな感じ
void __fastcall aaa::SetP_c_Ex(aaa::C_Ex inP_c_Ex){
p_c_Ex = inP_c_Ex; ←ここ!
}

回避方法がさっぱりわかりません。
どなたかご教授ください!
920914:2006/09/29(金) 23:45:28
メインソース(cpp,res)の変更も効果無し、外部エディタでbprを書き換えても
次回起動時にしっかり元に戻されています。
リンク後に外部プログラム呼ぶ設定でもあればDOSコマンドでリネームできるのですが
それすらなさそうです。
921デフォルトの名無しさん:2006/09/30(土) 00:11:53
あああ:c_えx*
922デフォルトの名無しさん:2006/09/30(土) 01:28:00
>>919
エラーが再現する最低限のソースを提示しろ
普通にプロパティを作っただけじゃそのエラーは出ない
923デフォルトの名無しさん:2006/09/30(土) 09:08:25
>>920
これはもうmakefile作るしかないかもね
924デフォルトの名無しさん:2006/09/30(土) 09:48:43
>>912
プロジェクト名とは別の名前は、できないと、思ってた・・・
925デフォルトの名無しさん:2006/09/30(土) 23:23:31
いや、BCBだから。
926デフォルトの名無しさん:2006/09/30(土) 23:24:37
いや、BCBのせいじゃない。
使ってるヤシが悪い。
927デフォルトの名無しさん:2006/10/03(火) 15:02:36
BCB6 UP4で、新規プロジェクトでActiveFormを選択して
そのままコンパイルしたところ、VCLCONTROL_IMPLマクロの
ところでエラーが出てコンパイル出来ないのですが、何か
やり方が間違っているのでしょうか。
ご存知の方いらしたら教えて下さい。
928デフォルトの名無しさん:2006/10/04(水) 12:42:03
GraphicExを使用してTIFFファイルを表示させようとしてます。
.pasファイルをプロジェクトに追加して、コンパイルしたところ、
自動作成された.hファイルから大量にエラーが発生してしまい、
コンパイルできませんでした。
どなたか、GraphicExを使用する方法を教えていただけませんか?

環境 WinXP+SP2 BCB6+UP4
929デフォルトの名無しさん:2006/10/04(水) 12:52:10
ImageFileLib(ttp://www.logicnet.dk/lib/)にしてみたら?
930デフォルトの名無しさん:2006/10/16(月) 00:35:33
GraphicExってDELPHIで書かれたコンポーネント?
自動生成される.hファイルってフォームクラスのヘッダのこと?
BCBのプロジェクトに.pas入れちゃ通らんだろ。
931デフォルトの名無しさん:2006/10/19(木) 00:36:43
↓の件を克服できた方、方法を教えていただけませんか
http://www.onionknights.net/c_labo/sectionex_0.html
932デフォルトの名無しさん:2006/10/19(木) 01:09:25
VCLを使え以上
933デフォルトの名無しさん:2006/10/19(木) 01:27:50
>>932
VCLに相当品ってありましたっけ?
934デフォルトの名無しさん:2006/10/19(木) 02:19:44
キャストすればいいんじゃね?
935デフォルトの名無しさん:2006/10/19(木) 08:15:40
だ、キャストすれ。
キャストすればエラーは出ない。
936デフォルトの名無しさん:2006/10/19(木) 11:54:10
すごく初歩的な質問なんですが、

ファイルオープンダイアログをExecuteすると、初期表示状態で「開く」ボタンが
クリック可能な状態になりますが、これをファイルを選択した場合にのみクリック可能にしたいのです。
(初期表示状態でEnable=falseの状態?)

それから、ファイルオープンダイアログの「ファイル名」欄ですが、1回目の表示では空欄です。
2回目以降は前回選択したファイル名が表示されますが、これを2回目以降も空欄にするには
どうしたらよいのでしょう?

Optionプロパティで設定できるのかと思い、探してみましたがHelpでは見つけることができませでして・・
環境はXP Pro+SP2 BDS2006+サービスパック2です。よろしくお願いいたします。
937デフォルトの名無しさん:2006/10/19(木) 13:33:05
// ファイル名を空にする
FileOpenDialog->FileName = "";
938デフォルトの名無しさん:2006/10/19(木) 20:56:43
>>931
C言語としてコンパイルするか、
#define STRICT を
#include <windows.h> の前に置くと通ったぞ
939936:2006/10/20(金) 08:15:19
>937
レスありがとうございます。
OpenDialog1Showイベントにその文を追加してみましたが
やはり前回のファイル名が表示されてしまいます。
追加するイベントがまちがっているのでしょうか・・
940デフォルトの名無しさん:2006/10/20(金) 10:36:24
>>939
ダイアログを表示する前に設定すべし
941デフォルトの名無しさん:2006/10/20(金) 10:36:48
>>939
FileName は Execute() を呼ぶ前までに設定しておかないとダメだと思うよ
942デフォルトの名無しさん:2006/10/20(金) 10:37:29
被ったorz
943939:2006/10/21(土) 08:22:25
>940,941
うまくいきました。ヽ(・∀・)ノ ヤター
どうもありがとうございます!
944デフォルトの名無しさん:2006/10/22(日) 19:03:47
TEdit等のImeModeプロパティを持ったコントロールは問題ないのですが、
ImeModeを持たないコントロール(例えばTStringGrid)で入力時にIME制御を
行うにはどうしたらいいのでしょうか?
945デフォルトの名無しさん:2006/10/22(日) 22:19:27
つImmユニット

まあ、IME制御APIとメッセージを使って制御するしかないな。
946デフォルトの名無しさん:2006/10/23(月) 00:39:00
Turbo C++ Explorer版試してみたんだけど、exeがすごく遅くなってないですか?
BCB4とBCB6でビルドしたexeでは3.3秒で終わる処理が7.5秒くらい・・・
947デフォルトの名無しさん:2006/10/23(月) 00:46:07
Turbo C++の最適化は、いろいろ不具合の話があるみたいだな
948デフォルトの名無しさん:2006/10/23(月) 00:50:02
majide?
949デフォルトの名無しさん:2006/10/23(月) 01:03:05
ああ、そういえば、
ttp://omoikane.my-sv.net/past/blog_20069.xml#20069001e
みたいな話もあったなー
950デフォルトの名無しさん:2006/10/23(月) 14:33:42
コンパイラとかリンカのバージョンが新しくなってるのでそれをBCB6にコピーして
BCB6からビルドするとexeが遅くならないで今まで通りなんだよね・・・挙動がわからーん。



佐賀
951944:2006/10/23(月) 17:47:21
>>945
やっぱそれですか。
DelphiではImmうんたらとかでやってたんでBCBにも同じような
物があるんだろうけど、今のところ発見できず・・・
952デフォルトの名無しさん:2006/10/23(月) 18:21:18
てゆうか、TEditのImeModeプロパティのコード嫁。

それから、
TStringGridの入力エディタは生成をオーバーライドできるようになってるから、
自作エディタに差し替えることを可能にしてあるし。
953デフォルトの名無しさん:2006/10/23(月) 19:36:39
954デフォルトの名無しさん:2006/10/24(火) 09:35:24
>>944
SDKの::ImmSetOpenStatus
955デフォルトの名無しさん:2006/10/26(木) 20:15:02
OnMouseDownイベントにて
右クリックかどうかを判別するにはどうすれば良いのでしょうか?
Shift == ssDouble ではコンパイルが通りませんでした・・
956デフォルトの名無しさん:2006/10/26(木) 20:28:29
>>955
if( Shift.Contains( ssRight ) )〜

ヘルプを読もう。OnMouseDownのヘルプ->Exampleに載ってるよ
確かにTShiftState型はちょっと判りにくいけどね。
957デフォルトの名無しさん:2006/10/26(木) 21:24:38
すみません、右クリックではなくダブルクリックでした
同じ様に書けば良いみたいですね
ありがとうございました
958デフォルトの名無しさん:2006/10/27(金) 13:48:17
リモートデバッカを使おうと思ったんだけど、ヘルプに記載されてる
『[リンカ]タブの[EXE/DLL オプション]ペインで
[リモートデバッグ情報を含める]にチェックマークを付けます。』
が、[プロジェクト|オプション]内にどこにも見当たらないんだけど、
わかる人いますか?
BCB6を使ってます。
959デフォルトの名無しさん:2006/10/27(金) 16:13:05
>>958
フツーのデバッグ情報でいいんでない?
960デフォルトの名無しさん:2006/10/27(金) 16:28:12
>>959
『リモートシンボルを含む .RSM ファイルが生成されます。
このファイルは,リモートマシン上の .EXE と同じ位置になければなりません。』
とのことで、.RSMファイルが出来ないといけないようなのですが、
通常のデバック設定ではこのファイルが作成されないのです。
961デフォルトの名無しさん:2006/10/27(金) 16:49:24
>>960
リモートデバッグはエンプラ以上じゃないとないんじゃなかったっけ?
962デフォルトの名無しさん:2006/10/27(金) 17:47:22
SHBrowseForFolderの使い方を教えてください。
Help読んでもわからないくらいの初心者です。
サンプルを示して頂けると嬉しいです。
宜しくお願いします。
963960:2006/10/27(金) 19:25:22
>>961
BCB6のエンプラを使用しています。
964961:2006/10/27(金) 22:19:51
自己レスです。
.RSMファイルではなく、.tdsファイルをリモートマシン上の
.EXE と同じ位置に配置すればOKでした。
HELPファイルほんと腐ってるな。。。
965デフォルトの名無しさん:2006/10/27(金) 23:18:41
>>962
使うAPIまで判っているのに、なぜGoogleに「SHBrowseForFolder サンプル」と聞いてみないんだい?
966デフォルトの名無しさん:2006/10/29(日) 12:50:00
WinXP+BDSup2使っています。
ACCESSファイル内のテーブルの項目一覧を表示するプログラムを
つくったのですが、項目一覧が勝手にソートされてしまいます。
TADOConnection.GetFieldNames メソッドを使っているのですが
ヘルプを見ても、ソートする/しないは指定できないようです。
テーブルに入っている項目順に表示させたいのですが、
このメソッドは使えないのでしょうか?
他の方法でテーブルに入っている順番に表示させることはできるでしょうか?
よろしくお願いいたします。
967デフォルトの名無しさん:2006/10/31(火) 15:49:13
>>962

つ TSHBrowseForFolderEx ttp://zero.s2.xrea.com/study.htm
968デフォルトの名無しさん:2006/10/31(火) 21:16:13
BDS2006で、プロジェクトにC++ファイル(xxx.cpp/xxx.h)を追加しても、
プロジェクトマネージャには、フォームを新規作成したもののように折りたたんで表示してくれません。
フォームを作成したの[xxx.cpp/xxx.h/(xxx.dfm)]と同じように、xxx.cpp/xxx.hが折りたたまれて表示する
ように、プロジェクトに新しいクラスのソースを追加するにはどうすれば良いのでしょうか。
969デフォルトの名無しさん:2006/11/01(水) 03:36:04
#include <iostream>
int main(){
try{}catch(...){
std::cerr << "" << std::endl;
}
return 0;
}

こんな感じのソースでCodeGuardが警告出すんだけど何か変ですか。
std::cerr << "" << std::endl;
を消すと問題無いんですが。
BCB5です。
970デフォルトの名無しさん:2006/11/01(水) 03:43:36
>>969
警告貼れよカス
971デフォルトの名無しさん:2006/11/01(水) 03:55:31
ゴメン、ソース短いしパッと見て変な所があったらすぐ分かるかなと思った。
貼れるのは明日以降だしアク禁に巻き込まれると貼れないっす。
972デフォルトの名無しさん:2006/11/01(水) 13:45:15
>貼れるのは明日以降

なんで?
973デフォルトの名無しさん:2006/11/01(水) 15:47:20
なんで!なんでなんで!
974デフォルトの名無しさん:2006/11/01(水) 22:01:14
なんで!なんでなんで!なんでなんでなんで!
975デフォルトの名無しさん:2006/11/02(木) 02:39:39
そりゃプログラム書いてるマシンとネット繋げてるマシンが違うから。
しかもぱっと持ってこれない環境なの。

-----------------------------------------
Error 00019. 0x300010 (スレッド 0xFFE09E4F):
リソースリーク: オブジェクト (0xA92F34) が削除されていません。

オブジェクト(0x00A92F34) [長さ: 96 バイト] は new によって作成されました。
呼び出し履歴:
0x00407403(=TEST.EXE:0x01:006403) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\rw/ctype.h#494
0x00403815(=TEST.EXE:0x01:002815) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\rw/locimpl.h#454
0x004116B1(=TEST.EXE:0x01:0106B1)
0x00403701(=TEST.EXE:0x01:002701) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\rw/usefacet.h#72
0x0040349B(=TEST.EXE:0x01:00249B) A:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\ios.h#375
0x0040C4D2(=TEST.EXE:0x01:00B4D2)
---------------------------------------------------
こんな感じ。
実行中のログは何も言わないくせに.CGLファイルはしっかり出てて気づかなかった。
ソースの方も本当はもうちょっと#includeやってたりプロジェクトにソースぶちこんでたりしてた。
本当の最小構成だと問題無いっぽい。
問題のソースをプロジェクトから外すとログ吐かないんだけどソースのどこがおかしいのかこれじゃ分からない。
ファイルは分かるから虱潰しに探すしかないかな。
976デフォルトの名無しさん:2006/11/02(木) 02:49:12
tryの中身が気になる。
ギリギリまでメモリを使っててbad_alloc当たりを投げていて、
std::coutに出力しようとしてバッファの確保に失敗しておかしくなってるとか。
977デフォルトの名無しさん:2006/11/02(木) 04:52:28
確か空だったと思う。
問題ソースをプロジェクトに入れて#includeしなくても起きる。
catchの中身も上の通り。
978デフォルトの名無しさん:2006/11/03(金) 02:40:33
確認したら空だった。
んでソースをコメントアウトして関数1つづつ試したけどgetline()かおかしい事が判明。
禿本の3章にgetline(ifstream&, string&)みたいな書かれ方されててそのまま書いてたんだけど。
979デフォルトの名無しさん:2006/11/03(金) 02:46:37
ともかく、

 エラーの起こる最低限のソース

これを提示するのが大原則
980デフォルトの名無しさん:2006/11/03(金) 03:44:58
#include <iostream>
int main(int argc, char** argv)
{
ifstream std::file(argv[1]);
if(!file) return 1;
std::string str;
getline(file, str); //ココ
return 0;
}

禿本も3章以外にこういうgetline()の使い方書いてないっぽい(索引から検索できない)。
更にgetline()は名前空間の指定無しに使えるのが気になる。
std指定しても結果は変わらないけど。
981デフォルトの名無しさん:2006/11/03(金) 04:03:27
BCB5というと確かRogueWaveか。バグが多いので、BCB6では
STLport、BDS2006ではDinkumwareになったのだろうが、その
バグに相当するという事はないだろうか?
982デフォルトの名無しさん:2006/11/03(金) 12:44:48
('A`)
983デフォルトの名無しさん:2006/11/03(金) 13:00:33
>>980
> 更にgetline()は名前空間の指定無しに使えるのが気になる。
> std指定しても結果は変わらないけど。

koenig
984デフォルトの名無しさん:2006/11/04(土) 02:50:06
バグですか。
とりあえずgetline()は使わずに1文字ずつ改行まで読むようにしました。
985デフォルトの名無しさん:2006/11/04(土) 16:29:33
('A`)()
986デフォルトの名無しさん:2006/11/06(月) 20:03:45
('A`)()
987デフォルトの名無しさん:2006/11/07(火) 03:54:42
C:\Documents and Settings\Administrator\デスクトップ>('A`)()
() の使い方が誤っています。
988デフォルトの名無しさん:2006/11/07(火) 11:15:57
FileListBoxでファイルを選択した時に反転表示される色(通常は濃い青)を
任意の色に変更するにはどうすれば良いでしょううか?
989デフォルトの名無しさん:2006/11/07(火) 19:19:23
>inline void __stl_delete(void* __p) { ::operator delete(__p); }

ここでエラーが出るのはどういうときですか?
990デフォルトの名無しさん:2006/11/08(水) 00:57:31
次スレ要る?
991デフォルトの名無しさん:2006/11/08(水) 01:05:39
ほすぃ
992デフォルトの名無しさん:2006/11/08(水) 02:16:33
次スレ
C++Builder相談室 Part17
http://pc8.2ch.net/test/read.cgi/tech/1162918887/

連投規制に引っかかってテンプレ完成しないOTL
993デフォルトの名無しさん:2006/11/08(水) 02:20:38
('A`)()
994デフォルトの名無しさん:2006/11/08(水) 02:41:55
夜立てると板全体の書き込みが少ないので連投規制にひっかかりやすいな
995デフォルトの名無しさん:2006/11/08(水) 03:33:16
テンプレは全部張ったんでぼちぼち移動してください
テンプレに不足があれば適当に追加してちょ

BDSスレがあることだし、Delphiスレは関連スレから外しました
ばかもん!必要だ!!つうかたはご自分で追加してください
996989:2006/11/08(水) 13:46:06
STLのvectorって、クラスの実体宣言でメンバ変数としてはマズいですか?
997デフォルトの名無しさん:2006/11/08(水) 15:32:09
>>996
意味不明
多分、vectorのインスタンスをクラスメンバにしてかまわないかという意味だと思うが、
それなら特に問題はない

しかしおまいさんのC++の基礎知識の不足と日本語の運用能力の低さは極めて重大な問題だな
998デフォルトの名無しさん:2006/11/09(木) 00:14:01
998
999デフォルトの名無しさん:2006/11/09(木) 00:17:08
999
1000デフォルトの名無しさん:2006/11/09(木) 00:19:24
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。