C++Builder相談室 Part19
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/08/01(金) 16:30:32※2008/07よりCodeGear(Borland IDE/DB部門)はBorlandからEmbarcaderoに移動しました
【前スレ】
C++Builder相談室 Part18
http://pc11.2ch.net/test/read.cgi/tech/1188607282/
過去スレ・関連サイトは>>2-7あたり。
※Borland C++ Compiler 5.5.1についての質問は以下のスレへ
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
※BDS(Borland Developer Studio)の総合スレはこちら
Borland Developer Studio 2006 No.13
http://pc11.2ch.net/test/read.cgi/tech/1175861395/
※CodeGear(Borland/Embarcadero)関連はこちら
【CodeGear】Embarcaderoオッチャ その10
http://pc11.2ch.net/test/read.cgi/tech/1216250111/
<関連スレ>
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
[Tips]Borland C++Builder ちょいテク No.01
http://pc11.2ch.net/test/read.cgi/tech/1154580209/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
0673デフォルトの名無しさん
2009/06/28(日) 00:37:00ScanLine()を使えば少しは速くなる
ドット単位で打つと猛烈に時間がかかる
0674デフォルトの名無しさん
2009/06/28(日) 02:29:26ありがとうございます。ScanLine()でやってみたいと思います。
0675デフォルトの名無しさん
2009/07/05(日) 14:51:56StringGridのセルを結合する方法が分かりませんorz
先輩方、どうかご教示を(´・ω・`)
0676デフォルトの名無しさん
2009/07/05(日) 15:15:470677デフォルトの名無しさん
2009/07/05(日) 15:28:00?ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200407/04070056.txt
0678デフォルトの名無しさん
2009/07/06(月) 00:16:05有難うございます!
しかし解決できずorz
もっと勉強しないとだなぁ・・・('A`)
0679デフォルトの名無しさん
2009/07/06(月) 01:13:010680デフォルトの名無しさん
2009/07/06(月) 01:13:38ttp://www.tmssoftware.com/site/gridpack.asp
こんなのとか。
0681デフォルトの名無しさん
2009/07/06(月) 20:37:530682デフォルトの名無しさん
2009/07/06(月) 21:10:17有償版があるくらいにアレなんですね、わざわざ有難うございます!
StringGridは2009だとその辺が改善されてるんですかね?
というか2009BCB以外に安いですね、高いけど('A`)
0683デフォルトの名無しさん
2009/07/07(火) 00:05:02改良コンポなんかごろごろしてるから探せ
0684デフォルトの名無しさん
2009/07/07(火) 09:45:25相変わらずヘルプは腐ってるな
0685デフォルトの名無しさん
2009/07/07(火) 10:25:26StringGridで検索しているに1000万ジンバブエドル
0686デフォルトの名無しさん
2009/07/07(火) 14:30:09横スクロールすると結合したセルの表示がおかしくなります。
どうすればいいですか?
0687デフォルトの名無しさん
2009/07/07(火) 14:40:150688デフォルトの名無しさん
2009/07/07(火) 14:46:29DrawCellイベント内なのでRefreshをすると永遠にチラつきまくりますが、
InvalidRectはヘルプに載ってないのですがAPIですか?
0689デフォルトの名無しさん
2009/07/07(火) 14:51:09でした。
>DrawCellイベント内なので
スクロールの終了後にコールすれば良いんジャマイカ?
0690デフォルトの名無しさん
2009/07/07(火) 14:52:31これは失礼しました。
TopLeftChangedでやればよかったんですよね^^
とりあえずTopLeftChangedでやったらうまくいきましたが
InvalidateRectも調べてみます。
ありがとうございました
0691デフォルトの名無しさん
2009/07/09(木) 14:16:35今回、初めてC++Builder5を使用してプログラムを作成していますが
何もわからない。
1、以下のようなテキストファイルが存在する。
---------------------------------
1の要求を受付ました。
1の要求の応答を送信しました。
2の要求を受け付けました。
2の要求の応答を送信しました。
<-どんどん新しいデータが入る。
---------------------------------
2、テキストファイルのデータを新しいもの順に表示する。
※↓textArea??MeMo????
--------------------------------- ↑新
2の要求の応答を送信しました。 <-新しいデータが来るたび一番上に追加される。
2の要求を受け付けました。
1の要求の応答を送信しました。
1の要求を受付ました。
--------------------------------- ↓古
上記のようなものを実現したいのですが、さっぱりわかりません。
誰か教えてください・・・(;;)w
0692デフォルトの名無しさん
2009/07/09(木) 14:22:350693デフォルトの名無しさん
2009/07/09(木) 14:47:550695デフォルトの名無しさん
2009/07/09(木) 15:56:03このブタ野郎がっ!!
TStringList *sl = new TStringList( );
sl->LoadFromFile( "元ファイル" );
sl->Stringsをソート
sl->SaveToFile( "新ファイル" );
delete sl;
めんどいなら↓
TStringList *sl = new TStringList( );
TStringList *wl = new TStringList( );
sl->LoadFromFile( "元ファイル" );
wl->Clear( );
for( int i = sl->Count - 1; i>= 0; i -- ){
wl->Add( sl->Strings[i] );
}
wl->SaveToFile( "新ファイル" );
delete wl;
delete sl;
0696デフォルトの名無しさん
2009/07/09(木) 16:12:53ソートじゃきっとまずいだろ
ちゃんと逆順になめなきゃ
「表示する」ってんだから
保存は不要だろうけど
ファイル読みの排他処理も気になるが
まあ、ときどきチェックして
変化分だけ先頭に追加表示かな
0697デフォルトの名無しさん
2009/07/09(木) 16:32:52>>696
TStringListのソートじゃアレだとおもったからソースはかかなかった。
自分で逆からぐるぐるやればアレ。
表示だけなら
TStringList *sl = new TStringList( );
sl->LoadFromFile( "元ファイル" );
for( int i = sl->Count - 1; i>= 0; i -- ){
Memo1->Lines->Add( sl->Strings[i] );
}
delete sl;
これでいいんじゃね?
これはTMemoに書いてるがそこを変えればおk
0699デフォルトの名無しさん
2009/07/09(木) 16:36:260700デフォルトの名無しさん
2009/07/09(木) 16:40:13---------------
| |
常に | | 常に
書き込み-> | | <-読み込み
| |
| |
---------------
を行うわけですが、問題ないですか?
問題がある場合は、みなさんはどのように対応していますか?
0701デフォルトの名無しさん
2009/07/09(木) 16:42:09おうっ!壊れた。
初心者ですので勘弁してください。
ひとつのログファイルに常に書き込むプログラムと常に読み込むプログラムが
いるけど大丈夫ですか?
0702デフォルトの名無しさん
2009/07/09(木) 17:54:29無料のものならFirebird。
0703デフォルトの名無しさん
2009/07/09(木) 18:00:28どうすれば良い○| ̄|_
0704デフォルトの名無しさん
2009/07/09(木) 18:14:530705696
2009/07/09(木) 18:19:17ただのログファイルの表示に
それはないだろ
>>701
書き込み側のプログラムは
既存のものなのか?
書き直しはできるのか?
あーあ、現実逃避中
0707デフォルトの名無しさん
2009/07/09(木) 22:09:30テキストファイルはログの保存だけに使う
0708デフォルトの名無しさん
2009/07/09(木) 22:22:01一定数行を越えると古いものを削除したりするの?
二つのプロセスが一つのファイルいじるならミューテクスとかで排他制御するといいよ。
0709デフォルトの名無しさん
2009/07/10(金) 02:11:200710696
2009/07/10(金) 09:19:48どうしてふたつのプログラムにするのかわからんが
要はプログラム間通信ということだな。
簡単には、書き込みファイルの存在をフラグとして
読み込み側で読んだら消すというハンドシェイクをする。
必要なら読み込み側で別ファイルに保存する。
もちろん、書き込み側はログを遅延書き込みできなきゃダメだが。
>>709
それももちろん必要だが、それだけで解決できないよね。
0711デフォルトの名無しさん
2009/07/10(金) 12:27:28簡単に解決できるだろ。
0712デフォルトの名無しさん
2009/07/10(金) 13:53:26リトライするってこと?
0713デフォルトの名無しさん
2009/07/10(金) 18:05:17読み込み側は、FILE_SHARE_WRITE指定
で問題なく読み書きできるだろ。
0714デフォルトの名無しさん
2009/07/10(金) 22:46:12その設定でオープンしたまま処理するの?
タイミングによっては、どこまでが読めてくるのか
心配なのだが・・・
691さん、実験してみて
0715デフォルトの名無しさん
2009/07/12(日) 20:23:17何の成果も得られません。
それでも、何ヶ月も毎日読み続けてたら、Windowsプログラムを作れるように
なりますか。
それとも、ニートになって毎日起きてる時間の全部を、その学習に費やして
10年という歳月を掛けても、無理ですか。
0716デフォルトの名無しさん
2009/07/12(日) 21:06:48読み続ける、学習を続けるだけでは一生無理
何が言いたいかというととにかくまずプログラムを書け
動くものを作れ
簡単なものから徐々にレベルアップしていけばいい
実践のなかで知識の本質を理解しろ
0717デフォルトの名無しさん
2009/07/12(日) 21:58:18とにかく作れと云っても無理ぽ
何もわからんのだから。
一番の近道は、ソースを読むこと。
評判のいいソース、あるいは自分が作りたいプログラムに近いものの
ソースを読み、実際にコンパイルして動かして動作を確認する。
そして、ちょっとだけプログラムを変更してみて
自分の思った通りに動くかどうかを確認する。
まあ、こんなところからやってみるのが現実的であろう。
0718デフォルトの名無しさん
2009/07/13(月) 19:25:54みんなアドバイスありがとう
ログもDBで管理するようになりました。
いいのかな???まぁいいや。
BCB5でのDBアクセスの方法等を調査しなくては...。
0719デフォルトの名無しさん
2009/07/13(月) 20:51:06BCBは基本的に殆どのライブラリをVCLに頼っているから
Delphiの参考書があればほとんどそのまま移植できる
0720デフォルトの名無しさん
2009/07/14(火) 09:32:38できないのは class of に相当する定義だけじゃない?
0721デフォルトの名無しさん
2009/07/14(火) 09:53:42.pasファイルをそのままプロジェクトに組み込めるw
Delphiで作成したクラスは、実体宣言できなくて、”ポインタ宣言&new”というのが最大の制限。
0722デフォルトの名無しさん
2009/07/14(火) 10:30:210723デフォルトの名無しさん
2009/07/14(火) 10:33:540724デフォルトの名無しさん
2009/07/14(火) 11:21:28pasソースをBuilderのプロジェクトにぶちこめばいい。
0725デフォルトの名無しさん
2009/07/14(火) 17:31:180726デフォルトの名無しさん
2009/07/14(火) 21:10:08先週から常連になってきたペーペーです。
新たな問題が発生しました・・・。助けてください。
2台のPCが存在します。
各PCには共有フォルダと作業用フォルダを持っています。
PC1からPC2へ何か要求を行う場合、PC2の共有フォルダに要求が入力された
ファイルが置かれます。
各PCは自分の共有フォルダをポーリングしていて、ファイルを発見した場合
そのファイルを作業フォルダに移動させます。(要求の処理は他の人の担当です)
(コピー後削除? 切り取りはできますか?)
上記の動作をexeを起動したら自動的にスレッドを起こして、その中で行う
みたいです。
まず、スレッドって何?から話が始まって、とりあえずそこはなんとなく理解
できました。
しかし、スレッドの起こす方法や、起動時に自動ってどうやって??
で詰まっています。
要は、何もわからない状況です。助けてください。
周りにC++できる人が一人もいないのです・・・。
DBアクセスもできていなのに・・・。泣きたい。
0727デフォルトの名無しさん
2009/07/14(火) 21:13:580728デフォルトの名無しさん
2009/07/14(火) 22:22:20その腐った仕様は誰がどうやって決めたんだ?排他処理は?スレッドの必要性は?
とそんなことをそいつにちゃんと考えさせろ。
スレッドはTThreadを派生させて作る。
0729デフォルトの名無しさん
2009/07/14(火) 23:22:25お前にはまだ早い
0730デフォルトの名無しさん
2009/07/14(火) 23:35:350731デフォルトの名無しさん
2009/07/14(火) 23:42:46実用的とは考えにくいなー
0732デフォルトの名無しさん
2009/07/15(水) 05:04:17セマフォー or CriticalSectionの概念を理解させるために
問題を単純化して、ファイルで制御させる目的で
どっかの田舎の専門学校が学生に出した課題
って感じだな。
0733デフォルトの名無しさん
2009/07/15(水) 09:58:57たしかに>>726はプログラムの知識は文句言ってる貴様らと大差はないが
実際に運用するときはこんな使い方をするところもある
0734デフォルトの名無しさん
2009/07/15(水) 10:09:32説明が悪いので勘違いされたかもしれませんが
勉強課題ではないんです。
自分の担当分以外は全く理解できていませんが、
これが一番良い方法らしいです。
>>733
ありがとう
少し落ちこんでいました。
>>729
の言うと通り、技術的にまだ未熟ですので皆さんに助けを
お願いしたいのです。
0735デフォルトの名無しさん
2009/07/15(水) 10:22:57発言力はあるが、知識のない奴が
たくさんいるからな
0736デフォルトの名無しさん
2009/07/15(水) 10:31:23タイマーでやるよりはスッドレの方が好みだな。
同期に関して、Windows のセマフォは実装に問題があるから、
使うときは良く考えた方がいい。大抵はミューテックスか
クリティカルセクションで事足りるけど。
とりあえず思いついたことだけ。
要点もまとめられないほどわかってないやつをこのような場所で
サポートするのは至難だと思うな。
0737デフォルトの名無しさん
2009/07/15(水) 10:33:000738デフォルトの名無しさん
2009/07/15(水) 16:32:17その「ここ」には「地球」すら違和感なく入る。
0739デフォルトの名無しさん
2009/07/16(木) 15:54:51誰かBCB5でのSetTimer,KillTimerの使い方おしえて
0740デフォルトの名無しさん
2009/07/16(木) 16:38:400741デフォルトの名無しさん
2009/07/16(木) 16:41:00コラ
偽者め
お前が教えろ
0742デフォルトの名無しさん
2009/07/16(木) 16:42:280743デフォルトの名無しさん
2009/07/16(木) 16:43:31知らんなら黙ってろカス
知ってる人早く教えてください
詳しく
0744デフォルトの名無しさん
2009/07/16(木) 17:12:42KillTimer(なんちゃら)
知らんけど。
0745デフォルトの名無しさん
2009/07/16(木) 17:22:18早く調べて教えろボケ
0746デフォルトの名無しさん
2009/07/16(木) 17:24:560747デフォルトの名無しさん
2009/07/16(木) 17:55:55長すぎて読む気がしないからまとめろ無能
0748デフォルトの名無しさん
2009/07/16(木) 18:24:52いつまで待たせる気だ
無能め
0749デフォルトの名無しさん
2009/07/16(木) 18:31:53ttp://oshiete1.goo.ne.jp/qa3499000.html?ans_count_asc=20
0750デフォルトの名無しさん
2009/07/18(土) 09:04:36********* unit1.h のTFormのpublicに追加
public: // ユーザー宣言
UINT_PTR myEvent;
static int CALLBACK MyTimerProc(HWND hWnd, UINT uMsg, UINT_PTR nIDEvent, DWORD dwTime);
********* unit1.cpp
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
myEvent = NULL;
SetTimer(this->Handle, myEvent, 1000, (TIMERPROC)MyTimerProc);
}
//---------------------------------------------------------------------------
int CALLBACK TForm1::MyTimerProc(HWND hWnd, UINT uMsg, UINT_PTR nIDEvent, DWORD dwTime)
{
Form1->Caption = AnsiString(rand() % 100); //適当にキャプション変えてみる
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
KillTimer(this->Handle, myEvent);
}
//---------------------------------------------------------------------------
0751デフォルトの名無しさん
2009/07/18(土) 09:08:32SetPropとか使ってthisを渡すとかすんのかな・・・めんどくさ
0752デフォルトの名無しさん
2009/07/28(火) 16:39:00それをそのまま>PixelFormat = pf8bitにして
Image->Canvas->Pixelsで1ピクセルずつ読んで白黒変換して
ScanLineにぶち込んだら表示がカラーのままで変になるのですが
読み込んだビットマップを0〜255階調の白黒にする方法を教えてください
0753デフォルトの名無しさん
2009/07/28(火) 18:20:37パレットを自分でつくって割り当てろ
0754デフォルトの名無しさん
2009/07/28(火) 18:38:52他にやりかたあんだろ?
0755デフォルトの名無しさん
2009/07/28(火) 18:41:590756デフォルトの名無しさん
2009/07/28(火) 18:44:440757デフォルトの名無しさん
2009/07/28(火) 18:44:55void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bmp = new Graphics::TBitmap(); //同じサイズの8bitTBitmapを作成
bmp->PixelFormat= pf8bit;
bmp->Width = Image1->Picture->Bitmap->Width;
bmp->Height = Image1->Picture->Bitmap->Height;
//グレイスケールパレット作成
struct {
WORD palVersion;
WORD palNumEntries;
PALETTEENTRY palent[256];
} LOGPAL;
LOGPAL.palVersion = 0x300;
LOGPAL.palNumEntries = 256;
for (int i=0; i<256; i++) {
LOGPAL.palent[i].peRed = (BYTE)i;
LOGPAL.palent[i].peGreen = (BYTE)i;
LOGPAL.palent[i].peBlue = (BYTE)i;
LOGPAL.palent[i].peFlags = 0;
}
bmp->Palette = CreatePalette((LOGPALETTE*)&LOGPAL); //グレイスケールのパレットにする
// 元の画像から1ピクセルずつ読んで近似パレットで1ピクセルずつ描画
for(int y=0;y<Image1->Picture->Bitmap->Height;y++) for(int x=0;x<Image1->Picture->Bitmap->Width;x++){
((BYTE*)bmp->ScanLine[y])[x] = GetNearestPaletteIndex(bmp->Palette, (COLORREF)Image1->Canvas->Pixels[x][y]);
}
Image2->Picture->Assign(bmp);
delete bmp;
}
0758デフォルトの名無しさん
2009/07/29(水) 10:24:5524ビットカラーを白黒化する計算は知っているのでパレットを使わずにやりたかったんだが
普通にPixelsから読んだ色をそのまま白黒化してまたPixelsに入れればできました。
ソースありがとう
0759デフォルトの名無しさん
2009/07/29(水) 16:22:24気になるけどたぶん、単純にR、G、Bを足して3で割って平均値をTColor(RGB(R,B,G))とかしていれてるんでしょ?
0760デフォルトの名無しさん
2009/07/29(水) 16:27:07めんどくせー奴だなしかし
白黒化計算でぐぐれ馬鹿
二度とくだらねーレスすんじゃねーぞゴミが
0761デフォルトの名無しさん
2009/07/31(金) 10:30:470762デフォルトの名無しさん
2009/07/31(金) 11:03:54WM_MDIACTIVATE
0763デフォルトの名無しさん
2009/07/31(金) 11:38:30フォームのメソッドとかはないですか?
0764デフォルトの名無しさん
2009/07/31(金) 21:27:21ビープ音が鳴るが、これを止める方法は無いのかな?
エクセルでセル内で改行を入れるとき、
Alt+Enterで行うが、これに似た処理を作成したいので。
0765デフォルトの名無しさん
2009/07/31(金) 23:57:06単にその子フォーム.Show;じゃだめ?
0766デフォルトの名無しさん
2009/08/01(土) 01:53:57> Previous メソッドは,フォームシーケンス内の前の MDI の子フォームをアクティブフォームにします。
> void __fastcall Previous(void);
0767デフォルトの名無しさん
2009/08/01(土) 07:41:190768デフォルトの名無しさん
2009/08/01(土) 10:15:300769デフォルトの名無しさん
2009/08/01(土) 10:45:58ShellExecuteEx
0770デフォルトの名無しさん
2009/08/01(土) 12:40:360771デフォルトの名無しさん
2009/08/01(土) 14:00:53MS?
俺Ex
0772デフォルトの名無しさん
2009/08/01(土) 14:02:20linuxのようにソースを公開してないOSなのにこんな製品を作れるとは。
■ このスレッドは過去ログ倉庫に格納されています