2007年12月27日木曜日

listviewのドラッグドロップ

久しぶりにはまってた。

二つのlistviewと二つのimagelistで画像サムネイル表示して、その二つ間でドラッグドロップで移動するってーのやってたんやけど、転がってたC#+treeviewのサンプルではうまくいかない。
listviewにはString^型をAddしてるんやけど、ドロップの際DragEventArgsのeからそのStringをゲットできない。サンプルならsafe_cast(e->data->GetData(System::String::typeid))とやれば出来そうだが、出来ない。typeidが違うんだろうけどわからない。
というわけで、グローバルにListViewItemを宣言して、それを受け渡すことにして、今のところできそう。汚いやり方だろうけど、わかんないからもうこれでいいや~。

2007年12月13日木曜日

脱出?

よしっ、今週止まってたとこからようやく抜け出せそうなそんな気配。

プログラミングの勉強。ここ二日で理解がちっと深まった気がする。それで思ったけど、どうしてプログラミングにおける説明はあんなにややこしいんだろう。専門家上中級者向けならわかるけど、一から説明していきますよ的なスタンスのサイトも全然わかりづれー。
ポインタにしてもアドレス住所を指します、&で指せます、*で普通の変数みたいに扱えます。とか最初はどうでも良くない?必要に迫ってない感じがする。forとかif文はどういうときいるかすぐわかるからいいけど、どうしてポインタが必要なのか説明せずに、配列と関係してるから配列とセットで覚えましょう、じゃねーよ、っていう。怒り心頭です。

考えがまとまったら書こかな。初心者過ぎるけどいくばくかの人を救える自信はある。


で、あとこれはまあしゃあないと思うけど、配列の表し方多過ぎ。マジ。動的、静的の違いはあるやろうけど、それでも、今のVCじゃ、vectorなりlistやらCArrayとまあ。何ちゃらarrayは何種類あんねんっちゅうくらいあるし。まあ色んな人がこうした方が使いやすいで、いやこっちの方が便利だ、と頑張った末の結果なんだろうからしょうがないとは思う。


で、今回はArrayListクラスを使って要素数のわからないクラスを格納した。配列ではなくてコレクションであるらしい。とりあえずどうでもいい。なぜ、ArrayListか。それはmsdnのサンプルがほぼそのまま使えたからである。明解。
でも多分良かったのはAddメソッドを使って新しい要素を入れるとき、その型はobject型ということで、どんな型でもOKということ! うーん、これが良かったんだろう。 ただし要素の読み出し時は入れた型にキャストしないとダメ (クラス名^)ArrayList名[i];   ということはめんどいらしいが、今の自分にとっては全く気にならないので当分これでいかしてもらいます。ちなみにmsdnのサンプルで読み出し時にIEnumeratorクラスを使ったので使わせてもらったけど、全くイミフのままの利用です。

もちろんこの入れる型はポインタだろうことなので、読み出したときに思うように値が入ってなかったり、が起きているのも事実で、そこはまたどのarrayを使っても出てくるだろうプロミングにおける勉強ということなので続けます。  以上。

2007年12月12日水曜日

12/12

とりあえずメモ。
オブジェクト指向は大阪電気通信大学登尾研のページが分かりやすい。

オーバーロードされた関数がありません。はヘッダとソースで関数の定義が変わってることが多い。

まったく謎のエラーは改行しまくって調べる。

SQLではorder by句でソート出来る!


あーびびるぐらいレベル低い。
とりあえず今日は配列の動的確保という初歩を学びました。あと、人のサンプルをぱくってばかりじゃなく、自分の目的に合う手法を調べて、しっかり身に付けることが大事だということも。もひとつ、おまけにwebでもよく説明されてて、けど関係ないやろう、と思っていることも後から見れば関係ありまくりという。みんながパソコン使ってやろうとしていることは似たり寄ったりで、そこで重要視されるプログラミング技術もまた、似たり寄ったりだということ。

CLRのvectorとMFCのarray、を学んで、malloc,newがああそういうことか、とちょっと納得。時間があればわかったことを書きたかったけど今日は遅すぎる、もう帰る。結局出来なかったし。ずーん。

これからは

もっかいここに学んだことを書いていこう。

ノートはメモや日記的要素が強くて可読性が低い。まあ研究日記としてつけてきますが。

一日の終わりにここに書いてこ。

2007年12月9日日曜日

途方もなく

時間をかけて、撮影時間(こういうのをexif情報というらしい)をDateTimeにすることに成功。

String^ format= "yyyy:MM:dd HH:mm:ss";

date = DateTime::ParseExact(date_str,format,System::Globalization::DateTimeFormatInfo::InvariantInfo,System::Globalization::DateTimeStyles::None);
だ。

date = DateTime::ParseExact(date_str,format,NULL);
じゃだめ。C#じゃいいらしいが。
結局サンプルのってるとこにたどり着いて出来たけど、そこにたどり着くまでが...。
C++はほんとに厄介なようだ。同志よ、気をつけて。