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

C++Builder相談室 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0698デフォルトの名無しさんNGNG
漏れがお世話になることは無いかもしれないけど。
0699デフォルトの名無しさんNGNG
はぁ
0700デフォルトの名無しさんNGNG
アフォな突っ込みするヤシって大抵アゲなんだよね
0701デフォルトの名無しさんNGNG
自分のアフォぶりを晒したいんだろうな( ´Д`)
0702デフォルトの名無しさんNGNG
>>695
純粋〜だけのクラスからは多重継承できる、ってのは、ver5か6からの機能だった気がする。
これで多重継承についてはJavaと同レベルになったから、まあいいかなと思ってる。結構使ってる。
でもDelphiのは知らない。Javaとは違うの?
0703デフォルトの名無しさんNGNG
>>702
Delphiのは、Javaのモデルに加えて、interfaceのメソッド(一部でも全部でも)を、
プロパティとして持ってるメンバに任せることができる。
メンバ(ポインタ)が指す先を取り替えたら
interfaceのディスパッチ先も変わるというプロトタイプベース言語もびっくりの柔軟仕様
0704デフォルトの名無しさんNGNG
>>700
お前みたいにsageで書く奴もいるけどね。
0705デフォルトの名無しさんNGNG
>>704
ワロティングwwwwwwwwwwwwwwwwwwwwwwwwwww
0706デフォルトの名無しさんNGNG
詳しく書いて下さい。サンプルコード希望。>>703
知らないからいつもインターフェースのスーパークラスわざわざツクテタヨ!
0707デフォルトの名無しさんNGNG
>interfaceのディスパッチ先も変わるというプロトタイプベース言語もびっくりの柔軟仕様

これが本当ならクラスベースOnlyのC#はゴミってことかよ!
0708デフォルトの名無しさんNGNG
>>706
http://hp.vector.co.jp/authors/VA028375/delphi/delphipascal_oo_implements.html
0709デフォルトの名無しさんNGNG
InterBaseを使用したwindowsアプリを作成したんだけど、InterBaseをインストールしていない
PCで動作させるにはどうすればよいの?
0710デフォルトの名無しさんNGNG
>>709
Firebirdのembedded版を使う
0711デフォルトの名無しさんNGNG
C++BuilderでC++を始めたいと思っている者ですがお金があまりありません。
安くでC++Builderを入手できる方法があれば教えて頂けないでしょうか。
コードの質問でなくてすいませんが何卒よろしくお願いします。
0712デフォルトの名無しさんNGNG
>>711
ttp://www.borland.com/products/downloads/download_cbuilder.html
0713デフォルトの名無しさんNGNG
ありがとうございます
英語苦手ですが読んでみます
0714デフォルトの名無しさんNGNG
自作でAnsiStringの機能を持つクラスを作りたいのですが、
いまいちよくわかりません。
コンストラクタをcharやintで分けて作るというところまでは分かるのですが…
肝心のコンストラクタの中身をどうしていいかわからず(−−;
ちなみに、コンストラクタはAnsiStringと同じものをすべて、
オペレーターは = と + のみでよいという設定です。
2チャンネルの皆様ならば!と思い書き込みをさせていただきました。
何卒よろしくおねがいします。
0715デフォルトの名無しさんNGNG
>>714
っ[ Cの標準ライブラリ ]
0716デフォルトの名無しさんNGNG
>>715
っ[ Cの標準ライブラリ ]??
それはどういうことでしょうか?
0717デフォルトの名無しさんNGNG
質問です。
Pascalで記述したクラスのメンバ関数で、引数にHWND型を取る物を利用しようと思ったのですが、リンクの段階でエラーが発生してしまいます。
試行錯誤というか力技で、解決したように思うのですが、何か邪道な感じというか、もっとスマートな方法があるんじゃないかと考えています。
Pascalソースは、プロジェクトに追加>ユニットのコンパイルという手順を踏んで、生成された.hppファイルを、メインフォームcpp(という呼称でいいのかは不明です。TMainForm::FormCreateとかが自動生成される先)からIncludeし、メンバ関数を利用しようとしました。
インスタンスの生成や、呼び出し位置のスコープ等は間違ってないように思います。
エラー内容としては、関数(void *)の実体が定義されていない〜という物です。
BCBでのHWNDの型定義がvoid *で、本来のPascalソースからのオーバーロード関数として解釈されてんじゃないかと踏んで、本来のPascalソースで引数の型(HWND)をLogWord(windows.pasから)で定義しなおしたところ、コンパイルも動作も、確認できました。
動作してるならいいじゃねーかって感じですが、すごくFAQな感じがします。
いちおう検索してみたのですが、2chのBCBスレで「Pascalソースの関数内でAPIを呼んでる香具師は使えない」とかそんな感じの書き込みくらいしか、情報を得られませんでした。
よろしくお願いします。

最初、Delスレ書き込んだのですが、スレ違いくさかったので、こちらに移民してきました
0718デフォルトの名無しさんNGNG
なんですかその長いレスは
0719デフォルトの名無しさんNGNG
>>717
Delphi側のソースをTHandleにしとけば、BCB側を(unsigned int)キャストでとりあえずリンクできる。

>何か邪道な感じというか、もっとスマートな方法
普通はTFormなどのコンポーネント単位でやり取り。
ウィンドウハンドルを扱うのは邪道なんだろうね。
0720デフォルトの名無しさんNGNG
>>714
class NullpoString {
private:
  AnsiString Str;
public:
  __fastcall NullpoString(int Value){
    Str=AnsiString(Value);
  }
};

とか

class NullpoString:public AnsiString{
(略)
};

とか

typedef AnsiString NullpoString;

とか
0721デフォルトの名無しさんNGNG
>>719
なるほど、THandleですか
ありがとうございます。そちらの方が、抽象度が高い感じがして、よさげな印象ですね
HWNDがそのまま通ってくれればなー..
ありがとうございました
0722デフォルトの名無しさんNGNG
Delphiのis演算子はC++Builderはどのようにかけばよいのでしょう?

if E is EThread then〜〜
0723デフォルトの名無しさんNGNG
>>722
dynamic_castで。
0724本田NGNG
>VCLオブジェクト(TObjectから派生してるオブジェクト)をXMLでシリアライズ/デシリアライズ
したいんだけど、どうすればいいの?

ttp://www.simdesign.nl/xml.html?googleadwords
0725デフォルトの名無しさんNGNG
Xerces
超おすすめ
0726デフォルトの名無しさんNGNG
buffer = new Byte (length);
lengthバイトのバッファを確保してるつもり!
ヘッダ,ソースで230ファイル程度のプロジェクトだったため
見つけるのに丸い一日掛かった・・・
0727デフォルトの名無しさんNGNG
buffer = new Byte (length);

「どうせ警告を無視してるんだろ」と思ったが
もし、lengthがByte型なら警告出ないな。
0728デフォルトの名無しさんNGNG
>>726
一日が丸いのか!?
0729デフォルトの名無しさんNGNG
丸いに決まってるだろ!
それともお前は時動説を信じてるのか?
0730デフォルトの名無しさんNGNG
じどうせつ(←何故か変換できない)
0731デフォルトの名無しさんNGNG
そんなこと、どーでもいいじゃん、ね☆
0732デフォルトの名無しさんNGNG
次回作は?(´∀`)
0733デフォルトの名無しさんNGNG
ミッションインポッシブル3
〜はじめてのおつかい〜
0734本田NGNG
>VCLオブジェクト(TObjectから派生してるオブジェクト)をXMLで
>シリアライズ/デシリアライズしたいんだけど、どうすればいいの?

