C++Builder相談室 Part15
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/08/21(日) 17:48:30過去スレ・関連サイトは>>2-7あたり。
0032デフォルトの名無しさん
2005/08/23(火) 17:04:58testの間違いです。。。
怪しげって何が怪しいんでしょうKA。
0033デフォルトの名無しさん
2005/08/23(火) 17:10:10いや、何かそこに理由がありそうだなぁ、と。全然わかんないんだけどね。役立たずで申し訳ない
0034デフォルトの名無しさん
2005/08/23(火) 17:25:14分からないのにスレ違いのネタ引っ張るなよ。
0035デフォルトの名無しさん
2005/08/23(火) 17:28:070036デフォルトの名無しさん
2005/08/23(火) 17:31:05って何( ´∀`)?
ってか、本当にコンパイル通ってるのかYO!
#include <stdio.h>
int main()
{
print("check");
return 0;
}
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.cpp:
エラー E2268 test.cpp 5: 未定義の関数 'print' を呼び出した(関数 main() )
*** 1 errors in Compile ***
0037デフォルトの名無しさん
2005/08/23(火) 22:23:27タイプミスですた・・・ww
0038デフォルトの名無しさん
2005/08/23(火) 22:55:340039デフォルトの名無しさん
2005/08/24(水) 00:16:42実行しているのか? つーか、test をtextと書いたり、printとか何とか、
実際にやった内容と違うことばっかり書いて質問されてもなぁ・・・
問題の切り分けをするなら、300行のナントカは、ともかく、最低限、
printfが1行だけある main() をコンパイルしてみて、できた実行ファイルを、
ルートからフルパスで指定して動かしてみること。
変なパスが通っていて、ヨソにあるexeを実行していたりしないか?
あと、"check.." って、もしかして、改行マークなし? バッファのフラッシュを
しないなら、\nがいるんじゃないかな。
いずれにせよ、完全にスレ違いなので、続きは誘導先でやってくれ。
0040デフォルトの名無しさん
2005/08/24(水) 00:47:59004140
2005/08/24(水) 00:48:420042デフォルトの名無しさん
2005/08/24(水) 08:42:39なんてあるわけないし。 100%間違いなく、操作間違ってる。
0043デフォルトの名無しさん
2005/08/24(水) 11:35:30Transparentをtrueにするとたまにグラフが描画されなくなります。
なんとなく、Canvasからはみ出たときに起こるのですが
これの対処法を教えてください。
0044デフォルトの名無しさん
2005/08/24(水) 12:19:18まずは「なんとなく」の部分をはっきりさせるべし
0045デフォルトの名無しさん
2005/08/24(水) 12:22:03Transparentをtrueにしたとき透明表示される色は特に指定しなければ
確か一番左下のドットの色だっけか?
まずはsageようか。
0046デフォルトの名無しさん
2005/08/24(水) 13:20:48sage厨はスルーで
0047デフォルトの名無しさん
2005/08/24(水) 13:44:48ありがとうございます。
「一番左下のドットの色」で全ての謎がとけました。
グラフを描画する時にCanvasからはみだしてもちゃんと描画されるときと
されない時で描画されない時は左下のドットに描画してる時でした。
予めTransparentColorに色を与えておいて見事に解決しました。
0048デフォルトの名無しさん
2005/08/24(水) 17:32:45新党日本
0049デフォルトの名無しさん
2005/08/24(水) 18:08:290050デフォルトの名無しさん
2005/08/24(水) 18:14:300051デフォルトの名無しさん
2005/08/24(水) 22:05:150052デフォルトの名無しさん
2005/08/24(水) 22:16:57form->Show();
0053デフォルトの名無しさん
2005/08/27(土) 10:05:22MySQLのSSL通信機能はver4.1から正式にサポートされたものなんですが…。
005430
2005/08/30(火) 00:02:36あるグローバル変数を配列を数千×数千で定義していたので出来ませんでした。
百×百位にしてコンパイルしたら実行できました。
しかし実行には.EXEつけないと無理ですが・・・。
0055デフォルトの名無しさん
2005/08/30(火) 00:50:31うーん、まだまだあやしい。。。 けど、このスレで続けるのは変だから、
うだうだ書くのはやめておくね。
0056デフォルトの名無しさん
2005/08/31(水) 14:08:58『グローバル変数』なら配列の要素が大きくてもそこまで問題じゃないんじゃね?
仮にintで2000x2000だとしたら約15MBくらい
『オート変数』の間違いでは・・・
あと、exeつけないと実行できないんだったら、コマンドプロンプトで『notepad』は起動するんか?
0057デフォルトの名無しさん
2005/08/31(水) 22:03:56>>38を声に出して百回読め、このあきめくら。
0058デフォルトの名無しさん
2005/08/31(水) 22:53:550059デフォルトの名無しさん
2005/08/31(水) 23:16:09ファイル(F)-新規作成(N)のフォームタブに
自作のフォームを追加したいのですが、方法がよくわかりません。
プロジェクト(P)-リポジトリに追加(T)で追加できそうなのはわかったのですが、
フォームを新規作成した状態では、リポジトリに追加(T)は無効になっています。
どのようにすれば、自作フォームを追加できるでしょうか。
よろしくお願いします。
0060デフォルトの名無しさん
2005/09/01(木) 00:05:04フォーム右クリックで「リポジトリに追加」
0061デフォルトの名無しさん
2005/09/01(木) 00:52:43さんくすです。出来ました。
右クリックにあったんですね。気づきませんですた。
0062デフォルトの名無しさん
2005/09/03(土) 18:16:430063デフォルトの名無しさん
2005/09/03(土) 18:23:000064デフォルトの名無しさん
2005/09/03(土) 20:02:330065デフォルトの名無しさん
2005/09/04(日) 00:36:16http://thunder.prohosting.com/~cbdn/k009.htm
0066デフォルトの名無しさん
2005/09/04(日) 05:06:55サイズは48×48
DrawIconEx(Image1->Canvas->Handle, 0, 0, Application->Icon->Handle, 48, 48, 0, 0, DI_NORMAL);
0067デフォルトの名無しさん
2005/09/04(日) 12:28:100068デフォルトの名無しさん
2005/09/04(日) 12:31:170069デフォルトの名無しさん
2005/09/04(日) 12:55:46double 型の変数から Currency 型の変数に値を変換して設定するための
標準的な関数がありそうな気がします(いや、きっとあるはず)が、見つけ
られません・・・
おしえてくださいませ。m(_._)m
ちなみに・・・
文字列⇔Currency は、StrToCurr, CurrToStr
Currency → double は operator double()
など、その周辺はすぐ見つけられますね。
こういった逆引きって結構時間かかりまっすねぇ・・・
#Variant 型を経由しなきゃダメなんて落ちじゃないですよねー。
0070デフォルトの名無しさん
2005/09/04(日) 13:02:52__fastcall Currency(double val);
0071デフォルトの名無しさん
2005/09/04(日) 13:04:080072デフォルトの名無しさん
2005/09/04(日) 13:05:320073デフォルトの名無しさん
2005/09/05(月) 17:06:170074デフォルトの名無しさん
2005/09/07(水) 13:22:45メインフォームから動的に作成した子フォームを
MDI親フォームとする方法を教えてください。
0075デフォルトの名無しさん
2005/09/08(木) 01:08:11TFormはfsMDIChildeのとき、問答無用でメインフォームを親フォームにするみたいだな。
つうわけで無理っぽい。
0076デフォルトの名無しさん
2005/09/08(木) 01:48:16しないだろう。
ユーザは減っていくだけ!!
もし、DELPHI2006無償配布を多くしたら復活の道あるのに。。
0077デフォルトの名無しさん
2005/09/08(木) 06:13:33http://www.geocities.jp/octbery/program.html
・画像処理・エフェクトの準備
・グレースケール : 画像を白黒画像に変換
・2値化 : 特定のレベルをしきい値として、しきい値より明るいピクセルは白に、暗いピクセルは黒に変換
・階調の反転 : 画像の階調を反転
・ポスタリゼーション : 画像の階調を変える
・wipein : 画像をワイプイン
・wipeout : 画像をワイプアウト
・fadein : 画像をフェードインする
・fadeout : 画像をフェードアウトする
タイマー関連
・プログラムの実行時間を計測
その他
・コントロールの再描画時のちらつきを減らす
・midi音源から音を鳴らす
0078デフォルトの名無しさん
2005/09/08(木) 08:42:26やっぱりorz
ありがとうございました
0079デフォルトの名無しさん
2005/09/08(木) 09:33:19Windows API SystemParametersInfo()を使用します。
Example:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRect r ;
SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0);
Form1->Top = r.Top;
Form1->Left = r.Left;
Form1->Width = r.Right - r.Left;
Form1->Height = r.Bottom - r.Top;
}
0080デフォルトの名無しさん
2005/09/08(木) 10:04:590081デフォルトの名無しさん
2005/09/08(木) 10:55:02CreateParamsがオーバーライド出きる様に変更されてて、
生成処理差し替え出きると思ったが。
0082質問者
2005/09/08(木) 11:33:29MDIChildのフォームの親フォーム(MDIForm)はメインフォームの子フォーム
である事が絶対でありメインフォーム自体を変更するのは無しです。
この方法は可能ですか?
0083Image
2005/09/08(木) 11:44:47その際ScanLineを使いたいと思っています。
Delphiではできたのですが、C++Bulderではよくわかりません。
変数の宣言等等含め教えていただけたらと思います。
0084デフォルトの名無しさん
2005/09/08(木) 11:51:51たとえば24bit幅100pixelなビットマップの12行目を黒に塗りつぶす場合
int line = 12;
char* ptr = static_cast<char*>(Bitmap->Scanline[line]);
for(int i =0; i<100; i++)
{
*ptr = 0; ptr++; //青
*ptr = 0; ptr++; //赤
*ptr = 0; ptr++; //緑
}
あとは考えれ。
0085Image
2005/09/08(木) 12:34:43回答ありがとうございます。
ごめんなさい。理解が追いつかないです。
配列に読み込んだデータImage[100][100]があるとすると
それはどのように扱うのですか?
0086デフォルトの名無しさん
2005/09/08(木) 13:07:36ちょっとわからん
0087デフォルトの名無しさん
2005/09/08(木) 13:38:34Scanlineの返す値が何なのか理解してるか?
0088Image
2005/09/08(木) 13:44:09ちなみにDelphiでは以下のように書きました。
for y:=0 to ysize-1 do
begin
p:=bmp.ScanLine[y];
{y列めのデータのアドレスにポインタをセット}
for x:=0 to xsize-1 do
begin
c:=xy[y,x]-(wl-(ww div 2));
c:=(c*256) div ww;
if c > 255 then c:=255;
if c < 0 then c:=0;
p^[x].r:=c ;
p^[x].g:=c ;
p^[x].b:=c ;
end;
end;
form1.image1.Canvas.Draw(0,0,bmp);
end;
0089Image
2005/09/08(木) 14:22:23Bitmap->Scanline[line]
Bitmapの一列分のデータを返すものだとなんとなくですが
理解しています。
ただ、
BitMap.LoadFromFile('C:\Program Files\Common Files\Borland Shared\
Images\Splash\256color\factory.bmp');
みたいな感じに、先にBitmapに画像を読み込んでいるわけではないので
そのあたりがどのようになるか知りたかったわけです。
説明が悪くすみません。
0090デフォルトの名無しさん
2005/09/08(木) 17:40:38予め読み込んでいない Bitmap は真っ白なビットマップです。
Scanline[y] が返すポインタは型なしですが、その内容は PixelFormat に依存します。
pf32bit ---- PRGBQuad
pf24bit ---- PRGBTriple
pf8bit 以下 ---- PByte
ですから適切にキャストすると色データにアクセスできます。
逆にいうと ScanLine を使う前に PixelFormat が確定している必要があります。
0091デフォルトの名無しさん
2005/09/08(木) 21:26:17void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRect r ;
SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0);
Form1->Top = r.Top;
Form1->Left = r.Left;
Form1->Width = r.Right - r.Left;
Form1->Height = r.Bottom - r.Top;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Top = Screen->WorkAreaRect.Top;
Form1->Left = Screen->WorkAreaRect.Left;
Form1->Width = Screen->WorkAreaRect.Right - Screen->WorkAreaRect.Left;
Form1->Height = Screen->WorkAreaRect.Bottom - Screen->WorkAreaRect.Top;
}
0092デフォルトの名無しさん
2005/09/08(木) 21:37:37{
TRect r ;
r = Screen->WorkAreaRect;
Form1->Top = r.Top;
Form1->Left = r.Left;
Form1->Width = r.Right - r.Left;
Form1->Height = r.Bottom - r.Top;
}
0093デフォルトの名無しさん
2005/09/08(木) 21:56:560094デフォルトの名無しさん
2005/09/09(金) 00:52:13{
Caption = Screen->DefaultIme;
}
0095デフォルトの名無しさん
2005/09/09(金) 00:59:30Form1->BoundsRect = Monitor->WorkareaRect;
0096デフォルトの名無しさん
2005/09/09(金) 10:09:23{
Button1->Caption = "C++Builder";
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button1->Perform(BM_CLICK, 0, 0);
}
0097デフォルトの名無しさん
2005/09/10(土) 06:01:33OnIdleイベントはTApplicationのイベントなのです。
なので、Applicationに割り当てます。
場所はコンストラクタが良いでしょう。
//Formのコンストラクタで
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->OnIdle = IdleHandler;
}
0098デフォルトの名無しさん
2005/09/10(土) 10:13:25.exe内の関数を.dllに入れて呼び出す場合は実行速度は
大して変わりないのでしょうか?
0099デフォルトの名無しさん
2005/09/10(土) 10:15:25変わらない
0100デフォルトの名無しさん
2005/09/10(土) 10:18:41010198
2005/09/10(土) 10:38:42なるほど、処理速度自体は変わらないけど起動時読み込みにより
遅くなるって事ですね。
起動が遅くなる度合いは関数の数に関係なく.dllの数によるものですか?
0102デフォルトの名無しさん
2005/09/12(月) 04:14:24http://blog.livedoor.jp/junki560/
0103デフォルトの名無しさん
2005/09/12(月) 05:38:10機動は早くなるよ
0104デフォルトの名無しさん
2005/09/12(月) 07:35:51どのような方法が、良いのでしょうか?
起動時にOSの言語を判定して、キャプションやフォントを変更していく以外に何はよい方法はないでしょうか?
0105デフォルトの名無しさん
2005/09/12(月) 11:15:28http://www.plustarnet.com/aspil/Programming/cpp01.htm
//コンストラクタ(constructor)とデストラクタ(destructor)
__fastcall ~TForm1();
__fastcall TForm1::~TForm1()
{
delete pBitmap;
delete pBitmap2;
delete tmpImage;
pixelinfolist->Clear();
delete pixelinfolist;
pixelinfolist2->Clear();
delete pixelinfolist2;
}
0106デフォルトの名無しさん
2005/09/12(月) 22:16:05リソースdllを丸ごとすげ替える方法がある。
ヘルプ読め
0107デフォルトの名無しさん
2005/09/12(月) 23:58:34ヘルプを読んでみたのですが、フォームの内容をDLLに保存する方法がよく分かりません
0108デフォルトの名無しさん
2005/09/13(火) 08:16:26http://makimo.to/2ch/piza2_tech/997/997074601.html
http://makimo.to/2ch/pc3_tech/1016/1016065855.html
http://makimo.to/2ch/pc2_tech/1035/1035596146.html
http://makimo.to/2ch/pc2_tech/1045/1045542179.html
http://makimo.to/2ch/pc5_tech/1054/1054280736.html
http://makimo.to/2ch/pc2_tech/1061/1061594556.html
http://makimo.to/2ch/pc5_tech/1080/1080541814.html
http://makimo.to/2ch/pc5_tech/1089/1089299158.html
http://makimo.to/2ch/pc5_tech/1094/1094749339.html
http://makimo.to/2ch/pc5_tech/1099/1099238936.html
http://makimo.to/2ch/pc8_tech/1108/1108468718.html
0109デフォルトの名無しさん
2005/09/13(火) 18:19:07テキストファイルからボタンのキャプションなどを読み込めばいいのでは?
0110デフォルトの名無しさん
2005/09/13(火) 20:25:41リソースdllウィザードとかその類いのが新規作成の中に無いか?
0111デフォルトの名無しさん
2005/09/14(水) 00:22:18行ったことは、まず
SDL-1.2.9.zipをダウンロードして展開。
中に入っていたBorland.zipを展開。(Borlandディレクトリができる)
Borland\bcb6にlibSDL.bpgをダブルクリックする。
プロジェクトメニューからすべてのプロジェクトをメイクをしました。
そうすると、パッケージのインポートライブラリーが見つかりませんと出ました。
これは、同梱されていたBorland.htmlというファイルを参考に実行しましたが
うまくできません。
どうやったらうまく導入できるんでしょうか?
0112デフォルトの名無しさん
2005/09/14(水) 12:57:16試してみたけどプロジェクトが出鱈目な感じだった。一応できたので以下やってみた手順。
・aliens.exeプロジェクトは、aliens.cが見当たらないのであきらめる。libSDLプロジェクトグループからaliensを削除。デモゲームらしい。
・SDL.dllプロジェクトにSDL-1.2.9/src/cpuinfo/SDL_cpuinfo.cを追加する。
・SDLmain.libプロジェクトのSDL_main.cを削除して、代わりにSDL-1.2.9/src/main/win32/SDL_win32_main.cを追加する。
・IDEを閉じた状態で、SDL.bprとgraywin.bprをメモ帳等の適当なエディタで開いて、「<PACKAGES value=vcl.bpi rtl.bpi…略」となってる部分を、「<PACKAGES value=""/>」とするかこのノード自体を削除して保存する。
・libSDLを開いて、「すべてのプロジェクトを再構築」を実行。
・途中で何回かコンパイルエラーが出るので、その都度userWindowProcを(FARPROC)userWindowProcという風にキャストして再度コンパイル。
で、コンパイルはできた。
0113デフォルトの名無しさん
2005/09/14(水) 14:06:30どうも試してくれありがとう。
あれから、色々検索しまして、簡単な導入方法がわかりました。
SDL-1.2.9-win32.zipの中のSDL.DLLをc:\windows\systemディレクトリに入れて
SDL-1.2.9.zipの中のborland.zipを展開した中に入っているものを全部borland C++ builder
をインストールした場所の各ディレクトリに入れました。
ヘッダファイルもinclude\SDKに入れまして、ライブラリもlib\SDKに入れてしまい
bcc32.cfgとilink32.cfgにパスを通して終わりです。
実際にSDLのテストプログラムをコンパイルしてみましたら、うまく実行できました。
0114デフォルトの名無しさん
2005/09/14(水) 19:49:33やっぱランタイムだけでよかったのね。DLLをソースからビルドしたい理由があったのかと思った。
0115デフォルトの名無しさん
2005/09/15(木) 09:28:31TImageに表示するにはどうすればいいのでしょうか?
そのままTBitmap::ScanLineで読み込んでも変な表示がされるのみでしてorz
0116デフォルトの名無しさん
2005/09/15(木) 10:22:570117デフォルトの名無しさん
2005/09/15(木) 10:23:26TImage::Picture::Bitmap::KiadFromStream使えば?
0118デフォルトの名無しさん
2005/09/15(木) 10:24:09ScanLine でコピーするならパレットもグレースケール化しないとね。
0119115
2005/09/15(木) 11:14:29LoadFromStreamでは「ビットマップイメージが不正です」と言われてしまいます。
DIBフォーマットってTBitmapでは直接読めないのでしょうか?
この辺りの処理をちゃんとやってないからScanLineでもダメなのでしょうねorz
0120デフォルトの名無しさん
2005/09/15(木) 11:25:42読み込み先の PixelFormat はどうなってます?
pf8bit なら、パレットをグレイスケール化することは必須
pf24bit なら ScanLine は TRGBTriple へのポインタだから RGB に同じ値を与えてグレースケールにする
pf32bit なら ScanLine は TRGBQuad 以下同上
0121デフォルトの名無しさん
2005/09/15(木) 14:16:14Graphics:TBitmap::PixelFormatをいじったか?
pfDeviceにでもなってんじゃないの?pf1bitに変更汁。
0122デフォルトの名無しさん
2005/09/15(木) 14:42:13pf8bit だろ、グレイスケールといえば普通。pf1bit ならスケールなんてない。黒白
0123デフォルトの名無しさん
2005/09/15(木) 15:22:080124デフォルトの名無しさん
2005/09/15(木) 15:27:550125115
2005/09/15(木) 16:04:38さっぱりワケわかめです。どうも読み込もうとしているDIBが画像データのみで、
ヘッダ情報が含まれていないようです。
ググっても、微に入り細に渡るBitmapフォーマットについての説明(勉強しているのなら
ありがたいですが、それは時間のある時に…)はあっても「だからこうしろゴルァ!」という
ズバッとしたサンプルソースがありませんorz
0126デフォルトの名無しさん
2005/09/15(木) 16:17:40データにWindowsBitmapのヘッダ付いてないならScanlineで書き込むしかない。
0127115
2005/09/15(木) 17:28:17上記のようにTBitmap::PixelFormatはpf8bitに設定して
TBitmap::Canvas::Pixels[x][y]にDIBの画像データをちまちまと入れたら出来ました。
お騒がせしました。
0128デフォルトの名無しさん
2005/09/15(木) 18:28:340129デフォルトの名無しさん
2005/09/15(木) 18:29:11Pixelsは猛烈に遅くなるからやめい。
0130デフォルトの名無しさん
2005/09/15(木) 18:29:15Pixels 使うのは最低だな
0131デフォルトの名無しさん
2005/09/16(金) 01:06:17だからScanLineを使って入れろというに。
Pixels使うと、一ドット毎にシステムコール起こるの知ってる?
0132デフォルトの名無しさん
2005/09/16(金) 05:22:48どうしたらいいでしょうか。当然NULLで文字が切れてしまいます。
■ このスレッドは過去ログ倉庫に格納されています