[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 19:51 / Filesize : 230 KB / Number-of Response : 995
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part22
pc11.2ch.net/test/read.cgi/tech/1197802312/

369 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:06:34 ]
>>366
だからグローバルちゃうよ、って364はいってるんだと思いますが。。
ひょっとして(案外よくいるんだが)Cとかのファイルスコープの概念を知らないの?

370 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:09:20 ]
メンバ変数にもアクセス修飾子とかあるから一概には言えないんじゃない。

371 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:18:41 ]
>>366
メンバ変数のスコープは各オブジェクト内で完結
ただしstaticなメンバの場合はどこからでもアクセスできる

372 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:22:57 ]
うん?

373 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:28:30 ]
>>368-371
クラス=ファイル
メンバ=staticグローバル変数
みたいなもんなのかな?

>>369
知ってますよ
でも、案外ファイルの中でも色んな関数から参照されてると
訳分かんなくなりませんか?

374 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:28:49 ]
オブジェクト指向の基本は自分で身につけないと
こんなとこでのやりとりでは理解できるはずがない。

375 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:29:54 ]
あとよくわかんないのはメンバ関数って
インスタンスの分だけ関数が複製されるんですか?
その意味がよくわかんなくて

376 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:30:08 ]
>>373
>クラス=ファイル
>メンバ=staticグローバル変数
>みたいなもんなのかな?

悪いけど全然違う
だから真面目に基本から勉強しろと。
C++も使ったことないの?

377 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:56:18 ]
>>375
されない



378 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:56:26 ]
オブジェクト指向について解説してるウェブページでも適当に探して読んでみるべき。

379 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:10:53 ]
>>375
staticをつけないとインスタンスごとに複製される


380 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:36:05 ]
嘘を教えるな

381 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:23:20 ]
ワロタ

382 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 08:57:03 ]
LinkLabelについて質問です。
配列でLinkLabelを可変で作成しているのですが、クリックしたときの処理で不明な点があります。
linklabel[i]で複数作成して、クリック時のイベントは一括で一つで処理したいのですが、押されたlinklabal対応させる方法がわかりません。
x = 選択したlinklabelのテキスト みたいな感じにしたいのですが、よい方法はないでしょうか?
buttonだとselectとか使うみたいなんですがlinklabelの場合がわかりませんでした。
あらかじめlinklabel1みたいに作っている方法なら載っているサイトが見つかったのですがこの方法のやつが見つかりません。

383 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:13:50 ]
sender

384 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 09:23:53 ]
>>382
デザイナで一個置いてイベント設定してdesigner.cs見てみるといいんじゃないか?

385 名前:382 mailto:sage [2008/01/21(月) 10:37:11 ]
>>383-384さんありがとうございました
x = ((System.Windows.Forms.LinkLabel) sender).Text;としたところ上手くいきました

参考サイト
dobon.net/vb/dotnet/control/buttonarray.html

386 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 13:47:00 ]
NotifyIcon.Textにセットするために、文字列が64文字を超える場合は64文字までに切りたいのですが
string.Remove(64)
string.Substring(0,64)
のどちらも64文字未満だと例外が起きるようです。
いちいち文字数のチェックをしないでも、一発で切ってくれるメソッドはないのでしょうか?

387 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 13:53:06 ]
「いちいち文字数のチェックをしないでも、一発で切ってくれるメソッド」
が存在したとしても、それは内部で長さをチェックしている。

ゆえに自分で作ればよい



388 名前:386 mailto:sage [2008/01/21(月) 14:02:26 ]
>>387
ということはやっぱりないんですね。
例外が起きると言うことは内部でもチェックしているはずなので
二重チェックになるのが嫌だっただけです。
拡張メソッドを作ることにしました。ありがとうございました。

389 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:07:55 ]
そんなことに拡張メソッド使うな

390 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:26:42 ]
Language Integrated Queryを「統合言語クエリ」と訳すのって変じゃね?
「言語統合クエリ」ならわかるけど

391 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:33:02 ]
LINQってリンキューって読んでるけどあってる?