ttp://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18939
0735デフォルトの名無しさんNGNG
C++Builder初心者です。
質問なのですが、C++Builderのエディタが頻繁に、数秒固まってしまいます。
サンプルコードでも、自分で書いたコードでも、違いは無いようなのですが、仕様なのでしょうか。
何か、回避策等あれば、教えてください。
よろしくお願いします。
0736デフォルトの名無しさんNGNG
支援機能を全部無効にする
0737735NGNG
>>736
厨房なんで、インテレセンスは切れません。。
でもありがとうございます
0738735NGNG
>メモ: 自動機能が使用不可能になっている場合でも,〔Ctrl〕+〔Space〕を押すといつでもコード補完を起動できます。
゜ ゜=3 ( o )
0739デフォルトの名無しさんNGNG
>>735
インクルードパスの中に接続が切れたネットワークパスとかが含まれてない?
0740735NGNG
>>739
含まれては無いと思います。
CD挿入しっぱなしなので、読みにいってる可能性ありますね。
CD取り出して、様子見てみます。
ありがとうございます
0741デフォルトの名無しさんNGNG
>メモ: 自動機能が使用不可能になっている場合でも,〔Ctrl〕+〔Space〕を押すといつでもコード補完を起動できます。
゜ ゜=3 ( o )

ヘェー それじゃ俺切っておこう
CPU450MHz じゃきつい。そうでなくてもそれなり煩いみたいだけど
0742デフォルトの名無しさんNGNG
自作ソフトについて、こんな事言われちゃったよ

