くだすれC++Builder( ..
[2ch|▼Menu]
666:664
08/08/27 20:39:55
>>665
ありがとうございます

667:デフォルトの名無しさん
08/08/28 03:05:24
8点ほど計測して、下の脳波測定のように境目をボカしたいのですが、何か良い方法はありますでしょうか?
URLリンク(www.speedreading.co.jp)

8つの円を描き、全体をぼかすように前後左右の平均を取るように処理してみたところ、何度もやるとものすごく時間がかかるので・・・。
ぼかし処理は下のものを使用しました。
URLリンク(gimite.net)


668:デフォルトの名無しさん
08/08/29 22:15:29
全然ダウンロードできないのですが、今日だけの現象ですか?
URLリンク(update.codegear.com)
ここに何度登録したことか。。。。

669:デフォルトの名無しさん
08/08/29 22:34:00
URLリンク(now.eloqua.com)
サーバーが見つかりません

670:デフォルトの名無しさん
08/08/31 00:08:20
そうだね

671:デフォルトの名無しさん
08/09/06 08:25:00
TurboC++ Professionalは、もうどこにも売ってないのですか?


672:デフォルトの名無しさん
08/09/06 10:46:04
初心者質問すいません
英単語の文字数を数えるにはどうすればいいですか?

673:デフォルトの名無しさん
08/09/06 10:52:49
AnsiString::Length()

674:デフォルトの名無しさん
08/09/06 10:57:35
C++とC#は別物ですか?

675:デフォルトの名無しさん
08/09/06 11:04:33
別物

676:デフォルトの名無しさん
08/09/06 11:15:14
>>675
ありがとうございました。ここではC++という文字をよくみるのに本屋ではC#をよくみたので一緒かなと思いました
ありがとうございました

677:デフォルトの名無しさん
08/09/06 17:27:47
実は # は

++
++

だったんだよ!


678:デフォルトの名無しさん
08/09/07 01:24:48
>>677
C++が一つ増えるなら、
C#は半分だけ増えるっていうイメージなんだけど。
それだと、2つも増えてるな。

679:デフォルトの名無しさん
08/09/07 02:35:29
>>677
その発想は無かったわ

680:デフォルトの名無しさん
08/09/07 17:30:34
エクスプローラの「表示」→「縮小版」みたいに、複数の画像を
サムネイル表示したいと思っています。
URLリンク(www2.ttcn.ne.jp)
を参考にDrawGridを使って実現しようかと思っていたのですが、
DrawGridコンポーネント1個に対して, 1つの画像しか表示できないんでしょうか?


681:デフォルトの名無しさん
08/09/07 23:31:12
サムネイルはListView使っとけ

682:デフォルトの名無しさん
08/09/08 21:57:33
Buliderっていう名前が明らかにマッチョ男性専用ソフトですっていってるようで怖い。
アメリカ人は本当にマッチョが好きだよな。サンフランシスコ。

683:デフォルトの名無しさん
08/09/09 04:41:14
>>681
そうします。ありがとうございます

684:680
08/09/09 07:34:14
追加の質問ですみません。
ListViewでサムネイル表示を試してみようと、
下の(1)〜(6)の手順でやってみたのですが、ビルド中に固まります。
アイコン画像サイズ256×256を越えているせいみたいなのですが,
表示されるサムネイルの画像サイズを320×240で表示するには、どうしたらいいんでしょうか?
アドバイスよろしくお願いします。
-----
(1)Form1にImageList1を貼り付ける
(2)オブジェクトインスペクタからImageList1のプロパティをWidth=320;Heiht=240;に変更
(3)ImageList1ダブルクリックして, 「追加」押して320×240の画像1枚を選択して「OK」押す
(4)Form1にListView1を貼り付ける
(5)オブジェクトインスペクタからListView1のLargeImagesプロパティでImageList1を指定
(6)オブジェクトインスペクタからListView1のItemsプロパティで「新規作成」押して「キャプション」にテストと入力して「OK」押す


685:デフォルトの名無しさん
08/09/22 10:04:17
メニュー項目を設定する
TMenuItemのCaptionにて
開く(&O)...
と設定されますけど、
このピリオド3個の意味を教えてください。


686:デフォルトの名無しさん
08/09/22 12:43:51
押すと他のウィンドウが開くって意味がほとんどじゃ?

687:デフォルトの名無しさん
08/09/22 20:03:06
>>685
ピリオドがないのは、処理がすぐ終わるけど
ピリオドがあるのは、ダイアログが出るでしょ。
それだよ。

688:デフォルトの名無しさん
08/09/22 23:25:23
>>686 >>687
れすありがとうございます。
確かに...なのは、ダイアログが開く系ですね。
(& みたいな特別な機能がある訳ではなく
WindowsのUIの作法みたいなものなのですね。
とても参考になりすた。


689:デフォルトの名無しさん
08/09/28 23:08:48
質問です。
TFontのStyleがSet という特別な型だったのですが
設定は、Font->Style << fsBold のようにすれば良いのはヘルプに記載があったのですが
FontにfsBoldが設定されているかを調べる方法がわかりません。
どうすればいいのでしょうか。


690:デフォルトの名無しさん
08/09/28 23:34:45
if ( Font->Style.Contains(fsBold) )

691:デフォルトの名無しさん
08/09/28 23:45:56
>>690
できましたーーー。超ありがとうございます。


692:デフォルトの名無しさん
08/09/29 23:49:18
いろんなほかのプログラムのボタンを押すプログラムを作るにはどうすればいいのでしょう?
具体的には mplayerの再生ボタンや巻き戻しボタンを押したり、mediaplayerの再生ボタンを押したり
その他新しいプログラムの再生ボタンを簡単に登録して押せるようなそんなプログラムを
くみたいのですが。



693:デフォルトの名無しさん
08/09/30 00:17:51
ウィンドウハンドル持ってるコントロールならBN_CLICKEDをPostすればいいじゃない。
メニューバーから操作できる機能なら、コマンドIDをメニューリソース見るか、SPY++やWinspectorでコマンドID調べてWM_COMMANDでPostすればいい。
どっちもだめならSendInputでがんばるしかない。

694:デフォルトの名無しさん
08/09/30 00:18:33
簡単に説明すると、ウインドウを列挙して、中の再生ボタンのハンドルを取る。
ハンドルが取れれば、APIでごにょごにょできるでしょ。

あとはがんばれ。

695:デフォルトの名無しさん
08/09/30 10:50:39
あぁ!そっか、難しく考えすぎてた。

ありがとうございます。

696:デフォルトの名無しさん
08/09/30 20:54:22
質問です。
リストボックスにD&Dでリストボックスにファイルパスを表示する
プログラムをどうすれば言いか教えていただけないでしょうか?

697:デフォルトの名無しさん
08/09/30 22:04:17
をぃ、日本語が不自由な奴よ。
マルチポストはルール違反だぜよ。


698:デフォルトの名無しさん
08/09/30 22:44:16
>696
"C++Builder" ファイル ドラッグアンドドロップ
でぐぐれ

699:デフォルトの名無しさん
08/10/02 00:15:22
test


700:デフォルトの名無しさん
08/10/02 00:19:19
ごめんなさい、プロバイダが規制くらってたのでtest書き込みしてしまいました。

質問なんですが、フォームを使ってアプリを作っており、
デバッグで配列の中身や変数を見たく、printfなんかでコンソールに表示させたいのですが
何か方法はありますか?

インスペクタ?みたいなのはどうも使いにくくて・・・
ちなみに、C++Builder6を使ってます

701:デフォルトの名無しさん
08/10/02 00:32:28
これでどうでしょ?
URLリンク(msdn.microsoft.com)
でもIDEのデバッガ機能をちゃんと勉強して使ったほうが楽だと思うけどね。

702:デフォルトの名無しさん
08/10/02 01:08:53
>>700
AllocConsole()でコンソールが開きます。コンソールのハンドルをGetStdHandle( STD_OUTPUT_HANDLE )で取得したら
SetConsoleTextAttribute()とWriteConsole()で好きな文章を色つきで出力できます。
printf() っぽく使うならこんな感じ

#include <stdio.h>
int __stdcall con_printf( const CHAR* Format, ... )
{
  const int nLengthMax = 1024;
  int nLength = 0;
  HANDLE hConsole = ::GetStdHandle( STD_OUTPUT_HANDLE );
  if( hConsole != INVALID_HANDLE_VALUE ){
    CHAR Message[ nLengthMax ];
    va_list List;
    va_start( List, Format );
    nLength = vsnprintf( Message, nLengthMax - 1, Format, List );
    va_end( List );
    DWORD dwLengthWritten;
    ::WriteConsole( hConsole, Message, (DWORD)nLength, &dwLengthWritten, NULL );
  }
  return( nLength );
}

IDEが入ってない環境とかで使えるよ。

703:デフォルトの名無しさん
08/10/02 02:04:16
_open_osfhandle()とかdup2()とかを組み合わせれば
普通にそのままのprintfが使えるようになるんじゃないかね。
知らないけど。

704:デフォルトの名無しさん
08/10/02 02:44:28
IDEでデバッグしてるならOutputDebugString使えばイベントウィンドウに出力されるぞ

705:デフォルトの名無しさん
08/10/02 10:34:03
複数のフォームを持ったアプリを作っています。
メインフォームの初期化ルーチン(FormCreateとか)から他のフォームの初期化ルーチンを呼び出したいが、
それがまだ生成されていないのでエラーになるというケースが多くて困っています。
全てのフォームが生成された後で一括して初期化を行いたいという時にはどうすればよいのでしょうか? 
どなたか教えて下さい。


706:デフォルトの名無しさん
08/10/02 12:02:22
メインフォームのコンストラクタで他のフォームnewすれば?

707:デフォルトの名無しさん
08/10/02 12:46:22
>>700
解決したかも知れないけど、
TMemo 貼って Add で俺はやってる。


708:デフォルトの名無しさん
08/10/02 17:46:19
コンパイルした時に作成される実行ファイルの名前を、プログラム側で変更することってできます?
#ifdefで二種類作るので、間違えないようにしたいのですが・・・

709:700
08/10/02 18:59:26
なるほど、色んなやり方があるんですね。

しかしこのスレ非常にやさしいw
ありがとうございました〜、色々とやってみて合うもの見つけてみます

710:デフォルトの名無しさん
08/10/02 19:43:14
>>708
#pragma optionでできないものリストに「-efilename」が書かれてるから無理
objファイルならできるけど。

711:デフォルトの名無しさん
08/10/02 19:56:58
>>710
無理なんですか、了解です。
ありがとうございました。

712:デフォルトの名無しさん
08/10/02 20:00:24
>>711
makefileで分けるといい

713:705
08/10/03 17:03:11
>>706 どうもありがとうございます。やってみます。

714:デフォルトの名無しさん
08/10/17 00:02:21
TwebBrowserで表示したページのセレクトボックスを変更したりボタンを押したりしたいのですが、参考になるページが見つからず途方に暮れています(他の言語は多少あるのですが・・・)
他の言語のを真似して
WebBrowser1->Document->All->GetElementsByName("hoge")[0]->selectedindex = 0;
※hogeは表示するページのソースをみて名前を調べました
などとしたのですが、「AllはIdispatchのメンバーではない」とエラーが出ます・・・
どんな書き方をすればよいのでしょうか

715:デフォルトの名無しさん
08/10/17 04:28:58
たぶん中身をIHTMDocument2とかにして触るんじゃないかな。
昔触ったのを見たら
IHTMLDocument2Ptr doc;
doc = browser->Document;
IHTMLElementPtr body = doc->body;
とかやってた。
IHTMLDocument2Ptrとして使うには、MSHTMLかなんかをimportだかする必要があったと思うけど。

716:デフォルトの名無しさん
08/10/19 04:31:46
Imageに貼り付けた四角の画像を台形とかに変形させることはできますか?

717:デフォルトの名無しさん
08/10/20 04:18:55
できる

718:デフォルトの名無しさん
08/10/20 16:48:53
できるよ

719:デフォルトの名無しさん
08/10/23 15:03:10
AnsiStringsの中に何も入っていない場合、c_str()で比較してチェックすることはできますか?
if(c_str()=="")やif(c_str()==NULL)と書いても素通りしますよね。
Lengthが0かどうかでチェックをしているので問題は無いのですが、気になったのでよろしくお願いします。

720:デフォルトの名無しさん
08/10/23 16:20:53
IsEmpty()


721:デフォルトの名無しさん
08/10/23 17:14:13
素通りっつーのはよく分からんが、そもそも「if(c_str()=="")やif(c_str()==NULL)」って書き方おかしくね?
c_str使うんならstrcmpとか使おうぜ。
AnsiStringとchar型文字列の比較なら普通に==で良いとも思うけどな。

722:デフォルトの名無しさん
08/10/23 17:56:44
>>720
専用の関数があったんですね、ありがとうございます。

>>721
素通りというのは""やNULLで比較しても、何か文字が入っているような動きをしていたものですから。
まだAnsiStringを理解してないかもです。
strcmpも使ってみたのですが、動きは同じだったので・・・。


ところで、フォルダ名をチェックするのに最後に\がついているかを見て、無かったら\を付けたいのですが、
これってどうやればいいんでしょう?
AnsiLastCharで拾おうとしてのですが、うまくいかないので、よろしくお願いします。

723:デフォルトの名無しさん
08/10/23 18:11:14
IncludeTrailingBackslash()

724:デフォルトの名無しさん
08/10/23 19:05:07
>>723
処理してくれる関数があったんですね。
ありがとうございます。

725:デフォルトの名無しさん
08/10/23 20:18:52
IncludeTrailingPathDelimiterがあればそちらを使うのが望ましい。

726:デフォルトの名無しさん
08/10/25 15:47:30
Imageを2枚重ねて、下に写真、上に色を塗るようにしています。
上のImageに半透明や透明色を塗ることってできるのでしょうか?

半透明で調べてもフォームやボタンはあるのですが・・・。
すいませんが、どなたか方法を教えて頂けないでしょうか。

727:デフォルトの名無しさん
08/10/25 16:24:39
実際には透明色や半透明色ってのはないからなぁ。アルファブレンド?

728:デフォルトの名無しさん
08/10/25 19:16:29
計算した数字をEdit1,Edit2,Edit3に出したのですが、
それをMemo1にすべて書き出しExcelで読み込んだときにA欄B欄C欄と分けて出したいのですが
いったいどのようにすればいいんでしょうか?
Edit1->Text=a;
Edit2->Text=b;
Edit3->Text=c;

Memo1->Lines->Strings[0]=a;
Memo1->Lines->Strings[1]=b;
Memo1->Lines->Strings[2]=c;

今こんな感じで書いてるのですが全然わかりません・・
どなたかよろしければアドバイスお願いします。



729:デフォルトの名無しさん
08/10/26 13:10:23
コンマ区切りにすればいいってことじゃなくて?

730:デフォルトの名無しさん
08/10/26 13:45:41
>>729
あ、コンマ区切りで数列を出せばExcelでは枠別に表示されるんですね
ありがとうございます!
よろしければどなたかコンマ区切りでEdit1から3までの数字を一つのMemo1に出す
方法を教えていただけないでしょうか

731:デフォルトの名無しさん
08/10/26 14:20:40
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(AnsiString().sprintf("%s,%s,%s", Edit1->Text, Edit2->Text, Edit3->Text));
}

732:デフォルトの名無しさん
08/10/26 15:03:38
BCBで使えるRS-232Cコンポーネントで安定しているのってありますでしょうか?
現在はHmCommを使用しているのですが、USB-232C変換器が物によって正常に通信できたりタイミングがずれたりするので、
別の物を試してみたいのですが・・・良い物がありましたら紹介してください。
よろしくお願いします。

733:デフォルトの名無しさん
08/10/26 18:23:25
TMemoryStream* ms=new TMemoryStream();
char *mTop=(char*)(ms->Memory);
char *mEnd=pTop+(ms->Size);
と記述すると
W8072 問題のあるポインタ演算
という警告が出ます。
警告の出ない正しい記述方法を教えてください。


734:デフォルトの名無しさん
08/10/26 22:51:08
ms->Sizeの型が__int64だからintにキャストすれば出ないよ

735:デフォルトの名無しさん
08/10/26 23:19:32
>>732

URLリンク(www.geocities.jp)
これ使ってごらん。
コンポーネントじゃないけど、ヘッダファイルだけで動作する。

初期化に2行、出し入れに数行、後始末に1行ぐらい書けばいいので
PICとやり取りするのに簡単だから使ってる。

でも、USBのシリアル変換機はもともと不安定だからなぁ・・・。

736:デフォルトの名無しさん
08/10/27 00:15:44
>>734
解決しました。ありがとうございます。


737:732
08/10/27 00:45:44
>>735
ありがとうございます。
シンプルで良さそうですね。
ちょっと使ってみます。

ノートPCが前提なので、USBのシリアル変換機を使用して安定してないといけないんです・・・。

738:デフォルトの名無しさん
08/10/27 15:18:20
A, B, C, D, E, 00:00, f, g, h, i, j, k, l,
A1, B1,C1,D1,E1, 00:00, f1, g1, h1, i1, j1, k1, l1,
A2, B2,C2,D2,E2, 00:00, f2, g2, h2, i2, j2, k2, l2,

というコンマ区切りの何百行のデータがあり、j(1.2.3・・・)の部分だけ読み込みたいのですが
どういう風にやればいいですか。よろしくお願いします。
 


739:デフォルトの名無しさん
08/10/27 15:37:37
>>726
写真ともう一枚の32bppなTBitmap用意、アルファブレンドしてTImageに転送するしかないと思う。
アルファチャンネル扱えるTBitmap継承クラスも何種類か公開されてるから難しい物じゃない。

写真じゃないほうにペイントするとかだったら、TImageのイベントで取ったストロークの情報でペイント描画用のTBitmapに描けばいいだけだし。

>>738
ただのCSVファイルじゃん(・ε・)

740:738
08/10/27 15:48:54
少し説明不足でしたが、テキストで読み込んでMemoに表示させたいのです。

741:デフォルトの名無しさん
08/10/27 16:06:44
>>738
要するに 00:00 を取り除くって事?

742:738
08/10/27 16:10:52
>>741

j(1.2.3・・・)の部分だけをmemoに表示させたいのです。

743:デフォルトの名無しさん
08/10/27 16:13:33
>>j(1.2.3・・・) の意味がわからん

744:デフォルトの名無しさん
08/10/27 16:14:48
Memoに j1, j2, j3 とかって表示させたいの?

745:デフォルトの名無しさん
08/10/27 16:19:37
だからcsvファイル扱うクラス書いて、各行から11列目の値をTMemoに突っ込めばいいだけじゃ‥‥

746:デフォルトの名無しさん
08/10/27 16:24:14
こういうの見るとBCB2009でregex使いたくなるな

747:738
08/10/27 16:33:42
はい。

Memo1
j 
j1
j2
j3



な感じで。


748:デフォルトの名無しさん
08/10/27 16:40:05
>>738
そんなん単に先頭からカンマを10こ読み飛ばせばいいだけじゃん。
strXXX系の関数使うまでもなく。

とみんな思うんだろうけど、暇だったのでVCLのヘルプみてみた。
TStrings::DelimiterとTStrings::DelimitedTextなんてものがあるのな。

TStringList* Data = new TStringList;
Data->Delimiter = ',';
Data->DelimitedText = "aa,bb,cc,dd,ee";
Caption = Data->Strings[3]; // ddが表示される

ただしBCB5以前は無理かもしれない。あしからず。

749:デフォルトの名無しさん
08/10/27 16:49:38
こんなんとか。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::ifstream ifs("File1.txt");
std::string str, s2;

if (!ifs) {
Memo1->Lines->Add("File1 not found.");
}

while (std::getline(ifs, str)) {
std::string::size_type pos = str.find('j'), pos2;
if (pos != std::string::npos) {
s2 = "j";
if (pos < str.size() && (pos2 = str.find(',', pos)) != std::string::npos) {
s2 += str.substr(pos + 1, pos2 - pos - 1);
}
Memo1->Lines->Add(AnsiString(s2.c_str()));
}
}
}

