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

ふらっとC#,C♯,C#(初心者用) Part67

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/12/16(木) 18:23:33
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっとC#,C♯,C#(初心者用) Part66
http://hibari.2ch.net/test/read.cgi/tech/1290854247/

■関連スレ
C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/

■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0951デフォルトの名無しさん2011/01/13(木) 12:14:44
TreeViewにVirtualModeはないのか
じゃあ>>948のようなトップノードを最初に追加して必要に応じて部分的にノードを追加するしかないな

この辺が参考になるかと
http://www.atmarkit.co.jp/fdotnet/dotnettips/260createtreeview/createtreeview.html
0952デフォルトの名無しさん2011/01/13(木) 12:16:51
保持できるんなら取りあえずメモリに保持って
>>951でやれば結構楽と思うよ

メモリの容量によると思うけど
0953デフォルトの名無しさん2011/01/13(木) 12:48:00
ツリーに表示する時が遅いだけだから一度に全部展開しなければ済む話。
0954デフォルトの名無しさん2011/01/13(木) 13:56:16
どういう風に質問したらいいのかわかりませんが、
回転中心の座標を移動させることは出来るのでしょうか?
0955デフォルトの名無しさん2011/01/13(木) 13:59:47
XNAのことかー
0956デフォルトの名無しさん2011/01/13(木) 14:00:37
wpfです。
0957デフォルトの名無しさん2011/01/13(木) 14:00:54
>>954
なにを言っているか判りませんが
何とかすれば可能でしょうね
09589542011/01/13(木) 14:08:49
うーん
回転する物体を平行移動しているのですが、
どうも平行移動する際に、回転の角度がおかしくなってしまうので、
回転中心が移動されてなく、固定されているんじゃないかなと思ったのです。

ですので、物体の平行移動と同じように回転中心を移動できれば改善されるかなと思ったのです。
0959デフォルトの名無しさん2011/01/13(木) 14:11:00
最近だとクォータニオンがあれば回転軸がどこにあろうがちゃんとまわせなかったっけ?
0960デフォルトの名無しさん2011/01/13(木) 14:11:17
だからまず回転する物体とはなんなのか説明してよ
Managed DirectXの話?
0961デフォルトの名無しさん2011/01/13(木) 14:14:31
エスパーすると、回転と平行移動の順番の問題だと思う
09629542011/01/13(木) 14:15:54
>>959
クォータニオンで回転させているのですが、物体を移動させないときはきちんと回転させれるのですが、
移動すると平行移動しかしてないにも関わらず、変な方向にぶっ飛んでいきます

>>960
>だからまず回転する物体とはなんなのか説明してよ
すみません、何を聞かれているのかがわかりません。
WPF,C#,Direct3Dでしょうか
0963デフォルトの名無しさん2011/01/13(木) 14:16:05
数学は得意じゃないけど矩形などで中心以外の場所に回転軸を設けて回すのであれば
一旦ポリゴンを分割して回せばいいだけなんだけどな
0964デフォルトの名無しさん2011/01/13(木) 14:17:29
>>962
与え方が悪いだけのような
その場所付近のコードは晒せる?
09659542011/01/13(木) 14:17:47
>>961
今は平行移動->回転の順番で記述してます。
0966デフォルトの名無しさん2011/01/13(木) 14:18:33
>>965
逆にしてみ
09679542011/01/13(木) 14:22:43
>>963 >>960
理解しました。物体は振り子のようなものです。

>>964
  degree = parameter[2]

Quaternion xz = new Quaternion(new Vector3D(0, 0, 1), degree);

 Aa.OffsetX = parameter.z[0];
Aa.Rotate(xz);
0968デフォルトの名無しさん2011/01/13(木) 14:25:24
アフィン変換で拡大縮小平行移動回転するときは
拡大縮小回転の中心が原点にくるように平行移動 -> 拡大縮小 -> 回転 -> 目的の位置へ平行移動
の順で変換する
09699542011/01/13(木) 14:26:03
>>966