> インターフェイスからBCコンポーネント臭さを一掃してほしい。
> コンポーネント使っている=低級
> というパブリックイメージがあるように思うから。

なんか悔しい〜(。><)
0743デフォルトの名無しさんNGNG
パブリックイメージ( ´,_ゝ`)
0744デフォルトの名無しさんNGNG
テメエのイメージがパブリックだと思うなとでも言っとけ
0745デフォルトの名無しさんNGNG
自分はVC++6やOffice2000なんかのソフトが立ち上がると、
うわ、MFC系の凡庸モッサリMDI嫌い、サイズ固定ダイアログワールドダサい、
長々ウィザードしんどい、と拒否反応なんだが。
0746デフォルトの名無しさんNGNG
VC使って喜んでる奴は自己満足房なんだろうな
0747デフォルトの名無しさんNGNG
どこか初心者でも分かるようなC++Builderのサイトない?
とくにクラス系について書いてあるサイト希望
0748デフォルトの名無しさんNGNG
>>747
コンポーネント集の本買え
0749デフォルトの名無しさんNGNG
>>748
サイト教えれつってんだって史ねよクズが
0750デフォルトの名無しさんNGNG
はははは、こやつめ
0751デフォルトの名無しさんNGNG
>>734
落とせねーじゃんよ、史ねよクズが
0752デフォルトの名無しさんNGNG
>>751
   ∧_∧    / ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < なんだって?
.  ノ/  /     \_____
  ノ ̄ゝ
0753デフォルトの名無しさんNGNG
IQが80以下だと落とせないらしいよ。
0754デフォルトの名無しさんNGNG
IQが20程度しかないけど、やっぱ無理?
0755デフォルトの名無しさんNGNG
LAME.dllを使ってmp3エンコできる簡単なツール作りたいんですが資料が見つかりません。
なにかいいものありませんか?
0756デフォルトの名無しさんNGNG
午後じゃだめ?
ttp://homepage2.nifty.com/~maid/delphi.html
0757デフォルトの名無しさんNGNG
gogo.dllイクナイ
0758デフォルトの名無しさんNGNG
>>754
その質問が>>753のあとに出るということは、
20が80より多いか少ないかもわからないということですよね?

当然無理です、そんなんじゃ。
0759デフォルトの名無しさんNGNG
おまいらだからVC使ってる厨房に馬鹿にされんだよ
0760デフォルトの名無しさんNGNG
tu-ka、VCからみたらBCBなんて糞以下だよね
0761デフォルトの名無しさんNGNG
ほら馬鹿なVC信者が釣れただろ?
0762デフォルトの名無しさんNGNG
>>716
「っ」を、手に見立てて、Cの標準ライブラリをどうぞ、という意味だと思われます
要するにstd::string見ろと
0763デフォルトの名無しさんNGNG
( ´∀`)っ�I
0764735NGNG
>>735
IDEが固まる〜解決報告です。自動支援機能を全OFFにしたところ、以前のように固まることは無くなりました。
支援機能自体は、キーを明示的に打つことで、自動支援がOFFでも利用できるようです。
キーのバインドは、
>代入文を入力し〔Ctrl〕+〔Space〕を押す。変数に対して有効な引数のリストが表示される。コードに入力する引数を選択する
>〔Shift〕+〔Ctrl〕+〔Space〕を押すといつでも宣言表示を起動できます。
ありがとうございました。