750:デフォルトの名無しさん
08/10/27 16:58:54
くだスレが役に立ってry

751:デフォルトの名無しさん
08/10/27 17:36:22
ないってことか

752:デフォルトの名無しさん
08/10/28 14:44:59
すいません、プログラム上でスクロールバーが動いたことにするには、どのようにすればよいのでしょうか?
Positionの値を変えるのでは無く、マウスで操作した時の動きをさせたいのですが・・・。

753:デフォルトの名無しさん
08/10/28 15:28:27
イベント呼べばいいんでないの?

754:デフォルトの名無しさん
08/10/28 15:58:04
イベントは、呼ばれるものじゃねえのか。
イベントはさすがに呼べねえだろ。


755:デフォルトの名無しさん
08/10/28 16:56:44
自分でOnChange呼べつったんだ馬鹿かお前

756:デフォルトの名無しさん
08/10/28 17:21:13
>>755
Are you a big baka ?
スクロールした結果、OnChange()が発生するのであって
OnChange()を自前で呼んでも無意味じゃん。


757:デフォルトの名無しさん
08/10/28 17:25:37
もも・・・
しかして>>755
OnChange()を呼べばスクロールが発生するとでも思っているのかぁ
プププ


758:755
08/10/28 19:00:09
私のために争うのはもうやめてっ

