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

C#, C♯, C#相談室 Part67

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/06/15(水) 18:04:25.76
前スレ
http://hibari.2ch.net/test/read.cgi/tech/1303889653/

Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
0153sage2011/07/06(水) 00:32:43.28
>>150
乱暴だと思うけど、ShowDialogで呼び出されてたか、
もしくはShowDialogで無効にされたかを調べる方法が
わかりませんでした。
ほかにもいろいろ問題がありそうなんで簡単にできる方法
はないかなと。
0154デフォルトの名無しさん2011/07/06(水) 10:59:40.09
共有フォルダへの書き込みを行いたいのですが、そのExeの実行権限では共有フォルダへ書き込みができません。
exeの実行権限を変えずに別ユーザーで書き込みを行うにはどうしたらいいでしょうか?(そもそも無理?)

例)コード内や外部ファイルにユーザーIDとパスワードを入れておきそれを読み込んでファイルアクセスをする・・・できるのかなぁ?
0155デフォルトの名無しさん2011/07/06(水) 11:03:24.49
Vista以降はOS側で制限かけてるんだから、書き込めたらまずいだろ
0156デフォルトの名無しさん2011/07/06(水) 11:47:21.50
実行権限がなかったらログインウィンドウを出してくれればいいのに

>>154
exeを実行するときにユーザー変えたりはできないの?
0157デフォルトの名無しさん2011/07/06(水) 11:48:03.05
ああ、だめか・・・・そんなことしたらログインパスワードを盗むソフトばかりになってしまう
0158デフォルトの名無しさん2011/07/06(水) 12:10:45.69
>>154
別EXEにしてプロセス起動すればできる
01591542011/07/06(水) 14:48:04.47
むぅ・・・やはりできないですかorz

ユーザーは
プロセス起動≠ファイル書き込みにしたいので
158さんのようにexe自身を別にするひつようがありますね。
dllにする予定でしたがそれもできないかなorz
0160デフォルトの名無しさん2011/07/06(水) 14:49:53.15
むしろexeの実行権限を変えろと
0161デフォルトの名無しさん2011/07/06(水) 16:39:05.58
>>152
151ですがありがとうございます
まずはそれでやってみます
0162デフォルトの名無しさん2011/07/06(水) 21:46:19.33
C++でいうところの、ポインタ配列のようなものは作れますか?

Listのn番目の値を参照できる配列arrayを作りたいです。
array[1] はList[10]の値が読めるというような・・・

ListはGCされるので無理でしょうか?
0163デフォルトの名無しさん2011/07/06(水) 21:52:02.99
struct ListPointer<T> { public List<T> List; public int Index; } の配列にする
同じでしょ
0164デフォルトの名無しさん2011/07/06(水) 22:02:04.26
Cでいう参照先のアドレスはどう代入するんでしょうか?
0165デフォルトの名無しさん2011/07/06(水) 22:04:47.29
できない
0166デフォルトの名無しさん2011/07/06(水) 22:12:33.33
List<T>は参照型だから普通に代入すればポインタ渡しっぽくなる(厳密にはポインタじゃなくてGCに管理されてるハンドル)
Hoge a = new Hoge(); Hoge b = a;
Hogeが参照型の場合、これはコピーじゃなくてC++で Hoge* a = new Hoge(); Hoge* b = a; とするのに相当する
0167デフォルトの名無しさん2011/07/06(水) 22:14:14.54
やっぱできないんですかね?


やりたいのは、 Listを参照渡しして、コピーの手間をなくしたいです。

