VB.NET質問スレ(Part35)

このエントリーをはてなブックマークに追加
952951:2011/03/31(木) 00:09:39.18
別に関係ないけどTではなくStringの間違い
953デフォルトの名無しさん:2011/03/31(木) 00:12:06.02
>>951
サンクス
954デフォルトの名無しさん:2011/03/31(木) 00:17:51.73
設定保存手法として
My.Settings(内部ファイル)
ini
レジストリ
xml(外部ファイル)
とかあるけどどれが一番いいの?

俺は分かりやすいiniが好きなんだが知り合いにバカにされた
955デフォルトの名無しさん:2011/03/31(木) 00:24:47.61
バカにする奴は放っておけばいい。
俺はXMLファイルに保存してる。単に好みってだけだけど。
956デフォルトの名無しさん:2011/03/31(木) 00:28:44.55
My.SettingsはXMLと同列な扱いとして.NETの恩恵が受けられるのは
XML>レジストリ>INIの順かな
規模によっちゃDBにするだろうけど、まぁ好きにすりゃいい
957デフォルトの名無しさん:2011/03/31(木) 11:33:54.05
すみません。

keyDownイベントで
F1キーを押したらボタンを押された処理をできるよにしたいのですが、
vbkeyF1はVB2010Exp.edでは使えないのでしょうか?
958デフォルトの名無しさん:2011/03/31(木) 13:45:22.36
Keysで比べたら良いんじゃないの

If e.KeyCode = Keys.F1 Then
959デフォルトの名無しさん:2011/03/31(木) 13:59:32.15
>>950です。

区切り文字が2文字の場合はどうすればいいでしょうか
[]毎に区切りたいです
960デフォルトの名無しさん:2011/03/31(木) 14:21:45.09
961デフォルトの名無しさん:2011/03/31(木) 22:34:41.92
>>959
Dim hoge As String = "abc[]xyz[]あいう"
Dim fuga = Strings.Split(hoge, "[]")

Array.ForEach(fuga, Sub(s) Console.WriteLine(s))

それとも[]ってのは"[abc][xyz][あいう]"こういうの言ってる?
962デフォルトの名無しさん:2011/04/02(土) 14:56:47.91
>>954
俺は.NETではXML(ユーザー別に設定を保存したい時はMy.Settings)、WIN32APIではINIを使ってる
レジストリはなるべく使わない
963デフォルトの名無しさん:2011/04/02(土) 19:33:05.51
iniはMSが使うなって言ってるから使わないほうがいい。
レジストリのほうが楽だし。
964デフォルトの名無しさん:2011/04/02(土) 21:34:44.78
MSの話は信じないほうがいい。
裏切られた事しかないだろう?
965デフォルトの名無しさん:2011/04/02(土) 21:51:44.20
そろそろソフトバンク携帯などのアプリをVB.NETでつくれるようにしてもらわないと
966デフォルトの名無しさん:2011/04/02(土) 22:46:08.71
WP7はVBサポートしてるけど
XNAやMFのように、新しいプラットフォームのVB対応にMSは消極的で切り捨てられつつあるので
そういうのに興味があるならC#に移行するべき
967デフォルトの名無しさん:2011/04/02(土) 23:19:53.81
>>966
VBもC#も同じ.NET Frameworkっていうプラットフォームで動作していると思ってんだが
WindowsPhone7上では違うんか?
968デフォルトの名無しさん:2011/04/02(土) 23:28:01.16
同じだけど開発環境(Visual Studio)が対応してないと作るの難しいでしょ
基本的にC#優先でVBは遅れて対応するかそのまま放置
969デフォルトの名無しさん:2011/04/02(土) 23:30:37.39
>>964
レジストリかiniかって行ったらiniが危ないだろ。ダントツで。
970デフォルトの名無しさん:2011/04/02(土) 23:34:40.63
理由は?
971デフォルトの名無しさん:2011/04/02(土) 23:41:37.32
>>970
16bitの互換性のために残してあるから使うなって書いてある。
972デフォルトの名無しさん:2011/04/02(土) 23:46:14.18
vistaのときに動かなくなったソフトが続出したときも、
msが悪いみたいな感じで、作り方が悪いって言ってるやつは少なかったから
ini使ってて動かなくなっても「まーたmsに裏切られたw」とか言ってれば
まあ体面はたもてるな。
973デフォルトの名無しさん:2011/04/02(土) 23:57:14.26
普通に考えればファイルの形式なんか問題じゃない。
MSもそんなことに口ばしを挟んでいた記憶はないけどね。