プログラム上からイベントを発生させる方法ってあります?

759:デフォルトの名無しさん
08/10/28 19:06:50
自分宛にメッセージ投げればいいと思うよ

760:デフォルトの名無しさん
08/10/28 23:13:14
>>755
嘘はいかんな

761:752
08/10/29 02:51:14
名前間違えた、こっちだ
どうやってやればいいんでしょう・・・?

762:デフォルトの名無しさん
08/11/01 01:22:01
標準のボタンの背景や形を変えることってできますか?
BitBtnは画像を配置すると文字が消えてしまうので、他に何か方法は無いでしょうか?
よろしくお願いします。

763:デフォルトの名無しさん
08/11/01 15:51:47
>>762
起動時bitbtnにするDIBにフォントを使って字を書いてしまえばいいじゃないかw
元の画像は普通のボタンから抜くなりなんなりすればいいジャマイカ

そしてそれをフリーで後悔すれば….
と思う前に誰かすでに作ってないかとかおもってググ…

764:デフォルトの名無しさん
08/11/01 15:52:23
同じフォルダにあるテキストデータA001〜A020を同時に読み込んで
その中の計算を行いそれを50個またテキストデータとして保存したいのですが
テキストデータを同時に読む込むプログラムとそしてそれを同時に書き出す方法が
どうしてもわかりません。よければアドバイスお願いします。

