[プログラム板] C#, C ..
577:デフォルトの名無しさん
08/08/01 15:10:13
>575
URLリンク(www.google.co.jp)
578:デフォルトの名無しさん
08/08/01 17:21:50
>>571
DLLっすか。それで引っ張ってこれるなら・・・。
中々情報がないですが、漁って見ます。
>>573
サポセンあるにはあるんですが、質問したら
激しく役に立たないサンプルソースがヤル気なく返ってきました。('A`
相談したいんですが、社内での導入が実質初なので。
まともに使ったこと有る人、他にいないんです。
サンプルコード・・・一部抜粋して書いてみました。
役に立たなそうですが。(´Д`;
MessageItem frm_ENG;
public override void OnStart()
{
frm_ENG = GetMessage("ENG");
StartTimer("ENG",200);
Start_test();
}
[Timer("ENG",200, false , false)]
public void OnTimer_t_ENG()
{
StartTimer("ENG",200);
SendMessage(frm_ENG);
}
public void Start_test(){
WriteLine("start");
}
共通的に記述が2500行位で、それを百前後作るんで、
できれば引っ張ってきたいんですよね。
579:デフォルトの名無しさん
08/08/01 17:22:32
>>577
情報、どうもありがとうございました。
助かりました、すぐ調べてみます!
580:デフォルトの名無しさん
08/08/01 19:55:51
>>578
C#つかOO言語触ったことなくね?
581:デフォルトの名無しさん
08/08/01 21:24:42
>>578が2chでヤル気なく質問してきた理由がわかった('A`
気の毒すぎるw
C#とWindowsAPIが混ざってるよね…
Timerを属性指定にして
メソッドに依存させてしまっているあたりセンスのなさが感じられるww
とりあえず>>578が何をやりたいかということと
サンプルソース全部と
あともう微妙にスレ違いなんで、
どっかの放棄されたスレに移るかして、
腰を据えて分析するよりないんじゃないかなw
パズル感覚で協力してくれる人いると思うよww
582:デフォルトの名無しさん
08/08/01 22:08:48
codedom使ってコンパイルしてるだけでC#なんだと思うよ
つか常識的に考えて#includeで展開とか不要でそ…
どんな状況なら必要なんだよ…
583:デフォルトの名無しさん
08/08/01 22:45:15
よくわからんけどincludeなんて前世代的だとおもう
584:デフォルトの名無しさん
08/08/01 23:01:12
なんという蘭学事始。
585:デフォルトの名無しさん
08/08/01 23:27:49
>>583
そうかもしれんが、かといってグローバルな(つまりファイルスコープじゃない)
コンパイル定数を定義しようと思ったらプロジェクトのプロパティに
ちまちま書かなければならん不便さを進歩と言ってよいのか疑問でもある。
586:デフォルトの名無しさん
08/08/01 23:32:02
>>585
定数も、const じゃなくて、static readonly なプロパティ使うことが推奨されてるしなぁ。
private/internal な場合か、円周率みたいに絶対変わらない値だけ const。
587:デフォルトの名無しさん
08/08/01 23:33:43
定数だったら、たとえばColor.Redみたいに、クラスのpublicな要素でぜんぜん不便を感じてないけど。
そういうことじゃなくて?
588:デフォルトの名無しさん
08/08/02 00:03:34
お前は黙ってろ
589:デフォルトの名無しさん
08/08/02 00:05:26
お前がだまれ。
590:デフォルトの名無しさん
08/08/02 02:37:56
>>587
プリプロセッサシンボルを使いたいんだろうね
>>585はプロジェクトのプロパティでしか設定できないと思い込んでいるらしいが
591:デフォルトの名無しさん
08/08/02 05:28:26
>>583
クラス定義とか、テキストエディタさえあればヘッダ除けばすぐに判る点とか、
C/C++やってきた自分としては好きですけどね
592:デフォルトの名無しさん
08/08/02 08:38:54
クラス定義は嬉しいけど、インクルードする順番によってコンパイルが通らなくなったりするのは最悪だった
593:デフォルトの名無しさん
08/08/02 08:56:42
>>591
俺は C++ やってるからこそ、
あのヘッダシステムのせいで
クラスの依存性切るのに pimpl みたいなおまじないが必要だし、
コンパイル速度が低下するし、
インテリセンスの効きが時々おかしくなるし、
include が大嫌いなんだが。
594:デフォルトの名無しさん
08/08/02 09:58:15
C、C++のincludeが遅いのはマクロのせいでしょう
595:デフォルトの名無しさん
08/08/02 10:01:48
C++の
の間違いじゃない?
Cはよほど下手な組み方でもしなければそうそう遅くならないでしょ
596:デフォルトの名無しさん
08/08/02 10:01:52
#includeが欲しいだけならプリプロセッサでもかませばいいじゃん。
597:デフォルトの名無しさん
08/08/02 10:22:18
目立つのはC++になるね。
でもCも速度としては遅いし、ヘッダーを1バイトでも書き換えたら
includeしてる全てのソースファイルを再コンパイルになるのはかわらない。
そういう意味でも遅いよ。
もしマクロがなくて、クラスや関数の定義のみであるなら
リアルタイムコンパイルも可能だよ。
598:デフォルトの名無しさん
08/08/02 10:22:40
C みたいな関数宣言と #define だけのためにあるシステムを、
C++ でクラス定義でも使いまわしたのがそもそもの失敗じゃないか。
private な変数1個追加しただけで、#include してるファイル全部再コンパイルとか
狂ってるとしか言いようがない。
599:デフォルトの名無しさん
08/08/02 10:26:47
そこでpimplイデオムですよってスレ違いじゃねぇかよ
600:デフォルトの名無しさん
08/08/02 10:41:17
>>590
すまんその「思い込んでる」のは俺だけど、
俺の「思い込み」だというならもったいぶらずに君のいう別の方法を教えてくれよ。
分かってると思うけど議論の流れからいってIDEでプロジェクトの設定いじるより
不便な方法だったなんの意味もないわけだが、そこは踏まえて頼むよ本当。
601:デフォルトの名無しさん
08/08/02 11:11:56
>>600
普通に教えてくれでいいんじゃね?
頼みかた感じ悪いと思う
いつもそうなん?
602:デフォルトの名無しさん
08/08/02 11:35:10
VSのマクロでCSharpProjectConfigurationProperties3.DefineConstants触るとか
603:デフォルトの名無しさん
08/08/02 11:39:48
>>599
既出 >>593
>>600
定数定義用の static なクラス作って、
絶対に変わらないと言い切れる定数は public const フィールド、
そうでなければ public static readonly なプロパティ。
604:デフォルトの名無しさん
08/08/02 11:41:14
あと、#if SYMBOL 用のシンボル定義は、
むしろヘッダファイルでできるべきではなく、プロジェクトのプロパティですべき
というのが MS の判断。
605:デフォルトの名無しさん
08/08/02 11:54:44
>>604
なんだよやっぱりプロジェクトのプロパティでしか出来ないんじゃないかw
だから「べき」って、確かにそうかもしれんがその不便さを進歩って言えるんかい、
つってんだよ。
606:デフォルトの名無しさん
08/08/02 11:55:40
設定ファイルを直にいじれよ
607:デフォルトの名無しさん
08/08/02 12:06:03
多重継承禁止とかもべき論で導入されたわけで
608:デフォルトの名無しさん
08/08/02 12:10:29
DebugやReleaseの他にもプロジェクト構成を作って切り替えるのが正攻法
逆にいえばそれで足りる用途にしか使ってほしくないんだろう
609:デフォルトの名無しさん
08/08/02 12:12:34
C++はtemplateを導入した時点で、#includeでマクロがどうこうといった次元からすでに超越してる。
技術的には可能でもC++のtemplateを模倣する言語は現れないだろう。
610:デフォルトの名無しさん
08/08/02 12:14:17
C++はあと文字列mixinみたいな機能が入れば完全にプリプロセッサと縁が切れるな
611:デフォルトの名無しさん
08/08/02 12:17:23
>>605
これのことでしょ
URLリンク(msdn.microsoft.com)
暑いんだからあんまりぎゃーぎゃー喚くなよ
612:デフォルトの名無しさん
08/08/02 12:25:45
>>609
Dとかどうよ
613:デフォルトの名無しさん
08/08/02 12:30:47
>>608
それが正攻法だというのは否定してないよ。
構成の切替方法はあれで便利だし。
ただIDEのあのたった一行の入力欄に「全部の定数を定義する必要がある」のは
不便で使いにくいって言ってるだけ。
しかも(当たり前だが)作った構成の数だけ同じことをする必要がある。
そこにミスが入った場合、非常に発見しにくいとも思うんだが。。
614:デフォルトの名無しさん
08/08/02 12:38:02
あっちこっちのファイルに飛び散るより遥かにましだと思うが
615:デフォルトの名無しさん
08/08/02 14:36:11
>>605
「できる」みたいに言ってるやつと >>604 は別人だろ。
できる風に書いてるやつは多分よく読んでないだけ。
要するに、お前の書き込みによく読む価値はないと判断されてる。
616:デフォルトの名無しさん
08/08/02 14:50:34
実に自分を世界の中心に置く「セカイ系」的発想だね。
俺やアイツの誤読はお前の文章に読む価値がないからだ、ってかw
まあ、自分を世界の中心に「俺様中華思想」もいいかもしれんが、
だったら自分の言葉を自分に適用したらどうだろう。
つまりもう少し他人にとって有益な情報を書けよって意味だが。
617:デフォルトの名無しさん
08/08/02 14:51:54
黙ってスルーする能力もないのかよ
618:デフォルトの名無しさん
08/08/02 14:54:44
能力というのは目的合理的に物事を推進する力のことを言う。
では「スルーする能力」という時の「スルーする」ことの目的ってなんだ?
少なくとも俺にとってはそんなものはない。
むしろ馬鹿は叩いておいた方が場のため本人のため、そして自分自身の精神衛生のため、
と思っての行動なんだけどね。
619:デフォルトの名無しさん
08/08/02 14:59:03
というか .csproj はただの MSBuild の XML ファイルなんで
テキストエディタで開いてゴリゴリ編集できるんだがそういう
基本的な話は知らんのか?
VS からならプロジェクトのアンロード → **.csproj の編集。
…ついでに言うと、VS 側の CSharpPackage が変な proj ファ
イルでも普通に動くので VsPackage めんどいとき(ビルドとIDE
から適当にファイルが見えて編集できればいい)は .csproj 流用
するといいみたいな。
620:デフォルトの名無しさん
08/08/02 15:27:10
csprojのほうはいいんだが、slnのほうは変なGUIDが付いてるので手でいじれん・・・
どっかに何入れればいいか公開されてるのかな?
621:デフォルトの名無しさん
08/08/02 15:36:53
適当でいい
622:デフォルトの名無しさん
08/08/02 15:58:49
ソリューション周りの情報なら VSSDK の
URLリンク(msdn.microsoft.com)
この辺しか知らん。
・・・が、俺は基本的にいじるのは IDE 上からだなぁ。依存関係とか。
623:デフォルトの名無しさん
08/08/03 10:39:27
XmlSerializerでstaticなクラスをXMLに保存できないですよね?
アプリ設定情報をstaticにしてどのクラスからもすぐに楽に参照したいんですけど、
staticクラスにするとXmlSerializerは使えないですよね?
624:デフォルトの名無しさん
08/08/03 10:41:21
シングルトン
625:デフォルトの名無しさん
08/08/03 10:49:08
>>623
・MySettingクラス(仮称)をstaticクラスじゃなくてsingletonにする。
または
・MySettingクラスはstaticのまま、内部の実装としては別のHogeSettingクラスの
インスタンスをもちこいつをXMLシルアル化するようにして、外部にはSaveSetting/LoadSetting
メソッドを公開する。
626:デフォルトの名無しさん
08/08/03 11:20:33
シングルトンでいきます
ありがとうございました!
627:デフォルトの名無しさん
08/08/04 11:32:44
stringの配列を指定した列挙型の組み合わせに変換したいのですが、
@のところでコンパイルエラーになってしまいます。
どのように実装したらいいんでしょうか・・・
public class ConvertToEnum<T> where T : Enum ←@
{
private T _value;
public class ConvertToEnum(string[] texts)
{
foreach (string s in texts)
{
_value |= Enum.Parse(typeof(T), text, true);
}
}
public T Value
{
get { return _value; }
}
}
[Flags]
public enum TestEnum
{
AAA = 001, BBB=002, CCC=004
}
string[] texts = { "AAA", "BBB", "CCC" };
TestEnum value = ConvertToEnum<TestEnum>(texts).Value;
value : 007
628:デフォルトの名無しさん
08/08/04 11:45:19
コンパイルエラーの内容読むこともできないの?
enumとかdelegateとかで制約は無理
629:デフォルトの名無しさん
08/08/04 15:00:54
staticコンストラクタでif (!typeof(T).IsAssignableFrom(typeof(Enum))) throw new Exception();
でおk
でもその例でクラスにする意味がわからない
ConvertToEnum<T>(string[] text)でいいよね
630:デフォルトの名無しさん
08/08/04 17:51:29
>>629
クラスにしたのは元のソースがクラスだからです
必要な部分だけ残したら上の形になりました
えーと、Generic制約でEnumを指定できないと、
Aの部分の | 演算子が使えません…
foreach (string s in texts)
{
_value |= Enum.Parse(typeof(T), text, true); ←A
}
_valueをint型にしてもBの部分でコンパイルエラーです…
public T Value
{
get { return (T)_value; } ←B
}
上手な実装の仕方はないでしょうか…
631:デフォルトの名無しさん
08/08/04 18:02:54
リフレクション
632:デフォルトの名無しさん
08/08/04 18:24:52
where T : struct, IConvertible としておいて
value = default(T);
foreach (string s in texts) {
value = (T)Enum.ToObject(typeof(T), value.ToInt32(null) | ((T)Enum.Parse(typeof(T), s, true)).ToInt32(null));
}
633:デフォルトの名無しさん
08/08/04 18:45:43
List<List<int>>型変数に入ってるすべてのintを返すIEnumerable<int>がほしいんだけど、
Linqとか使うと1行で可能?
634:デフォルトの名無しさん
08/08/04 18:59:33
listlist.SelectMany(list => list);
635:デフォルトの名無しさん
08/08/04 19:08:50
>>634
ありがd。
636:デフォルトの名無しさん
08/08/04 19:30:09
|=を使わんでも、文字列をカンマ区切りにして、
Keys k = (Keys)Enum.Parse(typeof(Keys), "Control, Alt, T", true);
みたいにすればいい。
637:デフォルトの名無しさん
08/08/04 20:49:00
>>634
おおそんなのが・・・
638:デフォルトの名無しさん
08/08/04 21:19:43
>>634
こういうのが頭の中にすんなり入ってこないorz
639:デフォルトの名無しさん
08/08/04 21:32:35
var array = new[] { new {A="あ", B="いう"}, new { A="え",B="お" } };
var flat = array.SelectMany(x => new[] { x.A, x.B });
Console.WriteLine(string.Concat(flat.ToArray()));
こういう例のほうがわかりやすいかな
640:デフォルトの名無しさん
08/08/04 21:35:33
ラムダ式を華麗に扱えるようになりたい
641:デフォルトの名無しさん
08/08/04 21:40:18
C#3.0でRayToracingとかのArticleあったけれど、あのソースがラムダ使いこなしたサンプルの一つとみていいもんかね。
642:デフォルトの名無しさん
08/08/04 21:46:35
バイト配列の変換について教えてください。
バイナリファイルよりReadAllBytesでデータをバイト配列に格納後、指定の
バイト数分のデータを2進数の文字列に変換するメソッドを作成しています。
8バイトまではBitConverterメソッドで数値変換し、Convert.ToStringで
2進数の文字列に変換できるのですが、9バイト以上はBitConverterメソッドが
対応していません。この場合、何か良い方法があるのでしょうか?
よろしくお願いします。
643:デフォルトの名無しさん
08/08/04 21:48:22
手抜きするならBitConverter.ToStringとString.Replace
644:デフォルトの名無しさん
08/08/04 21:49:07
どうでもいいが数値変換したらリトルエンディアンになっちゃうぜ
645:デフォルトの名無しさん
08/08/04 22:09:26
クリスタルレポートとMicrosoft.Reportingのどっちを使おうか悩む。
普通なら昔からあるものは情報も豊富でバグも枯れてて使いやすい
はずだが、クリレポは悪評ばかり・・・
646:デフォルトの名無しさん
08/08/04 23:09:18
>>638
このケースではクエリ式の方がとっつきやすいかな。
from list in listlist
from x in list
select x;
慣れてくればSelectManyを思い出せるようになる。かも。
ILではどっちでも同じことなんだけど。
647:デフォルトの名無しさん
08/08/04 23:24:50
>>638
SelectMany は正直無理だと思う。
そのために、
from listist in listlist
from x in list
select x
みたいな記法がある。
これで listlist.SelectMany(list => list) と同義のはず。
648:デフォルトの名無しさん
08/08/04 23:26:01
>>641
あれは結構邪道だけどな。
クエリ式が関数型言語っぽい記述できるのをいいことに、
C# 内で関数型言語プログラミングしてるっていう。
クエリ式の目指すところではなくて、副産物的なものだと思う。
649:デフォルトの名無しさん
08/08/04 23:56:31
Validatorクラスでの正規表現チェックって
クラサバでもwebでも使えますか?
650:デフォルトの名無しさん
08/08/05 02:19:49
>>633 >>634 に便乗して、
List<List<List<int>>> listlistlist; から IEnumerable<int> を得るには、
listlistlist.SelectMany(listlist => listlist).SelectMany(list => list);
か、
listlistlist.SelectMany(listlist => listlist.SelectMany(list => list));
みたいな感じでOK?
もっと良い書き方があったりするのかな?
651:デフォルトの名無しさん
08/08/05 05:45:41
>>650
それでOK。
652:デフォルトの名無しさん
08/08/05 08:49:25
>>650
それでもいいけど、それは関数化すべき気がする。
static IEnumerable<T> Concat<T>(IEnumerable<IEnumerable<T>> listlist)
{
return listlist.SelectMany(list => list);
}
を作って、Concat(Concat(listlistlist));
653:デフォルトの名無しさん
08/08/05 08:55:21
メソッドと関数って何が違うの?
654:デフォルトの名無しさん
08/08/05 08:56:39
メソッドはクラスの一部だけど関数はそうじゃなかったような・・・
というか関数はそもそもC時代の名残だし
655:デフォルトの名無しさん
08/08/05 09:03:34
>>653
昔の名残。
OOP 用語的にはメソッド、昔の名残的にはメンバ関数。
単に関数っていうと、グローバル関数(C# では定義できない)のことだけど、
非 OOP 言語ではグローバル関数として定義するような static メソッドのことを関数って呼んだりする。
関数化ってのも、メソッドとして独立させろって意味。
サブルーチン化って言った方がいいかも。
656:デフォルトの名無しさん
08/08/05 09:08:55
サブルーチンって更に化石用語な気が。
657:デフォルトの名無しさん
08/08/05 09:29:32
Procedure / Function、Sub / Function のように
関数とサブルーティンを分ける言語も多いね。
サブルーティンを戻り値のない関数としたのはCあたりからだったかな。
658:デフォルトの名無しさん
08/08/05 10:25:21
BackGroundWorkerとThreadってどっちがパフォーマンスいいの?
659:デフォルトの名無しさん
08/08/05 10:38:04
気にするほどのもんでもない
660:デフォルトの名無しさん
08/08/05 11:21:39
>>307
.Where 以降の構文は、3.5から追加されたものだと
思うのですけれども、なんと呼称されているでしょうか?
オブジェクト内のメソッド呼び出しのようですし
Linq とはまた別の新しい技法のような気がします。
てか、Where, ToList, ForEach が一般的過ぎて検索しにくい・・・
661:デフォルトの名無しさん
08/08/05 11:22:42
拡張メソッド
実態は静的メソッドの呼び出し
662:660
08/08/05 11:39:51
URLリンク(72.14.235.104)
というかドキュメント嫁、じぶん
基本型のbuiltin関数を暗黙的にオーバーロードしてる
いうのが何か引っかかる・・・Where, ToList, ForEachは
どこに所属してるメソッドなのかという、Linq難しいな…orz
663:デフォルトの名無しさん
08/08/05 11:53:22
for m in Assembly.LoadFrom("Hoge.dll").GetType("Hoge.Tool").GetMethods():
where(m => (!m.IsPublic && !m.IsPrivate && m.Name[0] == 'A')):
for elm in m.ToList():
Console.WriteLine(elm)
.Where(m => (!m.IsPublic && !m.IsPrivate && m.Name[0] == 'A'))
.ToList().ForEach(Console.WriteLine);
sql みたいな書き方をしてる事例ちょくちょく見かける
あれはシンタックスシュガーみたいなもんかしらん
URLリンク(209.85.175.104)(VS.80).aspx+IsPublic+IsPrivate&hl=ja&ct=clnk&cd=3&gl=jp&lr=lang_ja
IsPublicは fieldinfo のメソッドか・・・
C#だとメソッドもフィールドの一種なのかな、C++と違うとか
664:660
08/08/05 12:01:18
URLリンク(209.85.175.104)
ドよめ
滝に打たれてチネ…orz
665:デフォルトの名無しさん
08/08/05 22:50:40
>>660
それもLINQ。
from x in list where x > 10 select x; みたいなのはLINQクエリ式。
list.Where(x => x > 10); みたいなのはメソッド形式のLINQ。
>>663
そう、構文糖衣。
from x in listX
from y in listY
select x * y;
みたいな構文が、メソッド形式ではどうやってもスマートな書き方できなかったから導入されたらしい。
666:デフォルトの名無しさん
08/08/05 23:37:27
>>665
その例だと
listX.SelectMany(x => listY, (x y) => x * y)
こうなるけど、例としては不十分な気がする
これくらいにしないと
from x in listX
from y in listY
where x > y
select x * y;
listX.SelectMany(x => listY, (x, y) => new { x, y })
.Where(z => z.x > z.y)
.Select(z => z.x * z.y);
あと、let入るとさらに面倒になるな
667:デフォルトの名無しさん
08/08/05 23:45:10
user32.dllのAnimateWindow()を呼び出しているのですが、
CPU負荷が大きくてガクガクします。
負荷を下げる方法ってありませんか?
668:デフォルトの名無しさん
08/08/06 00:03:44
AddRange()に二次元配列を渡す方法はないですか?
669:デフォルトの名無しさん
08/08/06 00:13:20
>>668
直接は無理。
LINQ 使って軽い変換かければ可能。
例えば、int[ , ] array なら l.AddRange(array..OfType<int>());
int[][] なら l.AddRange(array2.SelectMany(x => x));
670:デフォルトの名無しさん
08/08/06 00:57:12
乙です。
671:デフォルトの名無しさん
08/08/06 02:23:30
>>666
外部結合になるとクエリ式でももうわけわからん
var r2 =
from x in "abcdefghijklmn"
join y in "ABCDEFGHIZ"
on x equals Char.ToLower(y) into yex
from y in yex.DefaultIfEmpty('.')
select new string(new char[] {x, y});
672:デフォルトの名無しさん
08/08/06 05:36:57
VS2008EEを使用中です。
C#でDBを使うデスクトップアプリを作る場合、
DBは何を使うのがベストなのでしょうか?
とりあえずSQL compact3.5ってのを弄ってみましたが、
DBファイルが独立して作られてて、なんか妙な気分です。
ビルドしたらアプリに含まれるようになるんでしょうか?
ほかにXMLを使うやり方もあるそうですが、難易度高すぎる気がします。
なにか他にお勧めあったら、教えてくだちい。
673:デフォルトの名無しさん
08/08/06 08:23:08
DBをアプリに含めるってのの方が変じゃね?
LINQ使えばXMLもSQL Server Compactも大差ないと思うが。
674:デフォルトの名無しさん
08/08/06 08:27:51
>ビルドしたらアプリに含まれるようになるんでしょうか?
そんなん聞いたこともないわ。
Accessのイメージで言ってるのか?
675:デフォルトの名無しさん
08/08/06 09:10:50
Firebird使えばできなくもないがXMLで難易度高すぎなら無理だろうな
676:デフォルトの名無しさん
08/08/06 09:32:53
>>673,674
別になってるのが普通なんですね(汗
おっしゃるとおり、Accessのようなものをイメージしてましたorz
言われてみれば、Web系でもDBと処理は別になりますよね・・・
>>675
一応、ちょっとだけ弄ってみたんですが、
木構造が複雑になってしまい、これだったら慣れてるRDBのほうが楽かなと。
恥ずかしながらFirebirdは初耳でした。ちょっと調べてみます。
677:デフォルトの名無しさん
08/08/06 18:39:17
>676
何がしたいのか分からないけどXmlSerializerあたり調べてみたら?
678:デフォルトの名無しさん
08/08/06 19:15:20
「DBファイルが独立して〜」の意味が把握できないけど、アプリにDBを組み込ん
じゃいたいってことなら SQLite とかの組み込みDBって手があるよね。
679:デフォルトの名無しさん
08/08/06 19:34:28
>678
俺も>672を読んでそう思ったので組み込みDBにできるFirebirdの名前出した。
けど>676読んだら「RDBが使いたい」ってわけじゃ無い感じがしたんでXmlSerializer言ってみた。
680:デフォルトの名無しさん
08/08/06 20:23:58
コントロールのバインドはDBじゃなくてたんなる
int[]とかからも情報を取り込めるですか?
681:デフォルトの名無しさん
08/08/06 20:54:29
foreach (var msg in FizzBuzz(100)) {
Console.WriteLine(msg);
}
ということができるように、
public static IEnumerable<bool> Fizz() {
while (true) {
yield return false;
yield return false;
yield return true;
}
}
public static IEnumerable<bool> Buzz() {
while (true) {
yield return false;
yield return false;
yield return false;
yield return false;
yield return true;
}
}
682:デフォルトの名無しさん
08/08/06 20:56:28
public static IEnumerable<string> FizzBuzz(int max) {
var fizz = Fizz();
var buzz = Buzz();
foreach (var i in Enumerable.Range(1, max)) {
bool isFizz = fizz.First();
bool isBuzz = buzz.First();
fizz = fizz.Skip(1);
buzz = buzz.Skip(1);
if (isFizz && isBuzz) {
yield return "FizzBuzz";
} else if (isFizz && !isBuzz) {
yield return "Fizz";
} else if (!isFizz && isBuzz) {
yield return "Buzz";
} else {
yield return i.ToString();
}
}
}
こんな感じのメソッドを作ってみたのですが、複数のIEnumerableを並行して進めながら処理するforeachみたいなのってないのでしょうか?
自前でFizzとBuzzを1つずつ進めてるのがいまいちスマートじゃない気がして、複数のIEnumerableを並行して進める手軽な方法ってないでしょうか?
foreach (var i, isFizz, isBuzz in Enumerable.Range(1, max), Fizz(), Buzz()) {
とかみたいな雰囲気でまとめて書く方法ってないですか?
683:デフォルトの名無しさん
08/08/06 21:12:29
>>682
ZipWithみたいなのが欲しいということかな?
だったら、デフォルトでは存在しない。自作している人ならちらほら居る。
684:デフォルトの名無しさん
08/08/06 21:13:24
うん?
EXEとDBファイルが同じファイルになるのを期待してると思ったんだが。
Accessのイメージって言ってるし。
SQLiteもFirebirdもんなこたないんじゃないの?
SQL compact3.5だっておんなじようなもんでそ?
685:デフォルトの名無しさん
08/08/07 00:10:49
サーセン676です。
684さんのおっしゃる「EXEとDBファイルが同じファイル」を期待してました。
DBもMS謹製しか使えないかと思ってましたが、
他のも結構使えるようなので、改めて調べてみます。
686:デフォルトの名無しさん
08/08/07 00:36:50
C#プログラムでで正規表現を使っているのですが、
正規表現中にPerlのように
URLリンク(8-p.info)
string hoge = "hogehoge";
Regex r = new Regex(@".*hoge"); //hogehogeが展開される
のようにして変数を展開することはできるでしょうか?
687:デフォルトの名無しさん
08/08/07 00:46:55
普通に
".*" + hoge
では駄目な理由は何?
688:デフォルトの名無しさん
08/08/07 00:46:56
変数を展開って何?
689:デフォルトの名無しさん
08/08/07 00:48:21
ああ、そういうことか。
string.Format かなにかで文字列化してから Regex に食わせればOK。
文字列中に ".*$hoge" みたいに変数入れたければ PowerShell 使えばいいと思う。
690:デフォルトの名無しさん
08/08/07 01:35:37
685です。ありがとうございます。
変数を展開したい理由は何かと問われれば
変数hogeの文字列も外部の関数から取得してくるからです。
691:デフォルトの名無しさん
08/08/07 02:56:21
>>685?ん?
色々カオスってるぞ。
>>686のリンクも行けないぞ。
692:デフォルトの名無しさん
08/08/07 03:10:51
AllowsTransparencyをtrueにするとウインドウフレームが表示できなくなってしまうのですが、
System.Windows.Windowで下のSS最前面のウインドウのようにOpacityを使用するにはどうしたらいいのでしょうか?
最前面のウインドウはSystem.Windows.Formsです。
URLリンク(www.imgup.org)
693:デフォルトの名無しさん
08/08/07 10:52:52
質問です。
環境:C#2.0です。
あるファイルパスがあるとして、
同じディレクトリに別のファイルを作りたいとき、
どのようにファイルパスを作ればよいでしょうか。
(パスそのものを作らなくても書き込みできればよいので
FileInfoとかでもよいのですが)
string path1 = @"C:\xx\yy\aa.txt";
FileInfo file1 = new FileInfo(path1);
string path2 = file1.FullName.Replace(file1.Name, "bb.txt");
なんてもの考えましたが完全じゃないですし。
どうやるのが真っ当なやり方でしょうか。
いろいろ調べてみましたがわかりませんでした。
よろしくお願いします。
// javaで言うところの new File(directoryName, filename) なんてのが
// あればと思ったんですけど少なくともFileInfoにはなかったので
694:デフォルトの名無しさん
08/08/07 10:59:02
Path.GetDirectoryNameとかPath.Combineとか
695:デフォルトの名無しさん
08/08/07 11:33:51
ありがとうございます。調べてみます。
696:デフォルトの名無しさん
08/08/07 21:20:06
objectを引数に取る関数とかobjectのプロパティとかってクラスライブラリを見ただけじゃ
何をセットすればいいのか分からない場合が多いんですがどうやって調べればいいんでしょうか?
ググって事例を探してるんですが、事例が無いと完全にお手上げです。
697:デフォルトの名無しさん
08/08/07 21:23:07
千里の道も一歩から始まることを信じよう
それ、わんつーわんつー
698:デフォルトの名無しさん
08/08/07 21:26:37
確かに.netはobject型を引数に取るとか多いな。JavaでObject型を引数に取るのはあんまり見ないのに。
この辺って何か思想の違いみたいなのがあるん?
699:デフォルトの名無しさん
08/08/07 21:32:04
>>698
Javaはプリミティブ型がObjectを継承してないからじゃないの
700:デフォルトの名無しさん
08/08/07 21:36:16
いざとなったらReflectorで中追っかけてみる
701:デフォルトの名無しさん
08/08/07 21:37:41
>>698
そんなに多いか?
非ジェネリックなコレクション以外あまり思いつかないが…
702:デフォルトの名無しさん
08/08/07 21:40:11
非ジェネリックコレクションとIComaprableあたりは当然として、
WriteLineやString.Format系、Thread関係のデリゲート、
EventHandlerのsender、ほかなんだっけ。
703:デフォルトの名無しさん
08/08/07 21:43:01
ICloneable.Cloneがそう。共変性がないからobjectを返さないわけには行かない。
704:デフォルトの名無しさん
08/08/07 21:45:26
データソース関係とかobjectに何渡すのかわかりにくくないですか?
標準じゃないけど、nplotってライブラリも何を渡すのか分からなくてちょっと困った。
705:デフォルトの名無しさん
08/08/07 21:47:03
JavaとC#とでそういう差が出そうなGenerics関連の違いって思い浮かばないけどな。
706:デフォルトの名無しさん
08/08/07 21:51:09
データバインディングはそうですね。あれはリフレクション使いまくってるから。
707:デフォルトの名無しさん
08/08/08 00:15:33
C#とCだったらC#のほうが入門には適しているでしょうか?
708:デフォルトの名無しさん
08/08/08 00:18:56
うん
709:デフォルトの名無しさん
08/08/08 00:20:44
>>708
ありがとうございます。
それと、勉強するための本を買おうと思っているのですが
有名な物・お勧めの物はあるでしょうか?
710:デフォルトの名無しさん
08/08/08 00:56:16
>>709
ネットで十分
711:デフォルトの名無しさん
08/08/08 00:58:55
>>709
マジレスすると
URLリンク(ufcpp.net)
がおすすめ
712:デフォルトの名無しさん
08/08/08 01:02:11
>>711
ああ、それは俺もお勧め。
713:デフォルトの名無しさん
08/08/08 02:15:19
>>711
読ませていただきます。
ちなみにVC#というソフトでみなさんはプログラムを書かれているんですか?
714:デフォルトの名無しさん
08/08/08 02:16:28
うん
715:デフォルトの名無しさん
08/08/08 03:05:21
むしろテキストエディタとWindowsSDKでやってる人がいたら尊敬する
716:デフォルトの名無しさん
08/08/08 03:14:34
単なるバカだから尊敬できないな
717:デフォルトの名無しさん
08/08/08 03:16:32
.Netが出始めてたころはそれでやってた人もいたようだがな
無料版のIDEも無かったし
718:デフォルトの名無しさん
08/08/08 03:21:40
きちんと楽出来る環境が簡単に整えられるのに
わざわざ意味が無い苦労をする人がいたらそれは馬鹿だけど
そう言う環境が簡単には揃わない時代なら仕方ないじゃない
719:デフォルトの名無しさん
08/08/08 09:17:43
今のVC#はテキストエディタとしても異常に快適だからな
720:デフォルトの名無しさん
08/08/08 09:56:00
プライベートで他のクラスからアクセスする必要のないフィールドって内部クラス化した方が良い?
外部クラス?それとももっとスマートな方法ってある?
721:デフォルトの名無しさん
08/08/08 10:06:09
>>720
そのままプライベートのフィールドで持ってたらあかんの?
722:デフォルトの名無しさん
08/08/08 10:13:20
フィールド==インスタンスの話が何故かクラスの話になるから意味が分からなくなる
723:デフォルトの名無しさん
08/08/08 10:44:48
>>721
それじゃインスタンス1つ分にしかならなくね?
724:デフォルトの名無しさん
08/08/08 10:51:40
行数多くなるとVisualStudioのロードが遅くなるから分けようかと思ったんだけど、
実行時に無駄にオーバーヘッド生むよね、本末転倒だったね・・・
725:デフォルトの名無しさん
08/08/08 10:59:51
partialだかそんなのなかったっけ?
726:デフォルトの名無しさん
08/08/08 11:59:03
VSに負担掛けるほどたくさんの行にフィールドが宣言されてるの?
ロードの時間とか細かいパフォーマンス気にする以前の問題だろそれ
さすがに分けるべき
727:デフォルトの名無しさん
08/08/08 12:07:16
時代はパーシャル!
728:デフォルトの名無しさん
08/08/08 18:59:02
トラックで全国回ってた人だねw
729:デフォルトの名無しさん
08/08/08 22:45:56
>724
JITコンパイラの最適化を少しくらい頼ってみたら?
時々例外が起きたときのスタックトレースが妙に抜けてることがあって
インライン展開されてる様子がわかるとちょっと嬉しくなるよ。
730:デフォルトの名無しさん
08/08/09 18:42:15
簡単なエディタを作っているんですが、
RichTextBoxを使ってて、描画領域を少し右にずらして、その空いた領域に
行番号を描画しています。Graphics.DrawStringです。
当然スクロールされたら行番号を変えなくちゃいけないですが、このとき
再描画する前に前回描画した行番号を消すには、
どんな方法が一番最適なのでしょうか。
731:デフォルトの名無しさん
08/08/09 18:56:44
背景色で塗りつぶす
732:デフォルトの名無しさん
08/08/09 19:22:56
趣味でやるぶんにはExpress Editionで十分ですか?
733:デフォルトの名無しさん
08/08/09 19:25:03
趣味の内容によるかな。いわゆるベータ版マニアだとインストールできないアドインが
多いから十分じゃないかもしれない。
734:デフォルトの名無しさん
08/08/09 19:25:51
>>732
十分。
735:デフォルトの名無しさん
08/08/09 19:27:40
パッケージフェチとしてはやっぱり製品版じゃないと
736:デフォルトの名無しさん
08/08/09 19:32:03
ドMな俺はSDKとメモ帳が最高。
737:デフォルトの名無しさん
08/08/09 19:35:41
俺なんか仕事で評価版つかってるから大丈夫
738:デフォルトの名無しさん
08/08/09 19:36:52
>>733
何か使えない機能があるということですか
>>734
そうですか
>>736
頑張ってください
739:デフォルトの名無しさん
08/08/09 19:38:12
>>737
不具合はないですか?
740:デフォルトの名無しさん
08/08/09 19:40:25
silverlight2やSQLServer2008用のアドインはSTD版以上だったかな。
741:デフォルトの名無しさん
08/08/09 20:43:02
TextBox.Text = str;
とやっているのですが、strが大きいと処理時間遅くなるものなのですか?
str.Lengthが4320162だったのですが、10secくらいかかります。
中身のイメージではポインタのコピーとかではなく、実データを
コピーしているから遅いのでしょうか?
これを早くする方法はないのでしょうか?
742:デフォルトの名無しさん
08/08/09 20:44:08
TextBox使うのやめて、オーナードローにする
743:デフォルトの名無しさん
08/08/09 21:18:00
文字列代入の時だけ別スレッドで動かせばいいんですかね?
744:デフォルトの名無しさん
08/08/09 21:22:01
コントロールにはそれを所有しているスレッドからしかアクセスできん
745:デフォルトの名無しさん
08/08/09 21:26:41
>>742
の言ってる事は、
遅いのは文字列のコピーじゃなくて、その文字列の描画に時間が掛かってるんだよ
という事
746:デフォルトの名無しさん
08/08/09 21:33:15
4320162ってヘタしたらXPのソースコードよりデカい気がするんだけど
そんなものTextBoxに表示してどうしろとw
ちなみに、RichTextBoxで代替したらあんがいあっさり解決しない?
747:デフォルトの名無しさん
08/08/09 21:39:23
> XPのソースコードよりデカい
またまたご冗談を
748:デフォルトの名無しさん
08/08/10 00:08:05
>746
RichTextBoxだと7秒くらいでTextBoxで17秒くらいかかります。
バイナリをヘキサで表示してるんですが、大きいものだとこの7秒とかの間
かたまってしまって・・・
>745
TextBox.Text = str;
の前と後にStopWatchクラスで処理時間を出してるんですが、
この代入には描画処理も含まれているということでしょうか?
RichTextBoxはコントロールで表示されているところの描画のみ
してくれるわけではないのでしょうか?
>744
コントロールに別スレッドからでもアクセスする方法ってありません
でしたっけ?Invokeとか?
RichTextBoxには表示したいところだけバイナリを情報を代入してけば
いいんですかね?スクロールするたびに出したり消したりするとか?
749:デフォルトの名無しさん
08/08/10 00:11:16
>>748
InvokeはUIスレッドが今やってる仕事を中断させて別の仕事をやらせる関数。
そんなでかいデータ扱うなら横着しないでユーザコントロール書けばいいだろ。
750:デフォルトの名無しさん
08/08/10 00:47:50
>>749
しつこいね君も。
簡単に言うけどかなり面倒だしそれなりに難しいと思うよ。
表示することだけ考えてない?
751:デフォルトの名無しさん
08/08/10 00:56:37
>>750
それならもう勝手にしろよw
ヘキサエディタでできあいのコモンコントロール使ってるのあったら教えてね
752:デフォルトの名無しさん
08/08/10 01:03:48
すいません横着させてくださいっす。新しくユーザーコントロールはきついっす。
RichTextBoxがそういう仕様ならやはりちょびちょび表示ですかねぇ。。。
753:デフォルトの名無しさん
08/08/10 01:11:16
仮想モードでListViewでもつかえば
754:デフォルトの名無しさん
08/08/10 01:30:38
プログラム板ってさ、低脳ばっかだよね。
OpenGLスレくらいだなマシなのは。
755:デフォルトの名無しさん
08/08/10 01:31:29
OpenGLスレ見てみたがアホばっかりなんだが…
756:デフォルトの名無しさん
08/08/10 01:50:58
>>755
どんなスレ見てるの?
757:デフォルトの名無しさん
08/08/10 06:43:35
>>748
TextBox.AppendText()は使ってみた?
InvokeRequiredとInvoke, BeginInvokeはUIスレッドにマーシャリングしてくれるメソッド
758:デフォルトの名無しさん
08/08/10 07:23:19
>757
TextBox.AppendText(str)も同じくらい時間かかりました。
>753
>仮想モードでListView
kwsk
759:デフォルトの名無しさん
08/08/10 08:24:17
zip内のファイルを実行したい(wav鳴らすとか)のですが、そのためには一時フォルダ等に
ファイルを展開しなければならないのでしょうか?
zip内に格納したままあれこれやるってのは不可能なのでしょうか?
760:デフォルトの名無しさん
08/08/10 08:28:07
うん
761:デフォルトの名無しさん
08/08/10 10:40:14
SharpZipLibでメモリに展開し、Win32APIのwaveOutWriteやDirectSoundに流せばできるんじゃね?
762:デフォルトの名無しさん
08/08/10 10:41:55
Streamに展開すればいいんじゃね?
763:デフォルトの名無しさん
08/08/10 13:56:58
質問です
DBからデータを取得し、その構造体を返すクラスを作成しています。
私個人としては、datasetの形でかえしたいと思っています。
しかし、速度の問題から、
listを返すようになっています。
datasetで値のやりとりをするのと、<list>でやりとりをするので
そこまで速度やパフォーマンス、メモリの負担などはかわるのでしょうか?
ただのgetsetのプロパティのついたクラスのarraylistを、データとして使うほうが
早いのでしょうか?
僕としては、ここは.NETらしくdatasetを使いたいのですが。
764:デフォルトの名無しさん
08/08/10 14:03:31
とりあえず測ってみればいいんじゃないかな
765:デフォルトの名無しさん
08/08/10 14:06:39
構造体返すんだったらデータセットよりも素直にコレクションで返してくれた方が
使う側としては便利だと思うけど
766:デフォルトの名無しさん
08/08/10 14:13:54
>>758
kwskじゃなくてまずググれよ
767:デフォルトの名無しさん
08/08/10 14:14:57
.NETの構造体の意味を誤解している可能性大
768:デフォルトの名無しさん
08/08/10 15:14:59
代入では無くて文字列の描画に時間がかかってるなら、
ユーザードロウしない限り改善不可能じゃないか?
769:デフォルトの名無しさん
08/08/10 17:51:36
>>765
そうでしょうか。
たとえば、DataSet(型付Datasetという意味です)でデータを持つか
構造体でデータを持つか
そのメリットデメリットってそもそもなんなんでしょうか
datasetだと、複数テーブルをセットして、
リレーション張ったり、
うけとった側で、フィルターかけたり、nullチェック等のメソッドが用意されていたり
デザイナでデザインできたりするところだと思うのですが
構造体にすると、なんか.NET的な組み方じゃなくなってるような気もしたりしなかったり
僕が間違っていますか。
770:デフォルトの名無しさん
08/08/10 18:05:43
時と場合による
771:デフォルトの名無しさん
08/08/10 18:25:37
とりあえず「構造体」というものについて勘違いしてるのはよくわかった
クラスじゃなくてほんとに構造体で返すようなデータならデータセットで返すなんてありえない
772:デフォルトの名無しさん
08/08/10 21:53:50
構造体って値で返すのか
773:デフォルトの名無しさん
08/08/10 22:11:58
>>771
すいません、
えっとarrayistを返すか、datasetを返すかということでした。すいません。
774:デフォルトの名無しさん
08/08/11 01:12:06
作り手はdatasetのほうがいいだろうさ
使う側はどういう用途なの?
それがわからんと良いとも悪いともいえん
775:デフォルトの名無しさん
08/08/11 12:33:44
MSDNライブラリには
SpinWait のコードの実行は、
複数のプロセッサが搭載されているコンピュータで発生する可能性のある問題を回避するように設計されています。
たとえば、Hyper-Threading技術を使用した複数の Intelプロセッサが搭載されているコンピュータで、
SpinWait は、特定の状況で、利用できるプロセッサ リソースがなくなることを回避します。
とあるんですが、マルチコアCPUではThread.SleepよりThread.SipnWaitを使った方が良いのでしょうか?
776:デフォルトの名無しさん
08/08/11 12:42:36
ケースバイケース
777:デフォルトの名無しさん
08/08/11 15:32:52
>>775
ていうかその説明は Sleep 関係ない。
Sleep と比較してどうこうじゃなくこのメソッドの実装は HT やマルチコア
みたいな環境でも問題起こりませんよっつー意味
なんでそんな注意書きがあるのかはスピンウェイト、スピンロック
あたりでググってまずそのメソッドが何するのか分かれ。
ついでに Sleep との違いも
778:デフォルトの名無しさん
08/08/11 16:12:16
マルチコアだけでなくハイパースレッディング環境でも
一応うまく動くようになってるよってことじゃないの?
779:デフォルトの名無しさん
08/08/11 16:16:00
マルチコアやハイパースレッディングみたいな環境でも問題起こらないって…
普通マルチコアやハイパースレッディング環境でしか使わないだろ
でハイパースレッディングの場合も一応うまく動くようになってるよってことだろ?
実装によっちゃ無意味にCPU目一杯ぶん回すだけで意味ない可能性もあるから。
780:デフォルトの名無しさん
08/08/11 16:19:36
コードを見ようと思ったがネイティブに飛んでてわからなかった。
予想できることは一定時間ごとにスレッドを譲る仕掛けか、
一定時間でSleepに変更するかといったところだろう。
1CPUの場合はすぐさまスイッチしないと意味が無いし、
2CPU以上ならある程度スピンさせてても大丈夫だろう。
HTの場合はその中間くらいで手打ちしてるんじゃなかろうか。
781:デフォルトの名無しさん
08/08/11 17:44:20
スピンはスレッド中断には移行しない。
だから自分でバックオフを持たなきゃならない。
まあそもそも長時間かかる可能性がないとこだけにしとくのが無難だけど。
ついでに大抵シングルコア環境では使わない。
HTの場合は処理なし命令?でスピンして、有効な処理ではないことが
CPUに分かるように実装されてるはず。
782:デフォルトの名無しさん
08/08/11 18:42:10
いやシングルコアでは使わないって言うか使うよ。高精度な
というかスイッチしない待ちのとき使うものでコア数関係ない
あえて言えば Win 上で動くからか
ちなみに HT の場合の話だがシェアするからビジーさせると
それが埋め尽くしちゃってパフォーマンスが極端に低下する。
だから PAUSE 命令が追加されててスピンにそれを使う必要が
あるんだがそれ使ってますよみたいな意
783:デフォルトの名無しさん
08/08/11 19:38:13
シングルコアでスイッチしない待ちをやること自体が少ないんじゃないの?
784:デフォルトの名無しさん
08/08/11 19:40:27
あ、ここでのシングルコアはHTは含んでない。
785:デフォルトの名無しさん
08/08/11 21:13:56
>>783
内部的でいいんなら Moniter やらの同期機構が内部で使ってる。
アプリレベルだと例えば単純にスイッチは精度が悪い(Sleep は「最低」
指定時間待つ API)ので timeBeginPeriod(or MMCSS)でスケジューラ
いじって Sleep とスピンウェイトのあわせ技がいい。
機会や直で使うジャンルが少ないのは同意。コア周り、メディア、ゲーム
系しか知らん。
というか一定時間(クロック)待つようなメソッドの使い方(ぶっちゃけタイマ
みたいなもんだ)がマルチコアしか使わないになんでなるんだよという話。
ぜんぜん別やん。
もしかしてマルチコアじゃなくマルチスレッドっていう話か?
…それはそれとして思い出したんだが iterations を現実時間から計算する
方法知っている人いたりしない?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4943日前に更新/181 KB
担当:undef