MSが問題にしてたのは設定値の保存先だけじゃなかったのかな。
バイナリと同じディレクトリとか、下手するとシステムフォルダとか、
もっと最悪なのはCドライブの決め打ちのパスとかに、しかもマルチユーザーを
意識せずに保存する悪い習慣は止めてねって言ってただけでしょ。
974デフォルトの名無しさん:2011/04/02(土) 23:59:07.48
>>968
C#が優先されているわけじゃなくて、もともとMSの.NET戦略として新規に作られた言語がC#な訳で
新しい機能を試験的にも組み込みやすいからVBよりも先に対応されてんだよ
だから後続のVSバージョンでVBにも機能が追加されてる(ジェネリック、ラムダ式、LINQ、自動プロパティとか)
VB6から無理して.NET対応したくらいだし、急にMSがVBを見捨てるとは思えんけどな
975デフォルトの名無しさん:2011/04/03(日) 00:02:50.67
>>973
くちばしを挟むっていうか、iniじゃなくてレジストリ使えって書いてある。
976デフォルトの名無しさん:2011/04/03(日) 00:06:11.34
iniファイルの読み書きルーチン自作して、マルチユーザー対応も
しっかりしてればiniでも独自形式もなんでも問題ないわな。
まあ、おれは使わないけど。
977デフォルトの名無しさん:2011/04/03(日) 00:13:45.33
XMLやレジストリよりINIファイルを好むってのはエンドユーザとかSEが簡単に設定の追加・変更・確認が
しやすいからだと思ってるんだが、まぁ設定管理画面くらい別に実装しろって言うとそれまでだけど
978デフォルトの名無しさん:2011/04/03(日) 00:26:59.27
>>975
むしろ.NET立ち上がり時にレジストリはもう使うな、という話はあった。
ファイルの形式については問題にする意味がわからない。
常識的に言って大きなお世話だろう。

せっかくあるシリアル化等の機能を使った方が生産性が高いですよ、というのなら話はわかる。
979デフォルトの名無しさん:2011/04/03(日) 00:47:44.44
>>974
XNAのVB切捨てとか明らかにサポートコスト削りだよ
980デフォルトの名無しさん:2011/04/03(日) 01:16:20.45
>>979
対応するみたいだけど
http://blogs.msdn.com/b/lisa/archive/2011/03/28/xna-is-coming-to-visual-basic.aspx

そもそもXNAってVB対応してたっけ?
981デフォルトの名無しさん:2011/04/03(日) 01:31:16.05
>>978
問題にする意味って、APIは使うなってアナウンスがあるし、
iniの読み書きルーチンでも独自に作ればいいけどそんなことを
するほうが意味が分からない。

物好きで、もうiniファイル関連のライブラリを作ってしまってるなら
それでも使ってればいいだろうけど、初心者がiniとレジストリのどっちが
いいですかって聞いてたらレジストリを勧めとけばいい。
982デフォルトの名無しさん:2011/04/03(日) 10:43:42.77
明らかにC#の方が検索してても情報量多い。