765:デフォルトの名無しさん
08/11/01 17:32:46
いちどきに読み込むことや書き出すことはできてもどうじに読んだり書き出したりするのは非常に困難です

766:デフォルトの名無しさん
08/11/01 18:48:32
>>765
すみません、説明不足だったようです。
同時にではなくたとえばA001〜020で読み込む場合にfor文などで回して
自動ですべてを順に読み込み書き出すようにしたいのです


767:デフォルトの名無しさん
08/11/01 20:10:09
>>766
for文で回して順に読み込み書き出しすればいいと思うよ

と思ったが「同じフォルダにあるテキストデータ」ってファイルのこと?
ならファイルを順繰りに読んで希望のファイルだけ読み込み書き出しすれば良いんじゃないかね

768:デフォルトの名無しさん
08/11/01 20:51:35
TStringList使っとけ

769:デフォルトの名無しさん
08/11/01 23:37:20
具体的に何をする方法がわからんのか
そのへんが全然わからんから
エスパーじゃないから
答えようがねえなぁ
文章から類推すると、何もかもまったくわからんようにしか見えんが。


770:デフォルトの名無しさん
08/11/02 13:55:50
教えてください。


private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
 progressBar1->Maximum = shikou_kaisu; /* 最大値 */
 progressBar1->Visible = true;
 label8->Text = "処理中";
 label8->ForeColor = System::Drawing::Color::Red;

 for(i=0; i<shikou_kaisu; i++){
  rnd(kibou_kosu);  //自作関数呼び出し
  Sleep(1);
 }

};
このようにshikou_kaisuには10000を入れていまして、1万回のループに入る前に
プログレスバーを出し、label8の文字色を赤にし、処理中と書き換えているのですが
どちらとも(プログレスバーもlabel書き換えも)for文が終了したあとに処理されてしまいます。
なぜでしょうか?

771:デフォルトの名無しさん
08/11/02 14:03:05
連投すみません。

あともう一つ教えてください。

出力ウィンドウに、テスト的に変数の値などを表示させたいのですが、

