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

【初心者歓迎】C/C++室 Ver.64【環境依存OK】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2009/02/10(火) 00:25:51
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.63【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1231499251/

【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

◆ソースのインデントについて
半角やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのが最も良いですが、
直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
0809デフォルトの名無しさん2009/04/04(土) 11:39:33
scoped_ptrでいいじゃん
0810デフォルトの名無しさん2009/04/04(土) 11:39:47
>>808
どうしてですか?
private:でshared_ptrにしたからですか?
なんとか使えるようになりたいんです。
どうかお願いします。
0811デフォルトの名無しさん2009/04/04(土) 11:39:49
>>808
なんつー的確な指摘w
0812デフォルトの名無しさん2009/04/04(土) 11:40:58
どっちかとういうとthisがまったくわかってないじゃないか?
0813デフォルトの名無しさん2009/04/04(土) 11:46:52
なんつーか、『オムレツ作りたいんです! 教えてください!』と言って来た奴が
材料として卵とチェーンソーと蚊取り線香を持ってきたような感じ。
ただ判ってないだけじゃなくて、判ってないままあらぬ方向に突き進んでいる。
0814デフォルトの名無しさん2009/04/04(土) 11:49:53
色々返事くれてありがとう。
void func2(MainClass* mc) {}
ここなんですが、最初は
void func2(boost::shared_ptr<MainClass>& mc) {}
こう書いてました。でもこれだと呼び出し元でthisを引数にしたとき
コンパイルが通りませんでした。スマポの使い方として、生のポインタは
基本的に全部スマポで置き換えるのが正しいと思うのですが、そうすると
thisはどうやって渡せばいいかわからなかったので。。。
0815デフォルトの名無しさん2009/04/04(土) 11:50:37
オムレツ作りたいんです!
はいいけど、君それ、手に持ってるのゆで卵だよね?

みたいな。
0816デフォルトの名無しさん2009/04/04(土) 11:51:37
>>813
なにか肝心なもの(フライパン)が抜けてるということですか?
0817デフォルトの名無しさん2009/04/04(土) 11:59:38
とりあえずconst
0818デフォルトの名無しさん2009/04/04(土) 12:08:37
m_SubClass->func2(boost::shared_ptr<MainClass>(this));
こう書くとAssertionに引っかかるし、、、
これって循環参照になってるから?
0819デフォルトの名無しさん2009/04/04(土) 12:26:50
プログラム中に可変で動的にメモリ確保をしたいのですが
Animationset m_animset;
という構造体があり、m_anim->GetAnimset();
というメソッドで個数が取得できます
m_animsetを最初から配列で100個くらい作っておけば問題ないのですが
可変で作る場合はどうすればいいのですか?
0820デフォルトの名無しさん2009/04/04(土) 12:28:59
>>819
vectorつかう
0821デフォルトの名無しさん2009/04/04(土) 12:29:56
>>820
ありがとうございますvectorについて調べてみます
0822デフォルトの名無しさん2009/04/04(土) 12:36:32
ダブルポインタでいいだろ

Animationset **m_animset;
0823デフォルトの名無しさん2009/04/04(土) 12:57:52
vector<AnimationSet> m_animset;

for(DWORD i = 0; i < m_animectrl->GetNumAnimationSets(); i++) {
m_animset.push_back(i);
m_animectrl->GetAnimationSet(i, &m_animset[i].pAnimSet);
}

という風にしたのですが
'std::vector<_Ty>::push_back' : 1 番目の引数を 'DWORD' から 'const AnimationSet &' に変換できません
とエラーが出ます

メモリを確保するにはどうすればいいのでしょうか・・・・
08248232009/04/04(土) 13:05:05
for(DWORD i = 0; i < m_animectrl->GetNumAnimationSets(); i++) {
AnimationSet anim;
m_animset.push_back(anim);
m_animectrl->GetAnimationSet(i, &m_animset[i].pAnimSet);
}