しかし社内便利屋の俺としてはVBの方が角が立たなくて良い。
C#じゃ爺さんはメンテしてくれなさそうだし。
983デフォルトの名無しさん:2011/04/03(日) 11:00:51.31
そりゃC系怖くてVBしか使えないような人がwebで有用な情報を発信できるとは思えない
984デフォルトの名無しさん:2011/04/03(日) 11:26:24.68
C#もVBもそんな変わんないんだから脳内変換すりゃいい
985デフォルトの名無しさん:2011/04/03(日) 12:04:14.86
文字列の最大値について質問します
stringの最大値は何になるのでしょうか?

Char.MaxValueが解となるように思えますが
文字数も定義せずにChar.MaxValueが最大になるということが
今ひとつ納得できません。

986デフォルトの名無しさん:2011/04/03(日) 12:10:51.86
文字列の最大値 の意味がわからない
Char型の値はUnicodeの文字コードの数値で、Char.MaxValueはその最大値
文字数は全く関係ない
987デフォルトの名無しさん:2011/04/03(日) 12:13:34.26
先進機能をC#で実験的に実装、安定化・普及後にVBにも実装
やっぱVBでいいや
988デフォルトの名無しさん:2011/04/03(日) 13:30:19.72
>>985
文字列の最大長のことかね。
2Gとか4Gとかそのあたりだろうけど、そんな限界まで使わないから分からないな。
989デフォルトの名無しさん:2011/04/03(日) 13:33:27.40
何の話をしてるんだよ...
990985:2011/04/03(日) 15:46:39.66
色々検索してみたけど

"aaa"と"a"を比較するときは
[0x0061 0x0061 0x0061] と [0x0061 0x0020 0x0020]を

左から順番に評価していくから
string型もchar型も文字数は関係なく最大値はChar.MaxValue[0xFFFF]
であるという認識で宜しいのでしょうか。
それなら納得いく
991デフォルトの名無しさん:2011/04/03(日) 15:57:37.93
だから最大値って何のこと言ってるんだよ。
頭おかしいのか?
992デフォルトの名無しさん:2011/04/03(日) 15:58:32.14
意味わかんね
"a" は { 0x0061 } であって後ろに半角空白なんか付かない
比較するなら2文字目で 0x61 と「存在しない」を比べることになる

で最大値って何よ
993デフォルトの名無しさん:2011/04/03(日) 16:06:13.75
>>990
…いろいろ検索してその内容ってどこを検索してきたんだよ
994デフォルトの名無しさん:2011/04/03(日) 16:20:42.43
文字列を比較演算子とかCompareTo()とかで比較したとき、どの文字列よりも
大きいって判定される文字列ってことだろうか > 最大値

コミュ力に難のある人みたいだから、こういう質問しても答えかえってこないと思うけど。
995985:2011/04/03(日) 16:29:03.88
だいたい>>992さんの説明でわかりました。

>>994
まさに私が質問したかったことです。
私の表現と知識が足りずにうまく伝わらなかったようですが。
996デフォルトの名無しさん:2011/04/03(日) 16:34:16.22
>>995
文字列の最大値は、Char.MaxValueのCharが、文字列の最大長まで
入ってる文字列だよ。

Dim s as new string(Char.MaxValue, Int32.MaxValue)

みたいなやつ。
(実際にInt32.MaxValueの長さの文字列を作れるかどうかは知らんけど)
997デフォルトの名無しさん:2011/04/03(日) 19:21:34.37
Char同士の比較は文字コードの数値比較だけど
文字列の比較は通常カルチャ依存だから絶対的な最大値はないよ
998デフォルトの名無しさん:2011/04/03(日) 19:46:29.60
まあ、Char.MaxValueを使ってる文字列なんてなさそうだから、
実用上は new string(Char.MaxValue)でよさそうな感じだけど > どの文字列より大きい文字列
999デフォルトの名無しさん:2011/04/03(日) 19:53:54.14
何の実用だよ
1000デフォルトの名無しさん:2011/04/03(日) 19:59:00.14
>>999
番兵とかHIGH_VALUE的な使い方とか。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。