>>741
煩わしいということは、なくなりました。
Celeron1.4なんで、比較になるかは分かりませんが、、、
コンパイルのほうも、BCBMLでプリコンパイル一連の投稿を見て、それなりの速度になったと思います
0765デフォルトの名無しさんNGNG
教えてください。
JavaでいうClass.forname(String classname)みたいなことは
C++でできますか?

String型の配列にクラス名を入れて、for文をまわして
配列に格納されているクラス名のクラスのインスタンスを
作成したいのですが、どうすればいいかわかりません。
0766デフォルトの名無しさんNGNG
できません。
0767765NGNG
そうですかーありがとうございます。

fooにクラス名を入れて
hoge = new foo()
ってやりたかったんですけどね

なにか代替案があればアドバイスください。
0768デフォルトの名無しさんNGNG
PrintDialogを使わずに印刷する方法を教えて下さい。
0769デフォルトの名無しさんNGNG
>>767
hoge = new foo(class_name);
とか、やりたいのかい・・・
0770本田NGNG
>PrintDialogを使わずに印刷する方法を教えて下さい。

Delphi用だけど参考になるかな?
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=31
0771デフォルトの名無しさんNGNG
DBGrid のバグ(?)報告するんでちょっと聞いてくれよ。

1.グリッドに表示されている一番下のアイテムをクリック。
2.カーソルキーの↓を押す。  ---> [*]と表示される。
3. 1.で選択されてたアイテムを再度クリック。
---> するとクリックしたアイテムの1個うえのアイテムが選択される。

レコードの挿入をキャンセルした際、座標計算が狂うんだと
思うんですけど、解決策知ってるひと居たら教えてくれよ♥

環境は、BCB6 Pro SP4、WINXP Pro SP1 です。
0772デフォルトの名無しさんNGNG
>>771
仕様です。
0773デフォルトの名無しさんNGNG
TLabel* をstd::vectorに入れて
std::sortできないんだけ、どうすればいいのかしらん?
0774デフォルトの名無しさんNGNG
sort()に、比較関数か比較関数オブジェクトを渡す。
こんな感じ(試してないけど)

struct compare {
 bool operator()(const TLabel *lhs, const TLabel *rhs) const {
  return lhs->Caption < rhs->Caption;
 }
};

std::sort(v.begin(), v.end(), compare);
0775デフォルトの名無しさんNGNG
BCB6で、GDライブラリを動的リンクして使おうと思ったんですが、

#include "gd.h"
#include <stdio.h>

typedef gdImagePtr __stdcall (*Proc1)(int,int);
略

{
HINSTANCE handleDLL = LoadLibrary("bgd.dll");
Proc1 gdImageCreate = (Proc1)GetProcAddress(handleDLL,"gdImageCreate");
略

gdImagePtr im;
FILE *jpegout;
int black white;

im = gdImageCreate(64, 64);
black = gdImageColorAllocate(im, 0, 0, 0);
white = gdImageColorAllocate(im, 255, 255, 255);
gdImageLine(im, 0, 0, 63, 63, white);
jpegout = fopen("test.jpg", "wb");
gdImageJpeg(im, jpegout, -1);
fclose(jpegout);
gdImageDestroy(im);

FreeLibrary( handleDLL );
}