という風にしたらできました
0825デフォルトの名無しさん2009/04/04(土) 13:39:00
何が出来たの?
0826デフォルトの名無しさん2009/04/04(土) 13:50:42
>>807
enable_shared_from_this使えばいいんでないの?
0827デフォルトの名無しさん2009/04/04(土) 13:55:39
>>825
欲しい分だけメモリ確保です
0828デフォルトの名無しさん2009/04/04(土) 14:20:58
コピコンあるのね把握した
0829デフォルトの名無しさん2009/04/04(土) 17:57:33
>>822
ダブルポインタって、ただのポインタのポインタとなにが違うんですか?
0830>>8292009/04/04(土) 18:37:39
Ragnarok **m_ragna;
0831デフォルトの名無しさん2009/04/04(土) 18:39:38
>>829
その言葉を使う人間ができるプログラマかどうか。
0832デフォルトの名無しさん2009/04/04(土) 20:14:39
ダブルポインタ、なんて変な言葉使う人間こそプログラマじゃないだろうな
0833デフォルトの名無しさん2009/04/04(土) 20:35:11
>>826
enable_shared_from_thisを使ってみましたが、コンパイルは通るけど実行すると
Boostが例外を投げます。

class MainClass;
class SubClass {
public:
template <class T>
void func2(boost::shared_ptr<T>& mc) {}
};
class MainClass : public boost::enable_shared_from_this<MainClass>
{
public:
MainClass() : m_SubClass(new SubClass()) {}
~MainClass() {}
void func1() {
m_SubClass->func2(shared_from_this());
}
private:
boost::scoped_ptr<SubClass> m_SubClass;
};
int main() {
MainClass m;
m.func1();
return 0;
}
0834デフォルトの名無しさん2009/04/04(土) 20:42:29
>>833
ああごめん。大元のm自体をshared_ptrに格納するようにしないとshared_from_this()も使えないよ。
0835デフォルトの名無しさん2009/04/04(土) 20:54:19
>>834
ありがとうございます。
>大元のm自体をshared_ptrに格納する
というのは、
boost::scoped_ptr<SubClass> m_SubClass;
を
boost::scoped_ptr<SubClass> m_SubClass;
とするということですよね?
そうしてもBoostから例外を投げられます。聞いてばかりですいません。。
0836デフォルトの名無しさん2009/04/04(土) 20:59:29
>>835
違う違う、こっち。
int main() {
boost::shared_ptr<MainClass> pm(new MainClass);
pm->func1();
return 0;
}
0837デフォルトの名無しさん2009/04/04(土) 21:09:54
>>832
俺、ポッぽインタって言っている
で、3つはぽっぽっぽインタだな
0838デフォルトの名無しさん2009/04/04(土) 21:10:23
>>836
なるほど、動きました!
thisがboost::shared_ptr<MainClass>でなければならなかったということですね。
本当にありがとうございました。
0839デフォルトの名無しさん2009/04/04(土) 21:17:04
C++再考 という本のサンプルコードの一部です、コンパイルすると、下記のエラーが出ます
何処がおかしいのでしょうか?

VS2005 pro SP1
winXP SP3

#include <iostream>

using namespace std;

class Expr_node {
  friend ostream& operator<<(ostream&, const Expr&);
  friend class Expr;

  int use;
protected:
  Expr_node():use(1){}
  virtual void print(ostream&) const = 0;
  virtual ~Expr_node(){}
};

error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

error C2143: 構文エラー : ',' が '&' の前にありません。
0840デフォルトの名無しさん2009/04/04(土) 21:22:15
>>839
friend ostream& operator<<(ostream&, const Expr_node&);
Exprなんて型ないからExprを変数名だと推定してる
0841デフォルトの名無しさん2009/04/04(土) 21:28:37
>>839
なぜエラー行を抜いた
class Expr;を前方宣言か?
0842デフォルトの名無しさん2009/04/04(土) 22:05:38
>>814
> スマポの使い方として、生のポインタは
> 基本的に全部スマポで置き換えるのが正しい

どこからそんなアホな理屈が出てきたんだ?
0843デフォルトの名無しさん2009/04/04(土) 22:10:59
全部が全部正しいとは思わないが
C++ Coding Standardsでは「できれば」スマポを使うべきだとしているし
Googleコーディング標準でもスマポがいいねって書いてあるから
まぁ初心者はそのくらいの気持ちでもいいかも。