Console::WriteLine("aaa");
などとしてもまったく表示されません。何か方法はありますでしょうか?
よろしくお願いします。

772:デフォルトの名無しさん
08/11/02 14:27:08
>>770 誤爆?
ここは、
くだすれC++Builder(超初心者用)その3



773:デフォルトの名無しさん
08/11/02 14:57:22
>>772
すみません。間違えました><

774:デフォルトの名無しさん
08/11/03 18:05:44
読み込みと保存について質問なんですが
バイナリ形式のファイル読み込んで、その内容を同じファイル名でテキスト形式に置き換えて保存したいのですが
それを手動保存するのではなく自動で同じファイルネームでそのフォルダ内に生成されるプログラムを作りたいのですがどのようにすればよいのでしょうか


775:デフォルトの名無しさん
08/11/03 18:49:03
>>774
スレ違い
C/C++の宿題を片付けます 117代目
スレリンク(tech板)
こっちだな


776:デフォルトの名無しさん
08/11/03 18:55:33
>>775
すいません、これをSaveDialogやOpenDialogなどを用いてc++builderで
実行しなくてはいけないのですが読み込んだファイルを同じ名前のテキスト形式で自動生成する保存の方法を教えていただけないでしょうか

777:デフォルトの名無しさん
08/11/03 19:46:17
>>776
君の質問に回答できる奴はエスパー


778:デフォルトの名無しさん
08/11/03 20:06:21
そんな事できません
バイナリの中身が構造体だったり、浮動小数点と整数が
交互に書かれていたりする時どうやって判別するのですか?

コンピュータから見るとどちらもただの0と1の羅列ですよ?

779:デフォルトの名無しさん
08/11/04 04:10:55
00010111000 とかをテキストで保存するんだろ。

780:デフォルトの名無しさん
08/11/04 12:41:53
それはファイルダンプじゃん。


781:デフォルトの名無しさん
08/11/04 13:44:41
失礼します。
OpenDialogを使用して、指定したフォルダからファイルを読み込みたいのですが、
最初の動作ではInitialDirに指定フォルダ名が入っているのにも関わらず、デフォルトのフォルダが表示されてしまいます。
再起動しても変わりません。
でも、他の動作で指定フォルダを開くと、最初のOpenDialogも指定フォルダを開けるようになります。
フォルダ名を指定した後、確定させる方法があるのでしょうか?
よろしくお願いします。


if(FolderTXT.IsEmpty()){ // フォルダ指定無し
OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName)+"DATA";
}else{
OpenDialog1->InitialDir = FolderTXT+"DATA";
}

// フォルダオープン
if(OpenDialog1->Execute()){
if(FileExists(OpenDialog1->FileName)){
fn=OpenDialog1->FileName;
}
}

※FolderTXTにフォルダ名が入っています。

782:デフォルトの名無しさん
08/11/04 14:14:42
Execute()する前に
DirectoryExists(OpenDialog1->InitialDir)
してみい
falseが返ってくるからさ




783:デフォルトの名無しさん
08/11/04 14:41:37
そうじゃなくて

FileNameにフルパスでいれときゃいい

784:デフォルトの名無しさん
08/11/04 15:16:55
>>782
はい、falseでした。
一度動くようになると、PCを再起動してもtrueですね・・・。
なぜでしょう?

>>783
汚い書き方ですが、
OpenDialog1->FileName = OpenDialog1->InitialDir;
をExecute()の前に置いたら動作しました。
Execute()で最初に開くフォルダはFileNameのフォルダで、InitialDirでは無いってことでよろしいでしょうか?

785:デフォルトの名無しさん
08/11/04 17:13:51
さっさと教えてくださいよ。グズは嫌いですよ。
こっちも忙しいんだから早くして下さいね。

786:デフォルトの名無しさん
08/11/04 23:57:41
>>784
>一度動くようになると
パスが通ってるから。
想定される状況で通るように場合分けしたら?
フォルダを開くという概念がどうもね。

787:デフォルトの名無しさん
08/11/07 17:01:27
ShowMessage()で表示したメッセージを
指定時間後に自動的に閉じることって可能でしょうか?
可能であればどうすればいいのでしょうか?

788:デフォルトの名無しさん
08/11/07 17:24:43
根性

789:デフォルトの名無しさん
08/11/07 17:47:09
>>787
TSplashForm

790:デフォルトの名無しさん
08/11/07 23:35:09
タイマーで閉じればいいじゃん。


791:デフォルトの名無しさん
08/11/08 00:16:07
タイマーイベントを設定して

Close();
Release();

で閉じれるね

792:デフォルトの名無しさん
08/11/08 02:51:27
Delphi/C++Builderにはスプラッシュウィンドウが用意されてなかったっけ?

793:デフォルトの名無しさん
08/11/08 04:17:33
VC++には昔っからあるのにね。
ってか、大麻付きダイアログを作ればいいだけだけど。


794:デフォルトの名無しさん
08/11/08 04:38:46
面倒くさい。とか言ってる奴がBCB使うわけで。

795:デフォルトの名無しさん
08/11/10 09:41:38
あるある

796:デフォルトの名無しさん
08/11/10 16:04:46
for (int I = 1; I <=9 ; I++){

  pass = ID +"0"+IntToStr(I);
  fp = fopen(pass.c_str(), "rb" );
  fread(data,2,10,fp);
   fclose(fp);
}

と途中まで作ったのですが、この9個の読み込んだ配列データ(data)を9個別々に
A1〜A9(AnsiString)で格納したいのですがやりかたがわからないのでアドバイスください。

A1にはID01の読み込んだ配列データ・・・A9にはID09の配列データです。

797:デフォルトの名無しさん
08/11/10 16:16:55
AnsiStringの配列じゃダメなのか?

798:796
08/11/10 16:25:20
>>797
AnsiStringでいいです。別のところでそれぞれの配列を使って計算したいので。。
どういう風に書けば9個格納できるでしょうか。

799:デフォルトの名無しさん
08/11/10 16:36:03
AnsiStringの配列でいいじゃないかw

800:デフォルトの名無しさん
08/11/10 16:46:49
普通に配列使おうぜ?

char wk[128];
AnsiString A[10];
for (int I = 1; I <=9 ; I++){

  pass = ID +"0"+IntToStr(I);
  fp = fopen(pass.c_str(), "rb" );
  fread(wk,2,10,fp);
   fclose(fp);
A[i] = wk;
}