実行すると、アドレス0〜でアドレス0〜に対する読み込み違反が起きました、と出て実行できません。
GDライブラリを使ってる人はどうやって実装したんでしょうか。教えて下さい。
0776デフォルトの名無しさんNGNG
おまいら早くBCB9を出してください
0777デフォルトの名無しさんNGNG
っ[BCB9]
0778デフォルトの名無しさんNGNG
そんなんじゃ満足しません
0779デフォルトの名無しさんNGNG
っ[BCB10]
0780デフォルトの名無しさんNGNG
つ[BCBX]
0781デフォルトの名無しさんNGNG
>>774
LoadLibraryとGetProcAddreessの戻り値ちゃんとチェックしてるか?
0782デフォルトの名無しさんNGNG
>>775だった・・
0783本田NGNG
>DBGrid のバグ(?)報告するんでちょっと聞いてくれよ。
>
>レコードの挿入をキャンセルした際、座標計算が狂うんだと
>思うんですけど、解決策知ってるひと居たら教えてくれよ♥
>
>環境は、BCB6 Pro SP4、WINXP Pro SP1 です。

ラッキーなことにVCLのソースコードをお持ちなので、
ご自分でパッチを作って、
ボーランドや必要としている人に送ることができます。

またはDrawGridコンポーネントを継承して、
貴方好みのGridコンポーネントを創ることができます。
0784デフォルトの名無しさんNGNG
>>776
バージョンいくつでも良いからバグのないBCB出せや!
せめてBCB5SP1から移行可能なBCB出せ!
0785デフォルトの名無しさんNGNG
質問があるのですが。トランプゲーム(ブラックジャックやポーカー)レベルの作品を作るのに適した
参考書はありますでしょうか?
やはり「C++Builder 6コンポーネント活用ガイド&実践プログラミング Vol.2 実践テクニック編」
を参考書に買うのがベストですか?
0786デフォルトの名無しさんNGNG
>>785
ベストです。
0787デフォルトの名無しさんNGNG
ゲーム限定ならこんなのもある。古本屋で見つけたらどうぞ。
『C++BuilderでWindowsゲームを作ろう!』
0788765NGNG
>>769
というか、fooにはクラス名を表す文字列を入れたいのですよ。
769さん風に書くとhoge=new class_name()という感じです。
0789785NGNG
>>786
>>787
返答ありがとうございます。取り合えず、実践テクニック編を買ってみます。

大学の講義で、仕方なくやらなきゃならないんですが、本でもみながら頑張る事にします。
また、何かあったらここに相談させて貰いますので、よろしくお願いします。
0790デフォルトの名無しさんNGNG
>>784
自分でパッチ作るなり、導出して別のクラスつくるなりすれば
問題なくね?
0791本田NGNG
>自作ソフトについて、こんな事言われちゃったよ
>
>> インターフェイスからBCコンポーネント臭さを一掃してほしい。
>> コンポーネント使っている=低級
>> というパブリックイメージがあるように思うから。
>
>なんか悔しい〜(。><)

自作コンポーネントでアプリケーションを構築すればいいのでは?
BCBはコンポーネントを使うのは天国で、創るのは地獄だから。
0792デフォルトの名無しさんNGNG
そう?
コンポーネント作るの簡単じゃん
0793デフォルトの名無しさんNGNG
なんかパッケージにインスコとかしなきゃなんなくて面倒じゃん
0794デフォルトの名無しさんNGNG
別にパッケージにインスコしなければいけないこともないんですが・・・
0795デフォルトの名無しさんNGNG
>>775

gdImageJpeg関数にFILE*渡してるけどこのDLLってBuilder用なの?
以前ogg関係のスレでFILE構造体に起因する問題の書き込み見た記憶が
たしかBuilderとVCではFILE構造体に互換性がないんじゃなかったかな

違ったらスマソ
0796デフォルトの名無しさんNGNG
BCB6personal初心者ユーザーです。
RichEdit形式のテキストをCanvasオブジェクトの任意の位置に貼り付ける方法
を教えていただきたけませんでしょうか?

やりたいことは、プリンターにbitmap形式の画像とRichEdit形式で作成された
文章を同時に印刷したいのです(画像上半分で、RichEdit形式のキャプションが
つく感じ)。

よろしくおねがいします。
0797デフォルトの名無しさんNGNG
RichEdit形式のテキストってなに?
■ このスレッドは過去ログ倉庫に格納されています