392 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:34:32 ]
オレはリンク

393 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:46:31 ]
try中に意図的にcatchに移動してほしくて
無理やり0除算発生するようにしてるんだが
もっとスマートな方法はないですか?

394 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:47:40 ]
それ最悪の書き方

395 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:47:56 ]
何か throw しろ。

396 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:49:46 ]
if (flag) throw new GotoCatchException<int>();
else throw new GotoCatchException<String>();

397 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:52:22 ]
そもそも意図的にcatchに移したい処理なんて
設計に問題があるだろ



398 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 19:02:25 ]
たぶん発想が逆立ちしてるんだろうね。
本来例外処理の外に置くべき処理をcatchの中に書いちゃってる、
なんてオチだと推測する。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:55:41 ]
変数が使われてなかったりするとエラー一覧ウィンドウで「警告」で表示されますが
「メッセージ」も文法的な間違いを発見すると表示されるのですか?

400 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:13:57 ]
メッセージって""内のメッセージか?
警告と並列で括弧でくくってある意味がわからん

401 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:53:03 ]
エラー一覧のウインドウに並んでる
[エラー] [警告] [メッセージ]
のことだろう。
俺もまだ見たことないな。

402 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:52:07 ]
例外の使い方だけど

try
処理1
処理2
catch(ex1)
エラー1
catch(ex2)
エラー2
catch()
想定外エラー

で処理1と2は戻り値無しでNG時にex1とex2をthrowする
って使い方は邪道?
例外は関数エラーに使うべきじゃなかたりする?

403 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:57:22 ]
そうやって使わないで何に使う

404 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:58:44 ]
むしろそれ以外の使い方があったら教えてほしい。

405 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:22:08 ]
それ以外の使い方したら読みにくいだけだろw

406 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:30:16 ]
想定外の例外を握りつぶすのがいいかどうかは賛否の分かれるところじゃなかろうか

407 名前:デフォルトの名無しさん [2008/01/22(火) 02:27:48 ]
C#ってスクリプト言語くらい気楽に使えるようにならないの。
いちいちコンパイルとかウザいし。



408 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 02:35:52 ]
>>397
そうでもないキガす。
とりあえず例外処理に関してテスト条件なんて作らずに
投げたらどうなるんだか見てみたいなんて話はあるかも
しれない。 これはテストをはしょるズボラな俺だけか。

409 名前:デフォルトの名無しさん [2008/01/22(火) 06:50:59 ]
JavaScript書き出された文字列を取得
する方法はありませんか。

ブラウザコンポーネントで例えば
document.write("abc")と書かれていれば
このabcを取得したいとのですが。

410 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:47:29 ]
>>400,401
[エラー] [警告] [メッセージ]の[メッセージ]の項目です。
ASPでweb.config内でカスタムセクションを追加した時に、
「属性○○のスキーマ情報が見つかりませんでした」と[メッセージ]でエラー一覧に表示されました。
でも問題なく動作してるのでそのまま続けてみます。
ありがとうございました。

411 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:48:26 ]
>>409
document.body.innerText
つーかおもっくそスレ違い

412 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 09:52:11 ]
>>407
ソースコードから実行てのはふつーにできるから調べてみれば?
使い物になるかは別だが。


413 名前:デフォルトの名無しさん [2008/01/22(火) 18:24:43 ]
CSVの質問です。

//string FileName = "二バイト文字テスト";
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(str.ToString() + ".csv"));

上記のようにファイル名が2バイトになっても正常に「開く」「ダウンロード」「キャンセル」
のダイアログが出るようにしています。

ダウンロードした場合は日本語が含まれたファイル名でダウンロードできます。
「開く」をクリックした場合、エンコードされたファイル名で開こうとしてしまいます。

解決方法はありますか?
よろしくお願いします。

414 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:26:53 ]
あげてしまった・・・

補足で、開くを選択した場合エラーになります
エンコードされたファイル名を開こうとするためです。

415 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:04:33 ]
誰かが作ったクラスライブラリを利用する時は、exeと一緒にそのdllも付けなきゃならないの?
C/C++のスタティックリンクライブラリみたいにexeファイルに組み込むことできないのかな?