801:796
08/11/10 17:26:07
>>800

うまくいきません。
Memo1->Lines->Add(A1)で確認してみたのですがうまく読み込めていませんでした。

読み込むファイルが数百行というのは関係あるのでしょうか。

A1 = 1回目に読み込んだ配列
A2 ・・・
という感じでやりたいのですが。。。

とりあえずがんばってやってみます。

802:デフォルトの名無しさん
08/11/10 17:35:33
>>801
んじゃさ、TStringList使えばいいんでないの?

TStringList *sl = TStringList();
sl->LoadFromFile("ファイル名"");
for( int i = 0; i < sl->Count; i ++ ){
  aa = sl->Strings[i];
}
こんな感じでどうよ?

803:デフォルトの名無しさん
08/11/10 17:59:23
Memoに表示された20行の数字をkekkaに入れたくて

AnsiString kekka;

for(int I=0;I<20; I++){

kekka = Memo1->Lines->Strings[I];
    }

という風に試したのですがMemo1に表示させてある内容と違う値が出てしまいました。
わからないのでアドバイスください。


804:デフォルトの名無しさん
08/11/11 00:44:15
>>803
kekkaは一つしか無いでしょ。
Memo1->Lines->Stringis[I]は20個あるでしょ。
20回ループまわしてもkekkaは一つしか無いでしょ。

805:デフォルトの名無しさん
08/11/11 10:28:51
>>803
っていうか俺のTStringListは無視か!!
それにkekkaを配列にすりゃいいって最初に言っただろう!

806:デフォルトの名無しさん
08/11/11 14:56:40
頭の中だけでなんとなく考えてるんだろうなぁ・・・
それで出来るようになるのってちゃんとしたプログラムがいくつも書けるようになってからだろうに。
クラス図とかメモリマップとか妄想絵図とか、何でもいいからソースコード以外の何かで書いてみたら
自分がどこに引っかかってるのか分かるような気がする。

807:デフォルトの名無しさん
08/11/11 19:02:06
プログラミングに限らず、段取りをすっ飛ばした想像しか出来ない奴っているからな。

808:デフォルトの名無しさん
08/11/11 21:27:18
んだんだ。
妄想を紙に書いてみると
自分のアホさが
よくわかる。


809:デフォルトの名無しさん
08/11/13 10:39:08
非常に今更な感があるけど出来たら教えて欲しいことが・・・

・BCB5
・複数のカラム追加したListViewを設置
・上記カラムの1つはAutoSize

このListViewにデータを流し込んだ時に後から発生した
縦スクロールバー分の幅が自動調整されないんだけど
これを自動調整するには何がベストなんでしょうか?

今は仕方なくデータを流し込んだ後にListViewの幅を
-1 >> +1として調整してます

810:デフォルトの名無しさん
08/11/13 10:58:48
何で調整したいんだ?
ListViewの幅か?カラムか?

811:デフォルトの名無しさん
08/11/13 11:53:38
カラムの方
右端が発生したスクロールバーで隠れるのよ・・・

812:デフォルトの名無しさん
08/11/14 10:51:35
TListView::OnInsertでTListView::ClientWidth読んで調整すればいいんじゃない?

813:デフォルトの名無しさん
08/11/17 12:48:11
C++B 6をつかっています。

・やりたいこと
クライアントアプリ(C++B)からPostgreSQLへ接続したい。
・やったこと
1.Windows版 Postgres8.2.6(日本語版)をインストール
(インストールのさいC開発モジュールも一緒にインストールしました)
2.インストールされたlibpq.dllを使って、impdll libpq-bc.lib libpq.dll
3.できたlibpq-bc.libをアプリフォルダへコピー
4.Postgresのincludeフォルダにある、libpq-fe.hをアプリフォルダへコピー
5.プロジェクトの追加から、libpq-bc.libを追加。

6.myapp.hに #include "libpq-fe.h"
7.myapp.cppで、とりあえず接続テスト PQconnectdbを実行

コンパイルすると
[リンカ エラー] 外部シンボル '_PQconnectdb' が未解決(略\APPLICATION\MYAPP.OBJ が参照)
と出て、うまくいきません。

足りない操作、間違った操作をやっていたら教えてください。
お願いします。

814:デフォルトの名無しさん
08/11/17 15:35:15
”バリアントの型変換が不正です”って出たのですがどういうときに出るんですか?

815:デフォルトの名無しさん
08/11/17 15:39:13
バリアントの型変換が不正な時に出るんだろうよ

816:デフォルトの名無しさん
08/11/17 15:56:25
バリアントの型変換が不正な時に出るんだよ

817:デフォルトの名無しさん
08/11/17 15:59:29
バリアントの型変換が不正な時に出るんよ

818:デフォルトの名無しさん
08/11/17 16:00:01
バリアントの型変換が不正な時に出るよ

819:デフォルトの名無しさん
08/11/17 16:19:59
バリウム飲んだから白いうんこが出るんだよ

820:デフォルトの名無しさん
08/11/17 16:25:56
お前らあんまり荒らすな
プログラム板がID制になってもいいのか

821:デフォルトの名無しさん
08/11/17 16:28:33
>ID制
大賛成

822:デフォルトの名無しさん
08/11/17 16:29:03
ごみん

823:デフォルトの名無しさん
08/11/17 16:46:11
大貧民

824:814
08/11/17 19:14:13
ありがとうございます。解決しました

825:デフォルトの名無しさん
08/11/17 19:24:18
むしろID制にしてくれ

826:デフォルトの名無しさん
08/11/18 00:41:26
むしろBe強制に

827:デフォルトの名無しさん
08/11/18 10:17:08
むしろ実名が表示されちゃうでいいよもう

828:デフォルトの名無しさん
08/11/18 10:32:49
実名が表示されたら俺が超紳士なことがバレちゃうじゃないかやめろ

829:デフォルトの名無しさん
08/11/18 10:47:53
んじゃ(仮名)てつけば問題ないよな

830:811
08/11/18 16:14:59
>>812
変化するイベントで自分で再設定すれば出来るのは知っているんですが
コンポーネントのサイズ変更を行えば自動でやってくれる以上
なんとかそれを直接行えないかなと思ってるんですか・・・

831:デフォルトの名無しさん
08/11/21 18:14:21
memo1にcsv形式で書き出したのですがコンマ区切りで2列目の配列と4列目の配列だけをCommaTextなどを使って最後まで
読み込みA1とA2にTStringlistとして格納したいのですが格納したいのですがどのようなプログラムにすればよいのでしょうか。
 0001, -2.06167, -719.351, EEE
 0002, -2.05553, -710.148, RRR
 0003, -2.04654, -698.637, EEE
 0004, -2.04326, -689.907, RRR
         ・
         ・
         ・
 1499, -2.03713, -678.463, RRR
 1500, -2.03099, -667.071, RRR

このような感じの配列で1500行並んでいます。


832:デフォルトの名無しさん
08/11/21 18:24:18
どういう風に格納したいんだ

833:デフォルトの名無しさん
08/11/21 18:34:24
2番目の列だけの格納をx 4番目の列だけの格納をyとしたときに

Memo2にLoadFromfileなどでxを書き出すと
-2.06167
-2.05553
-2.04654
-2.04326

  ・

yを書き出すと
EEE
RRR
EEE
RRR
(空白の場合もあるのでそれも一行として数える)



などといった具合にxとyに格納したいのです。
TStringといいましたが格納の仕方がそれだけしかしらないので
AnsiStringなどでもできるのでしたらどちらかアドバイスお願いします。

834:デフォルトの名無しさん
08/11/22 19:34:06
memo1に自分で書き出しているのなら、あとふたつTStringListを用意しておいて、memo1に各行を出力する裏で同時に書き込めばいいんじゃないの?

for( int i = 0; i < 1500; i++ ){
  memo1->Lines->Add( 1行分のcsv文字列 );
  x->Add( 2列目の情報 );
  y->Add( 4列目の情報 );
}

どうしてもmemo1の内容を再利用するしかないなら項目分離用TStringListを用意して

TStringList* Values;
Values->Delimiter = ',';
for( int i = 0; i < 1500; i++ ){
  Values->DelimitedText = memo1->Lines->Strings[ i ];
  x->Add( Values->Strings[ 1 ] ); //2列目の情報
  y->Add( Values->Strings[ 3 ] ); //4列目の情報
}


835:デフォルトの名無しさん
08/11/23 17:20:19
>>834
遅くなってしまってすいません、そして説明不足でした・・・。
できればMemo1の内容を再利用したいのですが、c++builderのバージョンが5なので
Delimiterが使えないようなのです・・・

お手数ですがDelimitedText以外での表し方を教えていただけないでしょうか。


836:デフォルトの名無しさん
08/11/23 18:50:25
じゃあこんなかんじで
TStringList* Values;
for( int i = 0; i < 1500; i++ ){
  Values->CommaText = memo1->Lines->Strings[ i ];
  x->Add( Values->Strings[ 1 ].Trim() ); //2列目の情報
  y->Add( Values->Strings[ 3 ].Trim() ); //4列目の情報
}

837:デフォルトの名無しさん
08/11/23 19:30:27
>>836

返信ありがとうございます.
おっしゃられたようにButton1にこのように付け加えてMemo2とMemo3に書き出すようにしたいのですが
Memo1に排出されたあとボタンを押すと読み込み違反が起こってしまいます。
これは何が原因となってるんでしょうか Memo2と3に書き出すプログラムは後から付け加えたものなので
それ以前のところでエラーが起こっているようです。

TStringList* Values;
TStringList* x;
TStringList* y;


for( int i = 0; i<Memo1->Lines->Count; i++ ){  //1500行のみとは限らない場合があるため
Values->CommaText = Memo1->Lines->Strings[ i ];
x->Add( Values->Strings[ 1 ].Trim() );
y->Add( Values->Strings[ 3 ].Trim() );

Memo2->Lines->AddStrings(x);
Memo3->Lines->AddStrings(y);
}

838:デフォルトの名無しさん
08/11/23 20:05:59
ちゃんと Values、x、y は new して使ってる?
TStringList* Values = new TStringList;
使用後
delete Values;

839:デフォルトの名無しさん
08/11/24 19:39:22
new TStringListは入れてませんでした。ありがとうございます。

{
TStringList* Values = new TStringList;
TStringList* x = new TStringList;
TStringList* y = new TStringList;


for( int i = 0; i<Memo1->Lines->Count; i++ ){
Values->CommaText = Memo1->Lines->Strings[ i ];
x->Add( Values->Strings[ 1 ].Trim() );
y->Add( Values->Strings[ 3 ].Trim() );

Memo2->Lines->AddStrings(x);
Memo3->Lines->AddStrings(y);

delete Values;
delete x;
delete y;
}
}

このような形でやってみて読み込み違反は回避できたのですが、次はリストの
インデックスは範囲を超えていますといわれてしまいます。
CSV形式なのですがコンマの後、数字の桁数を合わせようと半角スペースもついてしまっており
それまで読み込んでいるので、それが原因だとは思うのですが.Trim()がついているので
実際何が原因なのかわからない状況です;
またEEE,RRRのところは空行であるときもありその際にはスペースがつけられているのですが
そこをEEE,RRRだけでなく同じ行数文だけスペースも含め格納したいのですが、これは無理でしょうか?


840:デフォルトの名無しさん
08/11/24 19:53:32
 0001, -2.06167, -719.351, EEE
 0002, -2.05553, -710.148, RRR
 0003, -2.04654, -698.637, EEE
 0004, -2.04326, -689.907, RRR
 0005, -2.04440, -898.545,
 0006, -2,03434, -434.434, EEE
 0007, -2,67665, -775,443,
 0008, -2.34443, -566,886, RRR
         ・
         ・
         ・
実際このような感じのCSV形式の配列で格納したい配列は
  xに            yに
-2.06167          EEE
-2.05553          RRR
-2.04654          EEE
-2.04326          RRR
-2.04440         (空行)
-2,03434          EEE
-2,67665         (空行)
-2.34443          RRR
   ・            ・
   ・            ・
   ・            ・

このようにTStringで格納していきたいのです。
無理難題を言ってしまいすいません。

841:デフォルトの名無しさん
08/11/24 19:55:12
delete の位置は何度も変えてみましたが結果は同じでした。
もしよろしければアドバイスお願いします。

842:デフォルトの名無しさん
08/11/25 00:27:26
>>839 試行錯誤中のコードだろうけど、どうみても一度しかnewしていない変数を
ループ中で何度もdeleteするのがおかしいことに気付かないとまずいよ。

Memo2にxをAddStringsするのもループを抜けてからじゃないと、
1,1,2,1,2,3,1,2,3,4,1,2,3,4,5,…みたいに行の登録が重複する。
Memo1が1500行だとMemo2、Memo3は(Σk=n(n+1)/2になるので)1125750行になってしまうよ。
それだけ大きいとTMemoコンポーネントのメモリ制限に引っかかってるんじゃないかな?
てかMemo2、Memo3が最初からあるのならx、yなんて不要。直接入れればいい。

4つめがEEEでもRRRでもなく空の時にスペース三つ出力したいなら

this->Memo2->Lines->Clear();
this->Memo3->Lines->Clear();
TStringList* Values = new TStringList;
AnsiString asSpacer = " "; //スペース三つ
for( int i = 0; i < Memo1->Lines->Count; i++ ){
  Values->CommaText = Memo1->Lines->Strings[ i ];
  this->Memo2->Lines->Add( Values->Strings[ 1 ].Trim() );
  AnsiString as4thValue = Values->Strings[ 3 ].Trim();
  this->Memo3->Lines->Add( as4thValue.IsEmpty() ? asSpacer : as4thValue );
}
delete Values;

あと >>840 で出ているデータが本物のデータからのコピーなら、ピリオドとカンマが
入力ミスで混ざってて、自動で正しく分離する事は無理。

843:デフォルトの名無しさん
08/11/28 02:16:31
32BitのBitmapへ色を塗る時、アルファチャンネルの指定はどのように行えばよろしいのでしょうか?
TColorは24bit専用なのでしょうか?完全な白の時は透過になるのですが、それ以外は全く透過しません。
色によって透過度を変えたいのですが、上手くいかないのが現状です。
PixelFormatで32bitの指定はしているのですが・・・。
すいませんがよろしくお願いします。

844:デフォルトの名無しさん
08/11/28 11:26:00
教えてください。
BDS2006を使っています。
ファイルの数が多くなってきたので
ヘッダファイルを、header1.hというファイルにまとめて
#include "Main.h"
#include "About.h"
・・・
という感じに記述して
.cppファイルの方には、
#include header1.h
と記述するようにしました。
このように変更してから、
再構築を行い、プログラムを実行し
バージョン情報を表示すると、EClassNotFound
TImageが見つかりませんというエラーがたまに出るようになりました。
About.cppをコンパイルし直すと正常に動作します。
他のクラスでも同じように、エラーが発生し再コンパイルすると正常になることがあります。
どうしてこのようなことが発生し、どうすれば回避できるのでしょうか。
ヘッダをまとめて1個のファイルにしてしまうのはダメなのでしょうか。


845:デフォルトの名無しさん
08/11/28 14:26:15
一度プリコンパイルヘッダ消せ

846:デフォルトの名無しさん
08/11/28 15:43:04
いいやお前が消えろ!

847:デフォルトの名無しさん
08/11/28 15:49:08
ヒント:あらしはスルーwww

848:デフォルトの名無しさん
08/11/29 01:55:44
すいません、どなたか>>843にも答えていただけないでしょうか。

849:デフォルトの名無しさん
08/11/29 09:34:25
ファイルのサイズを取得したくて
TSearchRecのSize変数から取ったのですが、
ファイルサイズが大きいと戻り値がマイナスになってしまいます。
大きいファイルサイズでも正確に取得するには
どうすればいいのでしょうか。

850:デフォルトの名無しさん
08/11/29 10:20:56
APIのFindFirstFile、GetFileSize、GetFileSizeEx

851:デフォルトの名無しさん
08/11/29 10:22:52
もしくはバージョンうp。今はTSearchRecのSizeは__int64になってるらしいので。

852:デフォルトの名無しさん
08/11/29 10:33:20
TSearchRec.FindData.nFileSizeHigh
TSearchRec.FindData.nFileSizeLow

853:デフォルトの名無しさん
08/11/29 10:34:58
あ、そうか。失礼。

854:デフォルトの名無しさん
08/11/29 17:44:27
>>848
これで行けるはずなんだが・・・うーんわからん
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap* bt = new Graphics::TBitmap;
BLENDFUNCTION blend = {AC_SRC_OVER, 0, 100, 0};
TCanvas* ti = Image1->Canvas;
RGBQUAD rgbq;

bt->Width = 256;
bt->Height = 256;
bt->PixelFormat = pf32bit;

for (int i = 0; i < 255; i++) {
int* sc = reinterpret_cast<int*>(bt->ScanLine[i]);
for (int j = 0; j < 255; j++) {
rgbq.rgbBlue = i;
rgbq.rgbGreen = j;
sc[j] = reinterpret_cast<int&>(rgbq);
}
}

BOOL RESULT =
::AlphaBlend(ti->Handle, 0, 0, Image1->Width, Image1->Height,
bt->Handle, 0, 0, bt->Width, bt->Height,
blend);
if (RESULT == FALSE) {
Application->MessageBox(L"失敗!", L"", MB_OK);
}
delete bt;
}

855:デフォルトの名無しさん
08/11/30 00:35:28
>>843
Win32スレで聞いているうちにバグの原因がわかったので、
AlphaBlend per Pixelのプログラムを貼っておきます。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap* bt = new Graphics::TBitmap;
BLENDFUNCTION blend = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA};
TImage* ti = Image1;
RGBQUAD rgbq;

bt->Width = 256;
bt->Height = 256;
bt->PixelFormat = pf32bit;

int k = 0;
for (int i = 0; i < 255; i++, k++) {
int* sc = reinterpret_cast<int*>(bt->ScanLine[i]);
for (int j = 0; j < 255; j++) {
rgbq.rgbBlue = i;
rgbq.rgbGreen = j;
rgbq.rgbRed = 0;
rgbq.rgbReserved = k;
sc[j] = reinterpret_cast<int&>(rgbq);
}
}
BOOL RESULT =
::AlphaBlend(ti->Canvas->Handle, 0, 0, ti->Width, ti->Height,
bt->Canvas->Handle, 0, 0, bt->Width, bt->Height,
blend);
int err = GetLastError();
const wchar_t* str = WideString().sprintf(L"失敗!%d", err).c_bstr();


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

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