ただ、だからといってboostを使うのではなく
一度は自前で参照カウンタつきのスマポを設計してみる必要があるんじゃないだろうか。
ちんぽちんぽ。
0844デフォルトの名無しさん2009/04/04(土) 22:16:10
Accelerated C++でもネタになってるな>スマポの自作
0845デフォルトの名無しさん2009/04/04(土) 22:17:31
>>843
貴方の自前の参照カウンタつきのスマポ見せて、まんこ、まんこ
0846デフォルトの名無しさん2009/04/04(土) 22:30:40
>>843
>807 の例は参照に置き換えれば済むだろう。

所有権の移動や共有のためのポインタ引数なんてそんなに多いとは思わない。
0847デフォルトの名無しさん2009/04/04(土) 22:33:15
>>846
ああなるほど。
確かに、参照が使えるところには
ポインタよりも参照を使うべきだというのには同意。
0848デフォルトの名無しさん2009/04/04(土) 22:33:25
もうね、スマポ
0849デフォルトの名無しさん2009/04/04(土) 23:01:56
>>840
>>841
スマンカッタ
大きな勘違いというか、錯誤していた
前方参照も、後方参照もあったもんじゃない、一つのincludeファイルに、全てのクラスを書いて、混乱してしもうた
もちついて、1ファイル、1クラスに書き直して、本の順番でヘッダーを書いて、規則通り読み込ませたら
スコーンと一発でコンパイルできてもうた、全部晒してもいいが、長くて迷惑になるので、止めておくが
多少の誤植や、ミススペルは、このクラスの本になると、いたしかないかなと、思う最近なのですが、丁寧に〜.h、〜.cppはこれです
なんて書いてないので、仕方ないかなと思ったりする、内容は良い本なのだけどね
0850デフォルトの名無しさん2009/04/04(土) 23:13:03
今写経していた、C++再考 第8章 オブジェクト指向プログラムにもスマートポインタの原型のような、技法が載っていたよ
コピーコンストラクタで、カウンタを1増やし、デストラクタで-1してカウンタが0になったら、
オブジェクトを破棄するという、実に巧妙な仕組みだね
0851デフォルトの名無しさん2009/04/05(日) 00:35:28
コピーコンストラクタ....ってなんだっけ。忘れちゃったよ、だめぽ
0852デフォルトの名無しさん2009/04/05(日) 02:50:30
関数にクラスを値渡しするときに呼ばれるやつ
0853デフォルトの名無しさん2009/04/05(日) 02:51:41
>>846
Boost::shared_ptr使うよりも、参照にしたほうがよいということですか?
0854デフォルトの名無しさん2009/04/05(日) 02:59:29
>>853
所有権の移動や共有が必要ないなら、当然。
0855デフォルトの名無しさん2009/04/05(日) 06:56:41
下のクラスをビルドして実行するとコンストラクタでvectorがエラーになります
どこがまずいのでしょうか??

struct pointV
{
  int x ;
  int y ;
};

class Test
{
  std::vector<pointV> vecTest ;
public:
  Test()
  {
    vecTest.reserve(8) ;
    vecTest[0].x = 0 ; ←ここで発生するみたいです
  }
};

よろしくお願いします
0856デフォルトの名無しさん2009/04/05(日) 07:19:16
reserveじゃなくて、resize
0857デフォルトの名無しさん2009/04/05(日) 07:50:26
reserveだと配列の大きさ自体はそのままだったんですね
有難うございました
0858デフォルトの名無しさん2009/04/05(日) 13:08:57
weak_ptrを使ってよかった、という例があったら教えてください。
自分的には全部shared_ptrで書いておき、問題があったら生ポインタにしちゃえば
いいんじゃないか、と思ったんですが。
0859デフォルトの名無しさん2009/04/05(日) 13:21:17
>>858 http://www.google.co.jp/search?q=boost+weak_ptr
0860デフォルトの名無しさん2009/04/05(日) 14:25:12
256の倍数を入力すると正常な数値を出してくれません
内容はVBのテキストボックスに入力した数値をマイコンに送信し
マイコンに転送したCで作った制御プログラムで受け取り外部に転送するものです
いろいろ考えてみましたがさっぱりわかりません。よろしくお願いします
VB側
dim data(1) as Byte
data(0) = CByte(inputData Mod 256)
data(1) = CByte(inputData \ 256)
comSerial.Output = data
comSerial.Output = chr(0)