やってみましたが、変わりませんでした・・・
09709542011/01/13(木) 14:37:40
>>968
>拡大縮小回転の中心が原点にくるように平行移動
これがよくわかりませんでした。
0971デフォルトの名無しさん2011/01/13(木) 14:40:46
どっかやり方がおかしいんだろ
WPFはクォータニオンなんか直接触らなくても回転できる。わかんないなら難しいことしなくていい。
var rotation = new RotateTransform3D(new AxisAngleRotation3D(0,0,1), degree);
var translation = new TranslateTransform3D(平行移動のベクトル);
var transform = new Transform3DGroup();
transform.Children.Add(rotation);
transform.Children.Add(translation);
このtransformを適用するだけ
0972デフォルトの名無しさん2011/01/13(木) 14:52:58
>>971
やってみます。
0973デフォルトの名無しさん2011/01/13(木) 15:01:36
座標変換だかワールド変換だかを説明しなければいけない
とおもったけどTransform3DGroup.Childrenが全部やってくれるのなら
それでいいのかも
09749542011/01/13(木) 15:15:55
>>971
できましたー!
30時間くらい悩んだのに\(^o^)/

助かりました。精進します!
0975デフォルトの名無しさん2011/01/13(木) 15:20:38
http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-00-68-11-29/teapot.xaml
0976デフォルトの名無しさん2011/01/13(木) 15:20:42
C#でSQLiteを使ってるんですけど、
テーブル定義で、
command.CommandText = "create table Id_Name (id char NOT NULL primary key, name char)";
と、Id_Nameというテーブルを定義しました。
これでidは重複する文字は登録できなくなったのですが、
書き込むときに、
idが重複した場合エラーを
Messagebox.Showで表示したいんですが
判定条件?はどうしたらいいですか?

それから、NOT NULLにしてるので
文字が書き込まれなかった場合も
上記同様にしたいのですが
どうしたらいいですか?