416 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:06:44 ]
ilmerge

署名されてたら無理だけど

417 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:43:44 ]
>>416
thx



418 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:48:44 ]
文字列を表示するときに文字の間隔を標準
(Graphics.DrawString で表示されるときの文字間隔)
より1ドットずつ狭めて表示したいと思います。

思いついたのは ExtTextOut を使用する方法ですが、
それ以外の方法(できれば p/invoke を使わなくていいような)
があったら教えてください。


419 名前:デフォルトの名無しさん [2008/01/22(火) 22:55:21 ]
Frameworkで定義されているコンストラクタを持たないクラスを使用したい場合、
どのようにすれば使えるのでしょうか?

仮に、public sealed class ModelBoneというコンストラクタが無くプロパティのみを持つ
クラスのインスタンスをローカルで一時使用したいとします。

ModelBone bone = new ModelBone(); としても
'Microsoft.Xna.Framework.Graphics.ModelBone' のコンストラクタが定義されていません'
のエラーが表示されてインスタンスを作成できません。


420 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:57:21 ]
無理
他にインスタンスを取得する方法が用意されてるはずだからそれに従う

421 名前:420 mailto:sage [2008/01/22(火) 23:02:25 ]
ちょっと見てみたけど、ModelBoneに関してはContentManager.Loadで
モデルと一緒に読み込むしかないんじゃないかな

422 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:03:23 ]
>>418
一文字ずつMeasureCharacterRangesで測ってRectangleF作って
DrawStringすりゃいいんじゃね


423 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:22:23 ]
>407
Windows PowerShell使えよ。

424 名前:419 mailto:sage [2008/01/23(水) 00:37:32 ]
>>420
やはりインスタンスは作成できないのですか・・・。
このクラスが持つプロパティを自前クラスの関数の引数で使用したくなり、
Frameworkのクラスからインスタンスを作成できない場合
全く同じプロパティとコンストラクタを持つクラスを改めて
定義しなければならないからどうしたものかと悩んでいました。

とりあえず出来ないことが分ったので、他の方法を検討してみます。
ありがとうございました。

425 名前:デフォルトの名無しさん [2008/01/23(水) 01:15:38 ]
>>423
ぜんぜん手軽じゃないじゃん。

426 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 06:25:57 ]
>>420
拡張メソッド使っても無理?

427 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 07:40:21 ]
そもそも、勝手にインスタンスを作られると不都合だから、わざわざコンストラクタを定義してないわけだ。



428 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 09:20:32 ]
>>426
拡張メソッドにどんな幻想を持ってるんだ

429 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:19:50 ]
>>428
なんでもできるはず

430 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:28:13 ]
拡張メソッドのおかげで魔法使いにならずにすみました

431 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:38:00 ]
formA、formB、formCがあり、
A→B、A→Cと呼び出すとします。
formBで取得したテキストボックスの値を、formCで参照したいときはどのようにしたらよいでしょうか?

432 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:39:45 ]
formAがformBから値を取得してformCに渡せばいい

433 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:45:53 ]
渡すときはどうしたらいいでしょうか?
FORMC fc = new FORMC(/*取得した値*/);
でしたっけ?

434 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:08:35 ]
コンストラクタでもプロパティでもお好きなように


435 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:13:26 ]
ところで、そのformB、formCはそれぞれ、formAからShowDialog()で呼んでいるのですが、その場合も
>>434さんの言うとおりでいいのでしょうか?

436 名前:デフォルトの名無しさん [2008/01/23(水) 11:17:23 ]
interface I1,I2,I3(既成の外部ライブラリ)があったとして、
I1 i1 = new I1();
I2 i2 = new I2();
i1.hoge = (I3)i2.hage();
みたいなコードがあるのですが、(I1〜3は既成の外部ライブラリ)

それぞれのinterfaceで定義されているメソッドの実態はどこで定義されているんでしょうか?