/*c言語*/
/*データ受信(マイコン側のフラグ処理は省略してます*/
unsigned char receive(void)
     unsigned char data;
     data = RDR;/*PCから受け取ったデータがあるレジスタRDR
     return(data);
int main(void)
{
unsigned char data[2];
int i;

while(1){
      i=0;
      do{
        data[i]=receive();
        i++;
       }while(data[i-1]!='\0');
};
0861デフォルトの名無しさん2009/04/05(日) 14:45:50
>>860
じゃあためしに入力した256の倍数の値と,出力される正常じゃない値を書けよ…
あとVBガワのCOMポートはバイナリ?
0862デフォルトの名無しさん2009/04/05(日) 14:54:23
>>861
たとえば1000と入れるときちんと1000が出力というか1000mm動くのですか
1024と入れるとほんの少ししか動きません。
VBがフリーズするときもあります。

VB側はバイナリーです。
よろしくお願いします
0863デフォルトの名無しさん2009/04/05(日) 14:57:07
256の倍数の値ということはdata(0)は0ということなので、マイコンの動作は正常なのでは?
0864デフォルトの名無しさん2009/04/05(日) 15:04:18
>>863
つまり0が送信された段階で'\0'と同じと判断されるのですね
0が怪しいとは思ったりはしましたが「NULLじゃないしな」とかいろいろ考えたりしてました
データの終了判断は他の数値にした方がよさそうですね
0865デフォルトの名無しさん2009/04/05(日) 15:05:18
>>862
実機ないから試せないけど,1000まではちゃんと動作確認できたと.
あとは 1023 とか 1025 だとどうなる?正常?

ついでにVBガワのdata()とCガワのdata[]を標準出力なりファイルなりデバッガなりで期待通りになってるか試せる?

> VBがフリーズするときもあります。 
なんとなくパリティかボーレートが怪しい気がする.

プログラミングしてるなら分かると思うけど,"フリーズ"って種類ありすぎてどうしようもない.
for(;;)でもフリーズするし,GUIならウィンドウイベント処理しないだけでフリーズしてるように見える.
0866デフォルトの名無しさん2009/04/05(日) 15:06:30
>>864
そっちかー
0867デフォルトの名無しさん2009/04/05(日) 15:38:56
>>865
1023と1025は正常に動作しました

Cとは関係ない話になりますがPC側のフリーズは
1024で動かす→正常に動かない→他の動作をVBで実行(正転とか逆転とか)
→VBの反応なくなる→タスクマネージャーで強制終了→VB再起動
→「ファイルは既に開かれています」→プロセス見るとVB6.EXEが2つ
→後から起動したVB終了→残ったVB6.EXEをプロセス終了→できない

こんな感じです。

C側はH8に転送してますので確認は出来ませんが
VB側は出来ると思います。
手元にシステムがないので今は無理ですが。

>>864
VBの送信も悪いですが受け取るC側にも問題があるようです
0868デフォルトの名無しさん2009/04/05(日) 16:28:42
>>867
VBが固まるのはMSCOMMのバグかもしれないけど,よくわからん.
シリアルポートのデバッグに何か使えそうなソフトあったと思ったんだけど,忘れた/(^o^)\

データの\0は\0\0などにエスケープするようにVBとCで調整すればいいって既にやってそうですねわかります
0869デフォルトの名無しさん2009/04/05(日) 16:50:15
>>858
すいません。まだやってません
というか\0\0というのは2回送信してCで受け取れってことでしょうか?
0870デフォルトの名無しさん2009/04/05(日) 17:08:45
>>869
まず仕様を確認しろよ

\0(=0x00) を終端としてるようだが、それだと 256の倍数で
おかしくなるのは当然に思える。

0871デフォルトの名無しさん2009/04/05(日) 17:12:01
そうそう。例えば、inputDataが256のとき、
data(0) = CByte(inputData Mod 256)
data(1) = CByte(inputData \ 256)
上は下と同じことだと忘れていない?
data(0) = 0
data(1) = 1
0872デフォルトの名無しさん2009/04/05(日) 17:13:52
まずはベーシック手順から
0873デフォルトの名無しさん2009/04/05(日) 17:21:54
エスパーすると、do〜whileのところは

data[0] = receive();
data[1] = receive();

にするのが正しいんじゃないかと思う
0874デフォルトの名無しさん2009/04/05(日) 17:54:13
みなさんありがとうございます
実習用のテキストだけどこういう感じです(´・ω・`)

>>870-871
アッー!!(;゙゚'ω゚')
そうだった。1バイト文字だからを終端にしたら256の倍数だと0ですよね

>>873
すいません。このプログラムは他の部分を除いて書いてるので
実は受信したデータが'O'だと次の文字見て'F'で正転、'R'で逆転みたいなことしています
でも受信したデータでdo〜whileを分ければいいだけでしょうけど

ちなみに数値データがある場合は
comSerial.Output = chr(80)←数値データあるよ
comSerial.Output = data
comSerial.Output = chr(0)←データ終わり
としています

入力されたデータはこんな感じです
dim inputData as Integer
inputData = Val(txtData.Text)
0875デフォルトの名無しさん2009/04/06(月) 00:13:00
C++で関数のグラフを作る問題があるんですけど、
グラフィックを表示するにあたって追加でインストール
しなきゃいけないものってあるんでしょうか?
OSはXP、visual c++ 2005を使用しています。
0876デフォルトの名無しさん2009/04/06(月) 00:16:03
VCありゃいける
GDI使うだろうし
0877デフォルトの名無しさん2009/04/06(月) 00:36:12
>>876
ですが教科書の通りにプログラムしても
なぜか動いてくれないんですよね・・・
これが問題ありそうな5,6,7、8行目なんですけど、

void CVc31view::OnDraw(CDC* pDC)
{
CVc31Doc* pDoc=GetDocument();
ASSERT_VALID(pDoc);

で、エラーがこう出ます。

ex3.1.cpp
.\ex3.1.cpp(5) : error C2653: 'CVc31view' : 識別子がクラス名でも名前空間名でもありません。
.\ex3.1.cpp(5) : error C2065: 'CDC' : 定義されていない識別子です。
.\ex3.1.cpp(5) : error C2065: 'pDC' : 定義されていない識別子です。
.\ex3.1.cpp(6) : error C2448: 'OnDraw' : 関数の定義が間違っています。

0878デフォルトの名無しさん2009/04/06(月) 00:51:24
>>877
CVc31view クラスの宣言はどうなってる?
0879デフォルトの名無しさん2009/04/06(月) 13:14:25
>>877
たぶんその教科書の途中からやりはじめたか、教科書自体が「前章の〜参照」ってなってるだけじゃね?
0880デフォルトの名無しさん2009/04/06(月) 13:54:04
int* pValue = new int[10];
pValue[1] = 10;

のように配列をnewすると、
代入時に*が付かないのに変数にpが付くのがシックリ来ません。

vector使えとか、そういう話とは別に
ポインタ変数にpを付けられているかたにお聞きしたいのですが、
こういう場合にもpを付けられていますか?
それとも、int value = new int[10]; と書かれてますか?
0881デフォルトの名無しさん2009/04/06(月) 14:02:57
宗教論争の予感。
0882デフォルトの名無しさん2009/04/06(月) 14:05:42
>>880
コーディング規約に従うだけ。
ポインタにpを付ける規約だとして、pValue[1]でもとくに違和感はない。
0883デフォルトの名無しさん2009/04/06(月) 14:09:59
おれは vector 使うし、ポインタだからって p 付けたりしないし、
話には参加できないな。うれしいぜ。
0884デフォルトの名無しさん2009/04/06(月) 14:12:42
>>880
その場合でも、*(pValue + 1) = 10;ならどうよ。余りに下らな過ぎるぞ。
# なんでvaluesじゃないのか、その方が気になる。
0885デフォルトの名無しさん2009/04/06(月) 15:39:41
それはpointerだから
0886デフォルトの名無しさん2009/04/06(月) 20:30:01
クラス内に性的なメンバがあってメモリ割り当てが必要な場合、それを初期化するタイミングは
クラスの外部でするべきでしょうか?

08878862009/04/06(月) 20:37:48
すいません、間違えました。
-性的なメンバ
+静的なメンバ
あと、この静的なメンバがいまのところprivateになっているので、外部で初期化するには
publicに動かす必要があるのですが、意味的には完全にprivateなのでどうすればよいか
わからずにいます。
目的としては、多数のオブジェクトを作るのですが、この静的なメンバは画像でクラス全体で
1個あればいいんですが。

0888デフォルトの名無しさん2009/04/06(月) 20:44:33
最初のインスタンスが作られるときにクラスの内側で割り当ててもいいし、そうでなくてもいい。
0889デフォルトの名無しさん2009/04/06(月) 21:37:18
性的結合..いやらしい
0890デフォルトの名無しさん2009/04/06(月) 22:43:42
>>887
静的メンバ自身のクラスのコンストラクタでやればいいんじゃないの?
0891デフォルトの名無しさん2009/04/06(月) 23:20:39
スマートポインタについて最もよく解説されている本や
webページを教えて下さい。お願いします。
0892デフォルトの名無しさん2009/04/06(月) 23:23:47
使い方の解説? 実装の解説?
0893デフォルトの名無しさん2009/04/06(月) 23:50:57
実装の解説でお願いします。
概念はある程度わかるんですが実際 どうやって実装しているのか
分からないんです
0894デフォルトの名無しさん2009/04/06(月) 23:58:06
検索すればでてこない・・・?
boostのコードでも見たらどうか。
0895デフォルトの名無しさん2009/04/07(火) 00:14:27
あと、スマートポインタにもいろいろあるけど、どれのこと?
もっとも、基本はデストラクタでdeleteするという点は共通だけど。
0896デフォルトの名無しさん2009/04/07(火) 00:26:07
auto_ptr
0897デフォルトの名無しさん2009/04/07(火) 00:35:54
質問させていただきます
変数を宣言するときに
char buf[1000];
とするのと
char buf_0[100];
char buf_1[100];
...
...
char buf_9[100];
として確保するのでは、必要なメモリの量は変わってくるのでしょうか?
0898デフォルトの名無しさん2009/04/07(火) 00:37:02
>>897
やってみればいいじゃん。
0899デフォルトの名無しさん2009/04/07(火) 00:59:46
メモリが連続になるかならないかではないかな
0900デフォルトの名無しさん2009/04/07(火) 01:17:09
Cから見えるメモリの使用量は等しいけど、
実際に必要な物理メモリの量は、コンパイラとかターゲット環境によっては違うかもしれない
0901デフォルトの名無しさん2009/04/07(火) 02:07:25
>>897
CPUのアラインメントの関係で違ってくるかもしれんな
0902デフォルトの名無しさん2009/04/07(火) 05:58:06
例えば、以下のように二次元配列の確保方法はありですか?
コンパイラは通ったんですが、なんか怪しいような。
そして、もしありだとして、delete 文はどのようにかけばよろしいのでしょうか?

int (*p)[10] = new int [3][10]();
0903デフォルトの名無しさん2009/04/07(火) 09:53:36
テンプレートクラスが、std::vector<T>のメンバーを持っています。
ある程度のメモリを確保しておく処理があるのですが、assign()などを使うと
初期値を指定しないとだめなので、うまく書けません。こういうようなときに使えるような、
vector<T>を与えられた数の要素だけ確保して初期化はしない、という処理はどう書けばいいですか?
0904デフォルトの名無しさん2009/04/07(火) 09:57:01
>>903
コンストラクタを実行していないクラスを生成する…
無理ぽ
0905デフォルトの名無しさん2009/04/07(火) 10:17:47
reserve(ほしい要素数); ってこと?
0906デフォルトの名無しさん2009/04/07(火) 10:37:15
C言語でHTMLを出力したいのですが
わかりやすく解説してるHPとかありますか?
QueryStringのやりとりが分からなくて困ってます
0907デフォルトの名無しさん2009/04/07(火) 10:45:44
>>906
http://pc11.2ch.net/test/read.cgi/php/1077753522/
http://pc11.2ch.net/test/read.cgi/php/1048393217/
0908デフォルトの名無しさん2009/04/07(火) 10:49:58
アリガトン
>>907
レス数が900を超えています。1000を超えると表示できなくなるよ。