ふらっとC#,C♯,C#(初心者用) Part21
■ このスレッドは過去ログ倉庫に格納されています
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0005デフォルトの名無しさん
2007/11/18(日) 17:15:45NULL許容型への代入専用だったりします?
一応コンパイルが通ってうごくみたいですが
0006デフォルトの名無しさん
2007/11/18(日) 17:17:030008デフォルトの名無しさん
2007/11/18(日) 18:21:420009デフォルトの名無しさん
2007/11/19(月) 00:15:210010デフォルトの名無しさん
2007/11/19(月) 00:16:250011デフォルトの名無しさん
2007/11/19(月) 00:18:32わかって無くても問題ないけど、使い道がわからんな・・・
0012デフォルトの名無しさん
2007/11/19(月) 00:34:50string data = rootElement.GetAttribute("data");
0013デフォルトの名無しさん
2007/11/19(月) 00:39:25何が気になったの? どうならいいの?
0014デフォルトの名無しさん
2007/11/19(月) 00:47:050015デフォルトの名無しさん
2007/11/19(月) 00:48:240016デフォルトの名無しさん
2007/11/19(月) 00:54:46数百、数千のファイルの情報をDBに登録したいのですが、
ExecuteNonQuery()でINSERT文を発行する以外でいい方法ありますでしょうか?
0017デフォルトの名無しさん
2007/11/19(月) 01:05:470018デフォルトの名無しさん
2007/11/19(月) 01:14:5100199
2007/11/19(月) 01:24:14XmlReaderが上からベタ読みで、DOMはそうじゃない との記述があったのに
サンプルコードが何かベタ書きだったのであれ?と思いました。
DOM含めXML勉強して出直してきますm(_ _)m
0020デフォルトの名無しさん
2007/11/19(月) 01:55:460021デフォルトの名無しさん
2007/11/19(月) 23:16:07どこにそんなことかいてある?
0022デフォルトの名無しさん
2007/11/20(火) 09:25:02それを使うアプリなんか作り方によるだけ。
0023デフォルトの名無しさん
2007/11/20(火) 10:59:00private ClassA a = new ClassA();
というように、宣言する時に同時にnewすることも、
コンストラクタの中でnewしてもどちらでも良いクラスがありますよね?
皆さん、どうしてます?
0024デフォルトの名無しさん
2007/11/20(火) 11:33:05使い捨ての場合はフィールドで行っているよ
0025デフォルトの名無しさん
2007/11/20(火) 12:12:15つまり違いはない
ただ前者の場合、引数に他のフィールドが使えないってだけ
0026デフォルトの名無しさん
2007/11/20(火) 12:45:44下記だとエラーが出てコンパイル出来ないのですが、一個一個ループで変換するしか無いのでしょうか?
long[] x = new long[10];
double[] y = new double[10];
y = (double[])x;
0027デフォルトの名無しさん
2007/11/20(火) 13:10:44double[] d = { 20, 20 };
object l2 = (object)l;
d = (double[])l2;
0028デフォルトの名無しさん
2007/11/20(火) 13:19:18指定されたキャストは有効ではありません
というエラーが出るのですが・・・
002927
2007/11/20(火) 13:26:36キャストが有効なのはジェネリクスだけだった。
配列は構造体だからループが一番早いと思う。
0030デフォルトの名無しさん
2007/11/20(火) 14:26:48string[] strWord = new String[26];
strWord[0] = "A";
strWord[1] = "B";
...
こんなやり方しか知らなくて・・・よろしくお願いします。
0031デフォルトの名無しさん
2007/11/20(火) 15:34:520033デフォルトの名無しさん
2007/11/20(火) 16:16:050034デフォルトの名無しさん
2007/11/20(火) 16:18:57string[] str = new string[26];
for (int i = 0; i < 26; i++)
{
bytesData[0] + i;
str[i] = System.Text.Encoding.UTF8.GetString(bytesData);
}
0035デフォルトの名無しさん
2007/11/20(火) 17:07:520036デフォルトの名無しさん
2007/11/20(火) 18:52:160037デフォルトの名無しさん
2007/11/20(火) 19:14:11string[] str = new string[26];
for (int i = 0; i < 26; i++)
{
str[i] = System.Text.Encoding.UTF8.GetString(bytesData[i]);
}
0038デフォルトの名無しさん
2007/11/20(火) 19:16:46string[] strWord = { "A","B","C"};
0039デフォルトの名無しさん
2007/11/20(火) 22:08:50それがなぜエラーになるか、わかれば少しレベルアップできますよ。
0040デフォルトの名無しさん
2007/11/21(水) 10:53:34どうやったらできますかね?
0041デフォルトの名無しさん
2007/11/21(水) 11:08:210042デフォルトの名無しさん
2007/11/21(水) 11:09:270043デフォルトの名無しさん
2007/11/21(水) 11:21:28{
const char DEF = (char)( 'Z' - 'A' + 1 );
const char def = (char)( 'z' - 'a' + 1 );
StringBuilder sb = new StringBuilder( str.Length );
for( int i = 0; i < str.Length; i++ )
{
char ch = str[i];
if( 'A' <= ch && ch <= 'Z' )
{
ch = (char)( ch - 2 );
if( ch < 'A' )
ch = (char)( ch + DEF );
}
else if( 'a' <= ch && ch <= 'z' )
{
ch = (char)( ch - 2 );
if( ch < 'a' )
ch = (char)( ch + def );
}
sb.Append( ch );
}
return sb.ToString();
}
004440
2007/11/21(水) 11:25:23やってみます
0045デフォルトの名無しさん
2007/11/21(水) 18:01:460から順番にintに出来ると思うのですが、逆は簡単に出来るのでしょうか?
swich(num)で場合分けしてintからenumの文字列を得るしかないのでしょうか?
0046デフォルトの名無しさん
2007/11/21(水) 18:58:25Enum.GetName()
0047デフォルトの名無しさん
2007/11/21(水) 19:02:15どうも有り難うございます〜。お手数お掛けしてすみませんでした。
Enum.GetName(typeof(enum), int);
0048デフォルトの名無しさん
2007/11/21(水) 19:43:130049デフォルトの名無しさん
2007/11/21(水) 19:50:36なんで文字列とかそういう話になるの?
0050デフォルトの名無しさん
2007/11/21(水) 19:51:550051デフォルトの名無しさん
2007/11/21(水) 19:53:34参照型でも普通>>48みたいなasの使い方はしないよ
asはnullチェックとセットじゃないと意味がない
失敗したときわかりにくいし
0052デフォルトの名無しさん
2007/11/21(水) 19:56:56それは、最初、直感的にやってみてエラーになったんですが、できるんでしょうか?
asオペレータは参照型で使用してくださいとなります。
enumは値型ですから駄目?
0053デフォルトの名無しさん
2007/11/21(水) 21:08:110054デフォルトの名無しさん
2007/11/21(水) 22:28:51自分が配置されているフォームを取得することはできないでしょうか。
どうしても無理なら、カスタムデザイナを使って、フォームに配置されたときに
自動的にプロパティを設定するようなやり方にしようかと思っているのですが。
0055デフォルトの名無しさん
2007/11/21(水) 22:39:11こんなVBっぽい機能使うなよw
0056デフォルトの名無しさん
2007/11/21(水) 22:50:590057デフォルトの名無しさん
2007/11/22(木) 02:16:54ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.parent(VS.80).aspx
0058デフォルトの名無しさん
2007/11/22(木) 09:59:40全然違うw
0059デフォルトの名無しさん
2007/11/22(木) 11:17:27文字列配列が50個あって、これをカンマで全部つなげて文字列にしたいんだが、
string value = str[0] + ',' + str[1] + ',' + str[2] + ',' + str[3] + ・・・・・
これしか思いつかないんだorz
もうちょっとスッキリした書き方って何かありますか?
0060デフォルトの名無しさん
2007/11/22(木) 11:20:370062デフォルトの名無しさん
2007/11/22(木) 11:27:120063デフォルトの名無しさん
2007/11/22(木) 13:06:580064デフォルトの名無しさん
2007/11/22(木) 13:12:30{
0065デフォルトの名無しさん
2007/11/22(木) 13:22:350066デフォルトの名無しさん
2007/11/22(木) 14:16:26必要なだけの文字列の長さを計算して、1回のピープ確保で済む。
0067デフォルトの名無しさん
2007/11/22(木) 14:53:58string value = "";
foreach (string s in str) {
value += s;
}
は、まずいだろ。
0068デフォルトの名無しさん
2007/11/22(木) 14:59:25たぶん>>66は
string value = str[0] + ',' + str[1] + ',' + str[2] + ',' + str[3] + ・・・・・
これが高速だと言いたかったんだろ。
forループ回して+=で結合するのや
StringBuilder インスタンスのロスなどを考えても
今回の配列50個程度の文字列結合だと、
速度の点で言えばどの方法でも大差なさそうだけどね。
>>59の
string value = str[0] + ',' + str[1] + ',' + str[2] + ',' + str[3] + ・・・・・
見た目はカコワルイが、これが一番高速ってことかなwww
0069デフォルトの名無しさん
2007/11/22(木) 15:10:110070デフォルトの名無しさん
2007/11/22(木) 15:14:33将来配列の個数が増えたときも対応が利くし
+=よりは速い。
そして何よりもスマートに記述できる。
0071デフォルトの名無しさん
2007/11/22(木) 15:36:23すまんすまん、60=62だが、ここに突っ込んだんだよw
0072デフォルトの名無しさん
2007/11/22(木) 15:45:350073デフォルトの名無しさん
2007/11/22(木) 16:03:113ページ目の中にはDataGridViewがあります。
タブページ外のボタン(タブコントロールと同じフォーム内)を
クリックしたときに、3ページ目のコピーを4ページ目として、
新たにタブページを作成するメソッドって何かありませんか?
007473
2007/11/22(木) 16:11:41>新たにタブページを作成するメソッドって何かありませんか?
新たにタブページを作成するスマートな方法をご存知ないですか?
に訂正します。
0075デフォルトの名無しさん
2007/11/22(木) 17:13:26データ舐めて新規につくれとしか
>>66
,ィ⊃ , -- 、
,r─-、 ,. ' / ,/ } ち
{ ヽ / ∠ 、___/ |
署 ヽ. V-─- 、 , ',_ヽ / ,' ょ
ヽ ヾ、 ',ニ、 ヽ_/ rュ、 ゙、 /
ま \ l トこ,! {`-'} Y っ
ヽj 'ー'' ⊆) '⌒` !
で , 、 l ヘ‐--‐ケ } と
ヽ ヽ. _ .ヽ. ゙<‐y′ /
来 } >'´.-!、 ゝ、_ ~ ___,ノ
| −! \` ー一'´丿 \
い ノ ,二!\ \___/ /`丶、
/\ / \ /~ト、 / l \
007673
2007/11/22(木) 17:26:01すんません、説明不足でした。
DataGridViewのデータはコピーできなくてOKです。
3ページ目のDataGridViewの列タイトル・列幅など
プロパティのコピーができれば充分です。
何とかなりませんかね?
0077デフォルトの名無しさん
2007/11/22(木) 17:52:25それはピーポw
007873
2007/11/22(木) 18:13:03DataGridView dgv = dgvLog; ← dgvLog:3ページ目のDataGridView
tabPage4.Controls.Add(dgv);
たぶんこれで問題ないと思われます。
007973
2007/11/22(木) 18:18:44DataGridView dgv = dgvLog;
tabPage4.Controls.Add(dgv);
これを実行するとナゼか
3ページ目のDataGridViewが消えるorz
0080デフォルトの名無しさん
2007/11/22(木) 18:45:22当たり前w
試しに、
DataGridView dgv = new DataGridView();
して、それをAdd してみ。
0081デフォルトの名無しさん
2007/11/22(木) 18:50:10DataGridView dgv = new DataGridView();
DataGridView dgv = dgvLog;
tabPage4.Controls.Add(dgv);
このようにやっても3ページ目が消えます;;
どうやらdgvLogそのものをコピーするのは無理っぽいですね。。。
0082デフォルトの名無しさん
2007/11/22(木) 19:03:580083デフォルトの名無しさん
2007/11/22(木) 19:18:01008473
2007/11/22(木) 19:24:25これって何かヤバい記述なのでしょうか?
超初心者ですみません;;
0085デフォルトの名無しさん
2007/11/22(木) 20:34:49C#3.0で開発するとクライアントでは.net3.0/3.5が必要なの?
.net2.0の開発にC#3.0は使えないんですか?
0086デフォルトの名無しさん
2007/11/22(木) 20:41:280087デフォルトの名無しさん
2007/11/22(木) 20:48:243.0/3.5で追加されたライブラリを使わなければ、
C# 3.0で追加された言語仕様を使っても.NET Framework 2.0で動くはず。
86も言っている通りLinqはだめだな。
まあ、こういうことも不可能ではないみたいだけど。
http://d.hatena.ne.jp/NyaRuRu/20071121
0088デフォルトの名無しさん
2007/11/22(木) 23:09:27C# 3.0というかVisual Studio 2008で書くと、常に.NET 2.0 SP1を想定してコンパイルする点は注意。
.NET 2.0→2.0 SP1でいくつか互換性が無くなる変更が行われているので、
それらの型やメソッドに依存してるプログラムは互換しない。
例
1) .NET 2.0にのみに存在し、SP1で無くなったメソッドを使っている
→.NET 2.0 SP1環境で動かない、Visual Studio 2008ではコンパイルが通らない
2) .NET 2.0 SP1で追加されたメソッドを使っている
→.NET 2.0無印環境で動かない、Visual Studio 2008ではコンパイルが通る
0089デフォルトの名無しさん
2007/11/22(木) 23:34:220090デフォルトの名無しさん
2007/11/22(木) 23:40:37,ィ⊃ , -- 、
,r─-、 ,. ' / ,/ } だ
{ ヽ / ∠ 、___/ |
署 ヽ. V-─- 、 , ',_ヽ / ,' か
ヽ ヾ、 ',ニ、 ヽ_/ rュ、 ゙、 /
ま \ l トこ,! {`-'} Y ら
ヽj 'ー'' ⊆) '⌒` !
で , 、 l ヘ‐--‐ケ }
ヽ ヽ. _ .ヽ. ゙<‐y′ /
来 } >'´.-!、 ゝ、_ ~ ___,ノ
| −! \` ー一'´丿 \
い ノ ,二!\ \___/ /`丶、
/\ / \ /~ト、 / l \
っ
て
0091デフォルトの名無しさん
2007/11/22(木) 23:49:130092デフォルトの名無しさん
2007/11/23(金) 00:14:570093デフォルトの名無しさん
2007/11/23(金) 00:23:56市ね糞が
0094デフォルトの名無しさん
2007/11/23(金) 00:38:370095デフォルトの名無しさん
2007/11/23(金) 00:51:080096デフォルトの名無しさん
2007/11/23(金) 03:51:10ここのスレで質問させて下さい。
C#で下記VB6の処理と同じ事をしたいのですが、
VB6+DAO接続のようにうまくいきません。
(Oracleの社員マスタをmdbにインポートする)
Dim db1 As Database
'DSN接続文字列
Const DSN As String = _
"ODBC;DSN=abc;SRVR=orcl;UID=USER;PWD=Admin;"
'DAOでOracleに接続
Set db1 = Workspaces(0).OpenDatabase("", True, False, DSN)
Dim strSQL As String
’社員マスタのインポート
strSQL = "SELECT * INTO USER_SHAIN " & _
"IN '" & "C:\abc.mdb' from SHAIN"
db1.Execute strSQL
mdbにODBCでOracleにリンクして上記SQLを発行すれば
うまくいきそうなんですが
空のabc.mdbに直接Oracleのデータをインポートするには
C#+ADO.NETではやはり無理なのでしょうか?
VB+DAOでできてC#+ADO.NETではできないのは
何か悔しいです。
0097デフォルトの名無しさん
2007/11/23(金) 06:54:06そういうDAOべったりのことをしたいなら、C#からDAO使えばいいじゃね
0098デフォルトの名無しさん
2007/11/23(金) 10:26:16お前VB6のソース貼っただけで質問かよ
DAOでMDBへの接続ならこんなのがあった
http://park15.wakwak.com/~u-konko/denno/c_sample/ado.htm
0099デフォルトの名無しさん
2007/11/23(金) 11:30:52多種DB間での単一SQLって・・・
プログラム的には接続を別に持って
DB1からObjectとして取得
DB2へ取得Objectをインサート
がスマートなんじゃね?
0100デフォルトの名無しさん
2007/11/23(金) 15:30:270101デフォルトの名無しさん
2007/11/23(金) 15:39:200102デフォルトの名無しさん
2007/11/23(金) 15:54:15レスありがとうございます。
そのような感じではなくロガー用途で使いたいのです
ttp://mixlogger.the-ninja.jp/
このような感じです。
情報を小出しにしてしまい申し訳ありません。
プログラムは常駐していて、IEでなにかサイトにアクセスすると
URL、あとタイトルとアクセス時間をログにして出力すると考えています。
0103デフォルトの名無しさん
2007/11/23(金) 19:19:550104デフォルトの名無しさん
2007/11/23(金) 19:25:23何が上手くいかないか書いていない。
c#上のコーディングミスの可能性があるのにソースが貼ってない。
それにもかかわらず
>C#+ADO.NETではやはり無理なのでしょうか?
なんだそれ?
ゆとり?
■ このスレッドは過去ログ倉庫に格納されています