やりたいのはi1にひとつ例えばvoid moe(string str)みたいなメソッドを追加したclass or interfaceを作って
void moe(string str){
i1で定義されているメソッドをコール;
}
みたいな感じにしたいのですが、何から手をつけていいのかわからなくて困っています。

よろしくお願いします。

437 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:17:55 ]
お前は何を言ってるんだ
ShowDialog()で呼ぼうとコンストラクタには関係ないだろう



438 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:41:18 ]
>>436
I1 i1 = new I1();
I2 i2 = new I2();
↑      ↑
ここ  と  ここ を

よーく見比べてみよう

439 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:56:15 ]
印刷で困っています。
ツールボックスから印刷プレビューのダイアログ(PrintPreviewDialog)をそのまま利用しています。

プレビューでは,意図した画像が正しく表示されるのですが実際に印刷すると一ページだけ
真っ黒に印刷されてしまいます。
これを解決するためにはどこを調べなければならないでしょうか。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:10:23 ]
他のソフトから印刷してみてどう?

441 名前:436 mailto:sage [2008/01/23(水) 13:10:57 ]
>>438さん
れすありがとうござます。

見比べて見たのですが、やはりinterface同士でなにがおこっているのか理解出来ません

new Interface();
という構文自体が何をしているのかわからないのですが、
もう少しヒントいただけないでしょうか?

442 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:26:54 ]
>>441
よく見ろ。newしているほうはインターフェイスではないはず。

443 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:38:08 ]
>>440さん
お返事ありがとうございます。
ほかの印刷ソフトでは正常でした。
PrintDocumentのデータはどのタイミングで破棄されるようになっているんでしょうか?
何度やっても再現してしまいます。。。

444 名前:436 mailto:sage [2008/01/23(水) 13:40:26 ]
何度見てもinterfaceです。
そのインターフェースの定義を見ると
[Guid("hoge")]
[CoClass(typeof(I2cls))]
public interface I2 : I4
{
}

とかになっていてどうも思っている異常に複雑そうなのであきらめます。
ありがとうございました。

445 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:45:19 ]
C#のGetFilesのメソッドについて質問なんですが
複数の拡張子(この場合jpg、gif、png、bmp)で
絞り込むのはどう書いたらいいんでしょう?

446 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:46:47 ]
>>445
Path.GetExtensionすりゃいいじゃん

447 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 14:13:02 ]
>>444
CoClass属性のが実体クラス。



448 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:50:08 ]
>>445
C#の、ってここはC#スレだ、決まってんだろ、ハゲ
第一C#の、じゃなくて.net frameworkの、だろ、ハゲ
それにクラス名まで、書けや、ハゲ

Directory.GetFilesならsearchPatternとるオーバーロードがあるっしょ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:20:38 ]
ツンデレの>>448に萌えた

450 名前:デフォルトの名無しさん [2008/01/23(水) 17:48:10 ]
>>448
揚げ足とるな。ばか!!!!!!!!!!!!!!

451 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 17:50:18 ]
>>450は騙り?

452 名前:デフォルトの名無しさん [2008/01/23(水) 18:47:52 ]
トランザクションオブジェクトつくって
INSERTとかUPDATEとかしたあと
コミットもロールバックもしないとどうなりまつか?

453 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:40:34 ]
コネクション閉じる時点でロールバック。
だったと思うけどプロバイダに依存しそう。
ものによっては保留状態になるかも。
いや、手動トランザクションなら保留はないかな?


454 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:36:10 ]
>>453
トンクス
SQL Serverだとそんな感じみたいでつね

455 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:26:09 ]
TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。
あるタイミングで,Text

456 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:31:33 ]
すいません,誤って途中のものを書き込んでしまいました。

TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。
あるタイミングで,TextBoxとRichTextBoxのレイアウトを Fixed3D から FixedSingle
に一気に変更しようとしています。

テキストボックスの変更はできたのですが,同様の方法でRichTextBoxの変更ができませんでした。
以下のようにしたのですが,何が問題でしょうか。
RichTextBox rtb = new RichTextBox();