あるクラスで値を更新したら、その値を使っているクラスにも反映させたいんですが、
あるクラスで値が更新されたら、別のクラスでも値を更新しないといけなくて・・・
0168デフォルトの名無しさん2011/07/06(水) 22:16:41.50
List<T>全体は参照渡しでしょ
0169デフォルトの名無しさん2011/07/06(水) 22:16:47.45
普通に参照使い回せばいいだけのこと
インデックスは諦めろ
0170デフォルトの名無しさん2011/07/06(水) 22:18:05.66
参照型は基本的に何やってもコピーは発生しません
「値型 参照型」でググって勉強してきてください
0171デフォルトの名無しさん2011/07/06(水) 22:19:54.06
C#はポインタ配列を使わなくて済むよう発展した。
クラスのメソッド(C++でいうクラスのメンバー関数)の引数には参照渡しと値渡しの2つの方法を選べるが。
0172デフォルトの名無しさん2011/07/06(水) 22:23:02.39
配列ならできないって事もないけどな…
その辺は初心者向けじゃないから自力で知ったほうが良いだろう
0173デフォルトの名無しさん2011/07/06(水) 22:24:44.83
値型と参照型、値渡しと参照渡しで混乱しちゃってる人いるよね
0174デフォルトの名無しさん2011/07/06(水) 22:25:51.82
値型を参照渡し参照型を値渡しwwwwwwwwwwwwwwwwwwww
0175デフォルトの名無しさん2011/07/06(水) 22:26:26.56
値型を値渡し参照型を参照渡し
0176デフォルトの名無しさん2011/07/06(水) 22:26:50.64
C++/CLIみたいにハンドル型、ハンドルの値渡し、ハンドルの参照渡しと呼べばいいのに
0177デフォルトの名無しさん2011/07/06(水) 22:27:01.71
object型でもって
0178デフォルトの名無しさん2011/07/06(水) 22:28:28.11
参照型を値渡しと言われると頭がふっとーしちゃう///
0179デフォルトの名無しさん2011/07/06(水) 22:29:08.60
値渡しで混乱しちゃってる〜 あたい私w
0180デフォルトの名無しさん2011/07/06(水) 22:29:28.63
なんか>>162が言ってることと全然理解せずにあさっての方向の回答してるのが多い気がするw
0181デフォルトの名無しさん2011/07/06(水) 22:34:45.73
答え自体は>>163で出てるじゃん
あとは、値型と参照型を勉強してこい、で終わり
01821622011/07/06(水) 22:38:18.57
クラスに参照型の変数を含めることはできませんか?
0183デフォルトの名無しさん2011/07/06(水) 22:40:09.44
だからList<T>は参照型なんだって
>>162のpublic List<T> List;は実際にはポインタ
グダグダ言ってないで参照型について勉強してきなよ
0184デフォルトの名無しさん2011/07/06(水) 22:41:15.04
何で参照型と値型の話になってるのか俺にはさっぱり分からん。
分かってないのは>>162じゃなくて、そういう意味不明なこと言ってる連中の方じゃないのか?w
0185デフォルトの名無しさん2011/07/06(水) 22:42:56.94
>>184
List<T>の特定の要素を指すポインタのようなものが欲しい、って話なんだろ?
>>163で合ってるじゃんw
0186デフォルトの名無しさん2011/07/06(水) 22:45:59.79
>>185
やっぱり日本語読めない人だな。
あんたが勝手に思いこんでるようなことを俺は言ってない
0187デフォルトの名無しさん2011/07/06(水) 22:46:48.42
質問に答えずに「ぼくがかんがえたべすとそりゅーしょん」を押し付けてる連中ばっかだな

>>182
諦めろ
0188デフォルトの名無しさん2011/07/06(水) 22:50:11.15
ワロス
じゃあList<Func<T>>にでもしておけ
0189デフォルトの名無しさん2011/07/06(水) 22:52:12.63
>>163の構造体の配列をラップしたクラスにIList<T>実装するとか
配列にこだわらなければどうとでもできる
0190デフォルトの名無しさん2011/07/06(水) 23:00:42.04
解決したみたいで良かったなw
0191デフォルトの名無しさん2011/07/06(水) 23:02:45.32
class A{
public List<int> list;
}

class B{
public List<int> list;
}

A a = new A();
a.list = new List<int>();

B b = new B();
b.list = a.list;

a.list.Add(1);

Console.WriteLine(a.list.Count);
Console.WriteLine(b.list.Count);

これでまだ分からないなら死ぬまで学んだって理解できない
0192デフォルトの名無しさん2011/07/06(水) 23:12:44.72
>C++でいうところの、ポインタ配列のようなものは作れますか?
>Cでいう参照先のアドレスはどう代入するんでしょうか?
>やりたいのは、 Listを参照渡しして、コピーの手間をなくしたいです。
これ見たら普通はまず値型と参照型を正しく理解してないんだろうと考えるのが自然じゃない?
エスパーの人は違うのかもしれないけどさ
0193デフォルトの名無しさん2011/07/06(水) 23:18:43.09
読解力の無さをアピールされても…
0194デフォルトの名無しさん2011/07/06(水) 23:23:05.85
流れ無視してすまんけど、教えてください。

あるクラスインスタンスに、特定の名前のメソッドがあるか、実行時に調べることは出来ますか?
出来るようでしたら、方法を教えてください。
0195デフォルトの名無しさん2011/07/06(水) 23:24:08.97
>>194
http://msdn.microsoft.com/ja-jp/library/8zz808e6%28v=VS.80%29.aspx
これで
0196デフォルトの名無しさん2011/07/06(水) 23:35:42.04
パブリックならそれでいいけど、違うのならBindingFlagsを渡せるオーバーロードじゃないとダメ
あとオーバーロードが存在すると例外が出るから、Type[]を指定するオーバーロードを使わないとダメ

名前を見るだけなら、GetMethodsの方がいいかも
0197デフォルトの名無しさん2011/07/06(水) 23:40:22.34
もうリフレクションで調べたほうがいいと思う
0198デフォルトの名無しさん2011/07/06(水) 23:41:59.80
本当にメソッドを文字列で引きたいのか、って気はするが。
このinterface継承してたら、とかで足りるんでは
01991962011/07/06(水) 23:42:57.58
訂正
GetMemberだな
0200デフォルトの名無しさん2011/07/06(水) 23:46:47.71
C++あがりはすぐポインタ使いたがるけど、実はポインタなしでどうにでもなる
0201デフォルトの名無しさん2011/07/07(木) 00:16:14.14
>>191
b.list = a.list;
とするだけで参照になるんですか?
0202デフォルトの名無しさん2011/07/07(木) 00:22:43.72
はい
参照というよりポインタと言った方が近い
C#で型というと大きく分けて参照型(List<T>など)と値型(intとかPointとか)の2種類があって、
参照型は常に型名の後に暗黙的に*が付いてるイメージ
0203デフォルトの名無しさん2011/07/07(木) 00:24:16.70
>>201
List<T>は参照型だからそうだよ

ここを見とけ
http://ufcpp.net/study/csharp/oo_reference.html
0204デフォルトの名無しさん2011/07/07(木) 00:36:07.41
タイプセーフなポインタが参照(キリッ
0205デフォルトの名無しさん2011/07/07(木) 00:36:54.95
その話は後でたっぷりやっていいから今は黙ってろ
02061942011/07/07(木) 00:37:44.31
みんな、ありがとう。助かりました。

>>198
その手が使えないんです。。。
0207デフォルトの名無しさん2011/07/07(木) 15:37:10.32
ちょっとFormでご相談
A(サイズ固定)
B(サイズ可変)
C(サイズ可変)
D(サイズ固定)
E(サイズ固定)
↑こんなように縦に並んでいるTextBoxがあり、BとCだけ親フォームのサイズに合わせて可変にしたいです
アンカー指定を
A:Left,Top,Right
B:Left,Top,Right,Bottom
C:Left,Top,Right,Bottom
D:Left,Bottom,Right
E:Left,Bottom,Right
としたのですが、CがDとE無視して下まで広がったりと上手く行きません
どうすればいいでしょうか?
0208デフォルトの名無しさん2011/07/07(木) 15:43:20.67
そういうとき、WPFのGrid楽なのにね。
0209デフォルトの名無しさん2011/07/07(木) 15:55:28.87
>>207
イメージ図無いの?
0210デフォルトの名無しさん2011/07/07(木) 16:08:51.98
>>207
TableLayoutPanelを敷いてから配置すればOK
0211デフォルトの名無しさん2011/07/07(木) 16:13:14.37
>>207
今試したけどCが下に広がったりはしなかった。
けど
1) A,D,Eはサイズ固定と言いながらRightアンカーをつけてるから横にはリサイズされる。
  それってサイズ固定?
で、>>210でもいいけどもとのままに近い方法だと
2) BとCは相手にめり込むように広がっちゃうからBとCを置く予定のところにSplitContainerを置いて
  それに対して全アンカーをセットする。
  でそのSplitContainerの中にBとCを置く。
  ってやらないとBCの自動リサイズはめり込む。
0212デフォルトの名無しさん2011/07/07(木) 16:18:23.35
c#でFTPS通信ってどうやってやるんでしょうか・・・

ftp通信に掛かるコンポーネントは用意されているのですが
ftpsは見当たらないです・・・・

方法が分かる方いらっしゃいますでしょうか?
0213デフォルトの名無しさん2011/07/07(木) 16:37:39.91
FTPS .NETでググれば何かしらの方法は出てくる
0214デフォルトの名無しさん2011/07/07(木) 16:39:27.72
>>212
FtpWebRequestでしょ?"ftps://"でできると思うが試せない。
http://msdn.microsoft.com/ja-jp/library/system.net.ftpwebrequest(v=vs.80).aspx
EnableSsl = true がいるかなぁ?
0215デフォルトの名無しさん2011/07/07(木) 16:43:30.97
>>212
http://blogs.msdn.com/b/adarshk/archive/2005/04/22/410925.aspx
0216デフォルトの名無しさん2011/07/07(木) 17:04:46.31
>>210-211
コンテナを適宜使ってレイアウトしろということですね
ありがとうございます
0217デフォルトの名無しさん2011/07/07(木) 17:37:42.78
>>213〜215さん

有用な情報ありがとうございます><
さっそく調べて使ってみますm(_ _)m
0218デフォルトの名無しさん2011/07/08(金) 11:56:07.56
Shiftキーを押しながら'A'キーを押したことを検知するにはどうしたらいいのですか?
0219デフォルトの名無しさん2011/07/08(金) 11:59:29.43
それだけじゃあわからん
0220デフォルトの名無しさん2011/07/08(金) 12:11:13.19
e.Modifiersを使うことで検知できました。
0221デフォルトの名無しさん2011/07/08(金) 12:12:43.91
そういう意味じゃねえよ
どういうアプリ書いててどういう場所でキー入力を知りたいかを言えって言われてるんだよ

やり方は複数あるはずなんで
02222182011/07/08(金) 12:22:39.92
フォームのKeydownで複数のキーの押下を知りたいのです。
例えば、Ctrl+Aで全選択させたりしたいのです。
0223デフォルトの名無しさん2011/07/08(金) 12:24:38.85
http://dobon.net/vb/dotnet/control/keyevent.html#section6
0224デフォルトの名無しさん2011/07/08(金) 13:27:06.44
>>221
お前は使えねーな
0225デフォルトの名無しさん2011/07/08(金) 13:37:22.74
>>224
どっちがだよボケ
煽るしか能のねえやつが偉そうな口きいてんじゃねえぞ
0226デフォルトの名無しさん2011/07/08(金) 14:00:55.29
まちたまえ!君たち
0227デフォルトの名無しさん2011/07/08(金) 14:01:53.38
私のために喧嘩はやめて
0228デフォルトの名無しさん2011/07/08(金) 14:10:38.51
こういう流れが好きでつい煽ってしまう
0229デフォルトの名無しさん2011/07/08(金) 18:59:42.26
特許庁のさあ、IPDLサーバーから直接特許公報とかダウンロードしたんだけど
SOAPとかじゃないらしくて・・・どうやっているのかな?
GetIPDLとかのソフトでやってるけど・・・デコンパイルするしかないかなあ・・・
0230デフォルトの名無しさん2011/07/08(金) 19:11:12.68
Wiresharkで通信見てみた?
0231デフォルトの名無しさん2011/07/08(金) 21:41:13.49
>>230
デコンパイルとか通信監視とかだと、人のソフトを覗き見するみたいで
失礼だなあと思って、仕様がどこかに無いか探してみたいけど見つからなくて・・・

それが一番近道ですかね。ありがとう!
0232デフォルトの名無しさん2011/07/08(金) 23:38:58.66
レベルはどうであれ、プログラミングをしてる奴ってのは
多かれ少なかれ、テキストエディタに拘りがあるよな

現状使っているテキストエディタが.NETで書き直されたらどうする?
0233デフォルトの名無しさん2011/07/08(金) 23:43:58.76
どうもしません
聞くだけ野暮
0234デフォルトの名無しさん2011/07/08(金) 23:49:47.16
サブで使ってるエディタが.NETですがなにか?
0235デフォルトの名無しさん2011/07/08(金) 23:54:48.81
メインになれない理由は?
0236デフォルトの名無しさん2011/07/08(金) 23:59:51.04
Visual Studioが一番使ってるエディタだから.NET製だな……。
0237デフォルトの名無しさん2011/07/09(土) 00:03:46.96
なんというか、俺様仕様だから。Azukiで自前で作ってて、常に作りかけなんだ。
メインは秀丸だけど、複雑なマクロになると、面倒なので、そんなときは、
C#でマクロ書く感じで機能実装→使用って風にしてます。
0238デフォルトの名無しさん2011/07/09(土) 00:12:39.72
>>232
ゴルフでも料理でも、道具にこだわる奴のこだわりは実力に比例していないことの方が多い。
むしろ実力の欠如を道具で補おうとする補償行為を疑うのが自然。
0239デフォルトの名無しさん2011/07/09(土) 00:12:50.67
VS使うとMSに囲い込まれてる気分になるから普通にテキストエディタ使ってるなぁ
0240デフォルトの名無しさん2011/07/09(土) 00:17:01.32
>>239
吹いたwww
0241デフォルトの名無しさん2011/07/09(土) 00:33:52.71
>>239
C# 書いてる時点でw
というか、Windows 使てる時点でw
0242デフォルトの名無しさん2011/07/09(土) 00:34:04.24
こだわるというか、常にベストを探してるね。
0243デフォルトの名無しさん2011/07/09(土) 00:39:00.81
EmEditor使ってるが、これが.netで書き直されたら
間違いなく、ほかにいくな

もっさり起動のエディタなんて冗談じゃねー
0244デフォルトの名無しさん2011/07/09(土) 00:40:32.93
Notepad++だけど、正規表現がまともになりそうだからむしろ歓迎する
0245デフォルトの名無しさん2011/07/09(土) 00:43:25.85
>>238
わざわざgitを作ったLinusをdisってんのかおまい
0246デフォルトの名無しさん2011/07/09(土) 00:47:01.74
>>244
あれなんなんだろうねマジで。
0247デフォルトの名無しさん2011/07/09(土) 00:51:07.31
Listをさらに配列をつくりたのですが、これであってますか?

public List<MyClass>[] mclass;

mclass = new List<MyClass>[SIZE];

for(int i=0;i<SIZE;i++) mclass[i] = new List<MyClass>();

0248デフォルトの名無しさん2011/07/09(土) 00:53:42.94
あってる
0249デフォルトの名無しさん2011/07/09(土) 00:56:03.71
Matzが言うにはハッカーは道具にこだわるらしいが
俺は2ちゃんねらーなので、どこの馬の骨とも分からない>>238の意見を支持したいと思う
0250デフォルトの名無しさん2011/07/09(土) 00:57:44.96
MyClass data = new MyClass();

data.member = hoge;

mclass[i].Add(data);

としてもmclassに追加されてたdataの中身がないのです。。。memberがみえない
02512502011/07/09(土) 01:02:19.42
すいません。忘れてください。できていました
0252デフォルトの名無しさん2011/07/09(土) 01:03:16.52
>>250
日本語でOK

日本語不自由そうだから、何かコード書いて ideone.com にでもupって。
■ このスレッドは過去ログ倉庫に格納されています