参考ページなどでもいいのでお願いします!
0977デフォルトの名無しさん2011/01/13(木) 15:22:41
例外をキャッチするだけだろjk
0978デフォルトの名無しさん2011/01/13(木) 15:23:04
insert する前にselectする
0979デフォルトの名無しさん2011/01/13(木) 15:23:59
>>978
(;´д`)
0980デフォルトの名無しさん2011/01/13(木) 15:24:16
>>976
try
{
//処理
}
catch
{
//エラー処理
}
こんな感じかな
0981デフォルトの名無しさん2011/01/13(木) 15:25:10
2chブラウザの作り方教えろ
0982デフォルトの名無しさん2011/01/13(木) 15:31:47
WPFでPMDって読み込める?
0983デフォルトの名無しさん2011/01/13(木) 15:32:14
やっぱりtrycatchでないとできないですかね・・・;
他に何かあればと思ったんですが・・・
0984デフォルトの名無しさん2011/01/13(木) 15:33:09
>>978
やってみます!
0985デフォルトの名無しさん2011/01/13(木) 15:36:46
単体で動かして、量がそこまで多くないなら一覧読み込んで水際でキャッチかな?
俺は基本的に例外はかせたくないタイプ
例外は本当に例外の時だけ 捕まえれるものは捕まえたい
0986デフォルトの名無しさん2011/01/13(木) 15:42:25
>>981
順番にやっていけ
http://cs2ch.blog123.fc2.com/blog-entry-1.html
0987デフォルトの名無しさん2011/01/13(木) 15:50:26
>>983
C/C++時代のようにリターンコードを見るって感じじゃないみたいね
一応try catchもcatch側で細かいエラータイプをみれるようだけど
0988デフォルトの名無しさん2011/01/13(木) 15:59:29
try{
command.CommandText = "create table Id_Name (id char NOT NULL primary key, name char)";
command.ExecuteNonQuery();
}
catch(Exception)
{
MessageBox.Show("NOT NULL or primary key ERROR!!");
return;
}

これでエラーを出すことが出来ました。
>>985さん同様例外はかせたくないのですが
データ量がこれから多くなります・・・
水際でキャッチというのもよくわからなかったので><
0989デフォルトの名無しさん2011/01/13(木) 16:00:58
>>988です!
catch(Exception)
になっているんですけど
Exception以外のほうがいいんですかね??
0990デフォルトの名無しさん2011/01/13(木) 16:04:20
もし、UnhandledExceptionとか受け取ってるなら
CatchはDuplicationExceptionとか、重複した時に(に限らず想定できるもの)起こりうるような例外だけにして、
それ以外の物はキャッチするなり、しないなりしてリソースとかを適切に処理した後、
再度スローして任せるようにしたりするのはどう?
09919902011/01/13(木) 16:05:06
>もし、UnhandledExceptionとか受け取ってるなら
これ
もし、UnhandledExceptionとかで捕捉してるなら
の間違い
0992デフォルトの名無しさん2011/01/13(木) 16:10:21
>>991
このtrycatchの外でも
違う場所で例外が出る可能性があるので
trycatchしています。
それもExceptionになってます。
trycatchが二重になっているといえばわかるでしょうか?


DuplicationExceptionとは、初めて聞きました。
ネットで調べてみたのですが
よくわかりません・・・
catch(DuplicationException)としてみると
usingディレクトリまたはアセンブリ参照が不足しています
と出てしまいます。
何をusingすればいいですか???
0993デフォルトの名無しさん2011/01/13(木) 16:15:58
>>992
そりゃ取りあえずそれっぽい名前で書いただけだからあるわけがない

リファレンスの説明見るのが早いけど
一旦Exceptionで主キー重複例外発生させて
うけたExceptionの中身が本当は何なのかを見れば一応元の例外は判ると思うよ


あと入れ子になってる例外処理はバグとか調査の難航になると思ってるのは俺だけだろうか・・・
0994デフォルトの名無しさん2011/01/13(木) 16:35:50
>>993
(Exception e)
e = {"Abort due toconstraint violation\r\nclumn Sirial_No is not unique"}
でした。
でも表示すると長ったらしく書いてあります。
なんの例外だかわかりますか?

trycatchの二重はやっぱりよくないですか・・・。
なんの例外だかわかれば二重にしなくてもいいのですが・・・
0995デフォルトの名無しさん2011/01/13(木) 16:38:06
>>994
Sirial_Noとはidのことです!
0996デフォルトの名無しさん2011/01/13(木) 16:41:23
だからまずselectしてinsertしようとしてるIDが無いか
チェックしたほうがいいって。
いきなりDBに突っ込んで例外で判定なんてDQNだ。
0997デフォルトの名無しさん2011/01/13(木) 16:57:23
catch(SQLiteException){/*エラー表示*/}
catch(Exception){}
これで解決しそうです。

>>996さん
selectで見つからなかった場合は例外が発生しませんか?
いきなりDBに突っ込むのはまずいんですかね;


もう一つ質問です!
NOT NULLのことなんですけど
"insert into Id_Name(id, name) values (null, 'A')"
"insert into Id_Name(id, name) values ('', 'A')"
"insert into Id_Name(id, name) values (NULL, 'A')"
"insert into Id_Name(id, name) values ('NULL', 'A')"

どのパターンで書き込んでも
例外にならないんですけど
NOT NULL って何を書き込めばいいんですか?
0998デフォルトの名無しさん2011/01/13(木) 17:15:46
質問です
GCHandle.Allocで取得した領域を後から書き換える事って出来ますか?
ある構造体でAllocした領域を丸ごと同じ型の構造体データで上書きとかでもいいのですが…
0999デフォルトの名無しさん2011/01/13(木) 17:18:28
>>997

select count(id) from テーブル名 where id = @id
これで最低でも0はかえってくるんだぞ?
そうでなくてもレコードが返ってこないだけなんだから問題ない

DBのNULLは DBNull.Value ちゃうのん?
1000デフォルトの名無しさん2011/01/13(木) 17:24:11
>>999
なるほど
Countのことなど頭になかったです!
ありがとうございます!
やってみます☆

DBNull.Valueですね
こっちもやってみます!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。