foreach(Object ctrl in tabControl1.SelectedTab.Controls)
{
if(ctrl.GetType().Equals(rtb.GetType()))
{
rtb = (RichTextBox)ctrl;
rtb.BorderStyle = BorderStyle.FixedSingle;
}
}

457 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:56:04 ]
>>456

・まず直接フォームのリッチテキストのフィールドで同じことをしてどうなるか
 確認しよう。

・ブレークポイントの使い方を覚えよう。

・こんなくだらないことでいちいち悩んでるようなら、君才能ないのかも



458 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:10:40 ]
RichTextBox rtb = new RichTextBox();
こうしてから、
if(ctrl.GetType().Equals(rtb.GetType()))
こう判定して、
rtb = (RichTextBox)ctrl;
こうやってしまうところに並々ならぬ才能を感じた。


向いてないよ、やっぱり。

459 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:19:16 ]
なれてないだけ

as null

460 名前:456 mailto:sage [2008/01/24(木) 00:24:57 ]
>>458さん
ご指導ありがとうございます。
勉強になります。

>>459さん
nullなんですね。
ありがとうございます。

デバッガの使い方も分からず,すいません。
ブレークポイントを指定してBorderStyleを見てみるとちゃんとFixedSingle
になっていました。
RichTextBoxはFixedSingleにしても表示が変わりませんでした。
もしかして,そういうものなんですかね。

461 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:47:41 ]
if(ctrl is TextBox)
って,できるんですね...orz

462 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:10:50 ]
キャストするならctrl as TextBoxとしてnullかどうか見た方がいい。

463 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:12:35 ]
>>462
ありがとうございます。
459さんのヒントを頂き,そのようにしました。
型判定について全く無知でした。。。

464 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:11:02 ]
検討違いなこと言っていたらすみません

public static void func(string str1, string str2, bool flag){
 処理
}
このような文字列を2つと論理型で1つを引数とする関数を再帰的に呼び出す部分なのですが
今現在作成中のプログラムの中で、この関数による処理がほぼ全てのようなものです

なのでこの再帰的にこの関数を呼び出すという部分について何か最適化の方法がないかと探しています

関数内の処理はforeachと.NET内のクラスを利用したものでほぼ埋まっているため
そちらに関しては最適化はやりようがないかなと思っています

それではよろしくお願いします

465 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:21:53 ]
>>464
プログラムの概要を教えてもらえんとなんともなぁ
そもそも本当に再帰が必要なのかもわからないし

466 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:42:20 ]
>>465
すみませんでした、書くと長いので概要を

str1にはディレクトリへのパスを(こちらをA)
str2にはまた別のディレクトリへのパスを(こちらをB)受け取ります。

Bが存在するか確認
A内に存在するファイルを探していきながら、随時B内にA内のファイルを移動していく

その後、A内でディレクトリを検索し、無ければ終了、発見した場合
(今現在のstr1とstr2の値が以下だとしたら
 str1 C:\aaa
 str2 D:\xxx)
A内でディレクトリ検索をして見つけたものが
C:\aaa\abcだとすると
func("C:\\aaa\\abc", "D:\\xxx\\abc", true)
こんな感じで自信を呼び出します

つまりBディレクトリ以下にAディレクトリをサブフォルダ内等一切合財移動させるという感じです


467 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:49:16 ]
最適化する意味はどこにもないな。
せいぜい再帰やめることで万が一のStackOverflowを回避するぐらい。



468 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:06:46 ]
再帰させる必要ないでしょ。
Private Sub moveFile(ByVal a As String, ByVal b As String)
Directory.CreateDirectory(b)
Dim files() As String = Directory.GetFiles(a, "*.*", SearchOption.AllDirectories)
For Each f As String In files
Dim newpath As String = f.Replace(a, b)
Dim newdir As String = Path.GetDirectoryName(newpath)
Directory.CreateDirectory(newdir)
File.Move(f, newpath)
Next
End Sub

469 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:22:56 ]
なんでVBなんだよ。死ぬほど読みにくいわ
466は書くと長いって書いてるんだから
全部のファイルじゃなくて、何か条件付けがあるんだろ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef