2ch勢いランキング アーカイブ

VB.NET質問スレ(Part35)


デフォルトの名無しさん [sage] 2010/09/14(火) 09:20:53
前スレ

VB.NET質問スレ(Part34)
ttp://hibari.2ch.net/test/read.cgi/tech/1270998481/

テンプレは あたり
デフォルトの名無しさん [sage] 2010/09/14(火) 09:21:33
MSDN
  ttp://msdn.microsoft.com/ja-jp/library/ms229284.aspx
どぼん!のVB道のトップページとTipsページ
  ttp://dobon.net/vb/
  ttp://dobon.net/vb/dotnet/index.html
Insider.NET
  ttp://www.atmarkit.co.jp/fdotnet/index.html
宇宙仮面の C# プログラミング
  ttp://uchukamen.com/
.NET TIPS
  ttp://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
緑のバイク ★ 初めてのC# プログラム全般
  ttp://homepage3.nifty.com/midori_no_bike/CS/
VB.NETとC#でデザインパターン
  ttp://hccweb1.bai.ne.jp/tsune-1/
匣の向こう側
  ttp://www.ne.jp/asahi/nami/mei/index.html
WisdomSoft
  ttp://wisdom.sakura.ne.jp/
じゃんぬねっと
  ttp://jeanne.wankuma.com/
どっとねっとふぁん - C# Tips And Samples -
  ttp://homepage3.nifty.com/dotnetfan/index.html
  ttp://dotnetfan.org/
C#プログラミングTips
  ttp://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html
デフォルトの名無しさん [sage] 2010/09/14(火) 09:22:13
CodeProject
  ttp://www.codeproject.com/vb/net/
the GotDotNet Home Page
  ttp://www.gotdotnet.com/
KEN's .NET
  ttp://www5b.biglobe.ne.jp/~yone-ken/VBNET/index.html
Cetus Links: 19,498 Links on Objects and Components / .NET
  ttp://www.cetus-links.org/oo_dotnet.html
HIRO's.NET
  ttp://vbdotnet.fc2web.com/index.html
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
  ttp://www.atmarkit.co.jp/fdotnet/special/onlineres/onlineres_01.html
.NETでいきまっしょい!
  ttp://santamartadotnet.hp.infoseek.co.jp/
これがほしかった!厳選サンプルツール集
  ttp://anetm.com/dev/tools/vbdotnet.htm
ぬーやんのdotNET講座
  ttp://www.geocities.jp/nuu_yan/dotNET/index.html
PINVOKE.NET
  ttp://www.pinvoke.net/
WinAPI Database for VB Programmer
  ttp://www.winapi-database.com/
デフォルトの名無しさん [sage] 2010/09/14(火) 09:22:54
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
  ttp://custom.programming-in.net/
CodeZine
  ttp://codezine.jp/
ConvertCSharp2VB
  ttp://www.kamalpatel.net/ConvertCSharp2VB.aspx
@IT:.NET Tools
  ttp://www.atmarkit.co.jp/fdotnet/tools/index/index.html
SharpLibrary Redirector
  ttp://www.sharplibrary.com/
MSDN アカデミック アライアンス 技術資料
  ttp://www.microsoft.com/japan/msdn/academic/articles/
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
  (VS2005) ttp://www.microsoft.com/japan/msdn/thisweek/300x10/
  (VS.NET 2003) ttp://www.microsoft.com/japan/msdn/thisweek/wednesday/
PAPA'n VB
  ttp://papanvb.i-love-vb.net/
  (旧コンテンツ) ttp://www.mitene.or.jp/~sugisita/index_old.html
VB レスキュー花ちゃん
  ttp://www.bcap.co.jp/hanafusa/dotnet/index.html
VB中学校
  ttp://homepage1.nifty.com/rucio/main/main.htm
初心者から中級者のためのVB
  ttp://www7b.biglobe.ne.jp/~vb_beginner2008/

テンプレここまで
デフォルトの名無しさん [sage] 2010/09/14(火) 09:50:29
誘導されました。

VB.NETのスレが無いのですみません。
Dim [source] As TreeNode = _
CType(e.Data.GetData(GetType(TreeNode)), TreeNode)
上記の[source]ってどういう意味でしょうか?
なぜ[ ] がついているんでしょうか?


デフォルトの名無しさん [sage] 2010/09/14(火) 10:10:38
予約語を変数名等で使用したい場合に[]でエスケープする
予約語はこの辺を参照
ttp://msdn.microsoft.com/ja-jp/library/ksh7h19t(v=VS.90).aspx

…sourceって予約語じゃない気もするけどね
デフォルトの名無しさん [sage] 2010/09/14(火) 10:18:12
例だから
好きな変数に書き換えて使ってください
デフォルトの名無しさん [sage] 2010/09/14(火) 12:00:27
なるほど
予約語ですか。
ありがとうございました。
デフォルトの名無しさん [sage] 2010/09/14(火) 16:01:18
インターネットでサンプルをみながらVB.NETを勉強しています。
継承(inherits)していないクラスのコンストラクタに
MyBase.New()
と書かれているのですが、これはなんのためにあるのでしょうか。

対象のサンプルコードが書かれているページ
ttp://park5.wakwak.com/~weblab/clsSyain.html
デフォルトの名無しさん [sage] 2010/09/14(火) 18:04:35
Sub Newの扱いは他のメソッドと比べると少し特殊です
MyBaseのNew()を呼ぶことで、System.Object クラスの新しいインスタンスを初期化します
この作業を行うことで、始めてコンパイラは基底クラスをインスタンス化できるようになります
デフォルトの名無しさん [sage] 2010/09/14(火) 18:21:08
呼ばなくても引数なしのコンストラクタが勝手に呼ばれるからの場合は省略していい
というか普通は省略する
デフォルトの名無しさん [sage] 2010/09/14(火) 19:01:46
.net初心者です。
ライフゲームをつくっているのですが、For文と配列をつかって、PictureBoxを並べて表示させることはできました。
これでは決まりきった形(正方形や長方形)の背景しか表示できず、ライフゲームとして面白みがありません。
そこで、たとえば猫の写真をもってきて、猫の形の背景をつくりたい(つまり猫の形上でライフゲームが展開したい)とき、
どういう関数を使えばいいでしょうか?
デフォルトの名無しさん [sage] 2010/09/15(水) 13:35:04
四角や長方形を組み立ててドット絵風に猫の絵にする
猫の絵のjpgやbmp読み込んでDraw関数で書き込む
PictureBoxの背景画像を猫にする
デフォルトの名無しさん [sage] 2010/09/16(木) 19:20:52
「ライフゲームとして面白みがない」というのがよくわからん。外観だけの話じゃないのか?
もし猫の写真を認識してライフゲームの初期状態やフィールドの形状を生成するってことだったら
写真をBitmapオブジェクトに読み込む→画像を方眼状に仮想的に分割
→一つのセルに含まれるすべてのピクセルの色の平均を求める→明度かなんかを閾値として生か死か決める
→これを全てのセルに対して繰り返す
一番シンプルな形としてはこんな感じだろうけど、いきなりこれだけ組み立てるのはたぶん君にはまだ難しい。
デフォルトの名無しさん [sage] 2010/09/17(金) 19:09:03
webbrowser1でリンクをクリックしたとき、それをwebbrowser2で開きたいと思っています。
BeforeNavigateという機能を使えばできそうな感じではあるのですが、初心者向けの解説がなく、さっぱり使い方がわかりません・・・
どういったプログラムを書けばいいのでしょうか・・・
デフォルトの名無しさん [sage] 2010/09/18(土) 23:16:46
VB.netとはあまり関係無いかもしれませんが、
ファイルの作成日時と更新日時の関係がどうも納得行かないので質問です。


Windows環境で特定のファイルのプロパティを見たところ
次の様なタイムスタンプになっていました。

作成日時  2010年9月18日、 12:57:11
更新日時  2010年9月18日、 1:33:45

ここで疑問なのはなぜ【更新日時】が【作成日時】よりも過去になっているのでしょうか?
ファイルの 作成 > 更新 という流れなので【更新日付】が
一番直近の日時になっていなくてはならないと思うのですが。
デフォルトの名無しさん [sage] 2010/09/18(土) 23:26:28
自由にいじれるもんにそんな文句付けても仕方ないが
例えばファイルコピーしたら作成はされるが更新はされない
デフォルトの名無しさん [sage] 2010/09/18(土) 23:55:06

ありがとうございます。そーいえばコピーしましたw
デフォルトの名無しさん [sage] 2010/09/19(日) 23:49:28
別のフォームにあるテキストボックス(TextBox1)の内容を取得したいのですが、
(そのフォームも自作アプリなのですが)
GetWindowTextで取得すると、TextBox1という文字列が取得されてしまいます。
起動後に手入力で内容を書き換えても、FormLoad時に書き換えても
フォームデザイナに初期に定義されていたTextBox1という文字が返ってきてしまいます。
フォームデザイナであらかじめ変更しておくとその通り返ってくるのですが
実際のそのときのテキストボックスの内容を取得する方法を教えて頂きたいです
デフォルトの名無しさん [sage] 2010/09/20(月) 00:08:30
別のフォームって別のアプリケーション?
WM_GETTEXT使う
デフォルトの名無しさん [sage] 2010/09/20(月) 02:56:17
ありがとうございます。
SendMessageを調べてみます。
デフォルトの名無しさん [sage] 2010/09/20(月) 07:41:24

そのアプリケーションは何で作ったのだろうか?

実はGetWindowTextに渡すウィンドウハンドルが間違っているだけの予感がする。
デフォルトの名無しさん [sage] 2010/09/20(月) 22:05:19
SendMessageで別のアプリケーションのコマンドボタンを押したくて
ボタンのハンドルにマウスの左ボタン押し、離し(&h201と&h202)を送っているのですが、
ボタンの画像が押されたようになるのですが、押した時のプロシージャが実行されないのですが、
押した時と同じように動かすにはどうしたら良いでしょうか?
キーコードのKeys.Spaceを送ると直接クリックした時と同じ動作をしました。


GetWindowTextでTextBox1という文字が返ってくるのでハンドルは間違って
いないのではないかと思います。
その後検索してみたのですがGetWindowTextは他のアプリケーションに対しては使用できないみたいでした。
デフォルトの名無しさん [sage] 2010/09/20(月) 22:55:19
コモンコントロールのボタンならBM_CLICK
デフォルトの名無しさん [sage] 2010/09/20(月) 23:24:07
BM_CLICKで出来ました。
どうもありがとー
デフォルトの名無しさん [sage] 2010/09/20(月) 23:48:34
APIに関連した質問ばかりですみません。
下のループでウィンドウテキストがConsoleに正常に出ないのですが
どこに原因があるでしょうか?
ループの上に一時停止を設定して、F10を押して一つずつ表示させると出るのですが・・・
早すぎるのが原因のような感じですが、SendMessageは瞬時に次のものは使ってはダメでしょうか?
EnumChildWindow()の使い方が不慣れで共有変数の扱いとかが分からないので
このような方法で列挙してみました。
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA"
  (ByVal hWnd As IntPtr, ByVal wMsg As Integer,
   ByVal wParam As Integer, ByVal lParam As String) As Integer
Public Const WM_GETTEXT = &HD
Dim OYA As IntPtr
Dim ko As IntPtr
Dim mago As IntPtr
Dim WindowTitle As String = "テストフォーム"
OYA = FindWindow(vbNullString, WindowTitle)
ko = FindWindowEx(OYA, IntPtr.Zero, vbNullString, vbNullString)
Console.WriteLine(ko.ToInt32)
If ko.ToInt32 = 0 Then Exit Sub
Dim a As String= New String(Chr(0), 255)
Dim leng As Integer = Len(a)
Do Until (ko.ToInt32 = 0)
 mago = FindWindowEx(OYA, ko, vbNullString, vbNullString)
 SendMessage(mago, WM_GETTEXT, leng, a)
 Console.WriteLine(a.ToString)
 Console.WriteLine(mago.ToInt32)
 ko = mago
Loop
デフォルトの名無しさん [sage] 2010/09/21(火) 18:16:19
あらかじめフォーム上にある一つのボタンのクローンを50個ロード時に動的に増やすサンプルコード書いてくれませんか?
デフォルトの名無しさん [sage] 2010/09/21(火) 18:20:54
糞UI乙
それ余計に難しいから最初の一個のプロパティやイベントハンドラもコードから設定した方が早い
デフォルトの名無しさん [sage] 2010/09/22(水) 11:55:47

2バイト文字を扱うのなら---Aではなく---Wをつかうべきでは?
デフォルトの名無しさん [sage] 2010/09/22(水) 11:58:30

それと、両方の文字セットが使われる可能性があるのなら、DeclareじゃなくDllImport属性つけてCharSetをAutoにしたほうがいい。
デフォルトの名無しさん [sage] 2010/09/22(水) 15:30:05
DeclareでもAuto修飾子があるよ
デフォルトの名無しさん [] 2010/09/25(土) 21:23:52
Open FileName For Binary Access Write As #1はVB.netでは使えないのかな。
VB.netでこのユーザ定義型で読み書きするには、どうしたらいいですか?
ttp://www.mb.ccnw.ne.jp/garger-studio/gameprog/vb0124.html
デフォルトの名無しさん [sage] 2010/09/26(日) 14:51:25
ちょっと素朴な疑問なんだけど
ClientRectangle.Locationプロパティでコントロールの原点を取得するのって何か意味あるの?常にx=0 y=0だから、もし座標変換や座標計算で使用する場合
いちいち取得しなくても直接 x=0 y=0 でやったらだめなんかなぁ?
それとも何か特別な時に変化とかするの?わかる人教えてください

長文すんません
デフォルトの名無しさん [sage] 2010/09/26(日) 15:17:34

素朴に質問する前に、MSDNライブラリのControl.ClientRectangleの項は読んだの?
読んでないでしょ?

MSDNライブラリも読まずに質問するって面の皮厚過ぎないか
デフォルトの名無しさん [sage] 2010/09/26(日) 18:54:28


回答もできないやつに限ってOO読みましたかとか?いう
クソだねカスだねさらにうなら病院行った方がいいね
デフォルトの名無しさん [sage] 2010/09/26(日) 19:05:40
呼んだからしてんじゃねーの?

このプロパティによって返される四角形の左上隅の座標は (0,0) となります。
クライアント領域の左上隅の座標は0,0だから当然そのコントロールの右下隅はコーンとロールの
Sizeプロパティで取得できるし決め打ちで左上隅を0,0にしてもサイズ計算はできる
ただし、クライアント領域を絶対領域に変換する計算をするにはClientRectangle使ったほうがスマート
両方参照するコードだと長くなるから
デフォルトの名無しさん [sage] 2010/09/26(日) 19:07:02

呼んだから=x 読んだから=○
デフォルトの名無しさん [sage] 2010/09/26(日) 19:12:45

お前が読め
デフォルトの名無しさん [sage] 2010/09/26(日) 19:16:11
 
>コーンとロール

新しいスイーツ?
デフォルトの名無しさん [sage] 2010/09/26(日) 19:20:29

なんか偉そうだな
デフォルトの名無しさん [sage] 2010/09/26(日) 23:46:48
VB2005を使ってRS232C接続機器の制御用アプリを作っています。シリアルポートを直接制御している部分はDLLになっており、
別担当者が開発しています。
問題は、そのDLL内のあちこちでDoEventsを呼び出していること。シリアルがらみなので別スレッドで動いているにもかかわらず、
何かしらシリアルデータのやり取りが発生するとDoEventsを呼んでくれます。

非同期にDoEventsが呼び出されるおかげで、アプリの終了処理中などウィンドウの構成やら何やらが変化しているときにも、
非同期にイベント処理が走ってエラーが出ます。

そこで、対処療法ですが、フックするなどして、DoEventsを有効/無効と切り替える方法を教えて頂けないでしょうか。
DoEventsOff():DLL内ルーチン呼び出し:DoEventsOn()、みたいな感じでDoEventsの無効有効を切り替えるイメージです。

ここからは言い訳。

本来はDLL内でのDoEventsの呼び出しを止めるべきなのですが、残念ながら、DLLのメンテ担当者にその気が無いのです。

部署内での打ち合わせでDLLの改善を提案したりしたんですが、本人の作っているアプリでは個別に回避処理を入れるやり方で対応できている、
DoEventsを止めるとGUIの動きがぎこちなくなるからダメだ、という事でやはり拒否。上長も、このDLLは別部署でも使っていることもあり、既にリリースしているDLLを
差し替えることにはかなり否定的な立場をとってます。

ここは気合いで同機能のDLLを作って・・・ということができればカッコいいんですが、DLLを置き換えると、メンテ業務や部署内外への周知やサポートも一緒に
引き継ぐことになっちゃうので、二の足を踏んでます。
現時点ではそのDLL担当者がこういう雑務も引き受けてくれてるので、やはり強いことは言えません。

ということで、質問に戻りますが、DoEventsをフックし、有効/無効を切り替える方法を教えて頂けないでしょうか。

よろしくお願いします。
デフォルトの名無しさん [sage] 2010/09/27(月) 00:31:30

メソッド呼び出しのフックなんて危険なことがそう簡単にできると思えないなあ。

というか、DoEventsなんか使うあなたの同僚もおかしいけど、
こう言っちゃなんだけどDoEventsで動作がおかしくなるあなたの担当分のコードも
問題あると思うよ。

DoEvents呼んだって、非同期的にイベントが発生したりしないよ?
だってDoEventsの機能は「メッセージ キューに現在ある Windows メッセージをすべて処理します。」、
つまり、DoEventsを呼んだ結果発生するイベントは、Windowsメッセージに関連付けられた、
UIスレッドで発生するイベントだけだから。

何か勘違いがあるんじゃないの?
デフォルトの名無しさん [sage] 2010/09/27(月) 02:39:10
確かに、非同期といってもよっぽど頻繁にDoEventsが動いてないと
変な状況が目立って出るはずありませんね。

たしかに、まだまだ見直すところがありそうです。

ちと頭冷やして、ちゃんと構成しなおしてみます。
ありがとう!

デフォルトの名無しさん [sage] 2010/09/27(月) 07:25:16
どんなエラーなのか分からないけど、別スレッドでDoEventsを呼んだとしても、
UIスレッドには影響ないだろ。別スレッドでDoEventsを呼んで、状況が再現
するか試してごらん。多分影響ないから。

しかし通信中に迂闊にDoEvetnsなんて呼んだら、まともに通信できなくなるだろうに。
デフォルトの名無しさん [sage] 2010/09/27(月) 08:45:05
というか、DoEventsなんか使うあなたの同僚もおかしいけど、

その同僚の代弁をすると、
ポーリングしてるようなぐるぐる処理の場合
DoEventsやめたら非常に楽しいことになるけどいいのかね?

41 [sage] 2010/09/27(月) 12:30:07
結局、別スレッドとかは関係ありませんでした。そもそも、無限ループでリアルタイムモニタの通信を行い、DoEventsを定期的に呼んでGUIを動かし、ボタン押
下などへの応答は自前イベントで処理する、という思想で作っていたようです。
VB6の頃から試行錯誤してきたソースを使っているので、こういう構成になっているとの事。
役に立つことのある情報とは思えませんが、参考までに具体的な話を。

・制御対象のリアルタイムモニタのため、単純な無限ループで繰り返しシリアル通信を行う。アップデート間隔をできるだけ短くする為の様です。
・GUIが固まるので、シリアル通信のDLL内でDoEventsを呼んでいる。(シリアルにコマンドをライトし、リードで応答を待つ場合など、必要な応答データが揃
 うまで繰り返しリードし、その都度DoEventsも呼び出している模様。)
・フォームに配置されたボタンを押すと、制御対象に設定を書き込んだり、リアルタイムモニタとは別のデータを読み出したりするシリアル通信を行う必要が
 ある。そこで、自前のイベントとイベントキューを作って、上記の無限ループでこれらの自前イベントを処理することで対応している。
・その他のイベントについては、普通のスタイルでハンドルを定義しているので、たまにイベント処理が破綻するが、そういうのは見つかるごとに対応している。
 (一時的に上記ループを停止するなど)

私がこのあたりちゃんと把握せずに、コントロールを追加したときにハンドラ内でシリアル通信を起動してたので、変な事になってたようです。
しかし、コントロールを追加するたびに、上記の自前イベントを拡張しないといけないのは面倒ですが。
もうちょっと頭を整理してから対策してみます。

お騒がせしました&ありがとうございました。
デフォルトの名無しさん [sage] 2010/09/27(月) 18:50:33
クラスライブラリ(プロジェクト名:xlsworks、クラス名:xlsjobs)を作成してm
COMオブジェクトの「Microsoft Excel 11.0 Object Library」を参照しました。

で、そのクラスを別のWindowsApricationからプロジェクト参照で呼び出して使用してるんですが、
そのクラス内で所得できる、
Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter
のような、列挙体で設定されてる数値は、
WindowsAprication側からは参照できないんでしょうか?
デフォルトの名無しさん [sage] 2010/09/27(月) 19:45:00
スレッドを立ち上げて待機状態にしてメイン側から必要な時だけ
動かしたいのだけどそういうスレッド間の同期とる場合もセマフォとか
使うのでしょうか
デフォルトの名無しさん [sage] 2010/09/27(月) 19:56:16

クラスライブラリのプロジェクトにIDEが自動作成したdll(ファイル名の一部に"interop"が
入ってるやつ。たしか3つぐらいあるはず)を、Windowsアプリのプロジェクトから参照すればOKなはず。
デフォルトの名無しさん [sage] 2010/09/27(月) 20:18:28

AutoResetEventでも使えば
デフォルトの名無しさん [sage] 2010/09/28(火) 08:13:52
byval/byrefについて、stringの場合はbyvalで渡す方が一般的でしょうか?
デフォルトの名無しさん [sage] 2010/09/28(火) 09:00:32
引数全般ByValが基本だよ
デフォルトの名無しさん [sage] 2010/09/28(火) 09:34:08
ありがとうございます!
デフォルトの名無しさん [sage] 2010/09/28(火) 15:56:47
ttp://support.microsoft.com/kb/129931/en-us?fr=1#top
VB4時代のこんなの見つけたけど、今は大丈夫だろうと思ったら

Sub Main(ByVal cmdargs() As String)
Dim sw As New Stopwatch
Dim a(50000000) As Integer

sw.Restart()
For Each i As Integer In a
a(i) = i
Next
sw.Stop()
p(sw.ElapsedMilliseconds)

sw.Restart()
For i As Integer = 0 To UBound(a)
a(i) = i
Next
sw.Stop()
p(sw.ElapsedMilliseconds)

Console.Read()
End Sub
何度試しても、キャッシュを気にして順番を変えてみても
for eachのほうが遅い
今でも配列にはforを使うべき?
デフォルトの名無しさん [sage] 2010/09/28(火) 16:17:10
C#だと最適化されて同じになるんだけどな
ちゃんと型指定されてるからVBだから最適化できないってことはないはず
コンパイラが馬鹿なんだろ
デフォルトの名無しさん [sage] 2010/09/28(火) 17:57:57
うちの環境だと差は出ないな。
VSのデバッグモードで動かしたりしてない?

XPSP3, .NET4.0でコマンドラインからoptimizeコンパイル、実行。
最初のループだけ早くなる傾向があるから、
foreachとforを3セット繰り返して、後ろ2セットで測定した。
デフォルトの名無しさん [sage] 2010/09/28(火) 18:24:12
for eachのnextは列挙の次の要素の取得だけど、
普通のforのnextはintegerのインクリメントだからなぁ
列挙よりインクリメントが早いって話なんじゃないだろうか
デフォルトの名無しさん [sage] 2010/09/28(火) 18:24:42
csvの1行目を除外してA列で昇順で並び替えるには、どうしたらいいですか?
デフォルトの名無しさん [sage] 2010/09/28(火) 19:04:36
デバッグモードで試してた。それをきいて一安心

ところでコマンドラインでコンパイルするのには何か意味があるの?
2010expressで最適化はデフォルトでOnになってるけど

csvを1行目を除外して読み込んでorder byとかでやればいいんじゃない?
しかしVB.netよりもVBAのほうがいいように思うけど
もしその作業が単発ならExcelのオートフィルタ
デフォルトの名無しさん [sage] 2010/09/28(火) 19:05:26
ずれた。後半は
デフォルトの名無しさん [sage] 2010/09/28(火) 19:32:30
このサンプル・プログラムで最後の行から最初の行に読み込むようにするには?
ttp://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_08/vb2005m_08_04.html
デフォルトの名無しさん [sage] 2010/09/28(火) 19:49:01
どこまで出来て、どこが出来ないの
デフォルトの名無しさん [sage] 2010/09/28(火) 20:04:21
え?この部分を最初の行からじゃなくて最後の行から最初の行へ

Do While Not tr.EndOfData
oneLine = tr.ReadFields()
If oneLine(0) = txtNumber.Text Then
sw.WriteLine(oneLine(1))
End If
Loop
デフォルトの名無しさん [sage] 2010/09/28(火) 22:41:49
無理
全部List(Of String)にでも読み込んでからReverseしてFor Each
デフォルトの名無しさん [sage] 2010/09/29(水) 03:10:38
複数列あるcsvをList(Of String)とか配列に読み込む方法がわからない。
デフォルトの名無しさん [sage] 2010/09/29(水) 03:35:20
古本屋に行って投売りされてる初心者本片手にMSDNとにらめっこ一ヶ月ぐらいした方がいいぞそのレベルは

一行ずつ読み込んでも、全部いっぺんに読み込んで改行コードで分割するんでもいいだろ。
デフォルトの名無しさん [sage] 2010/09/29(水) 07:31:10

デフォルトの名無しさん [sage] 2010/09/29(水) 12:23:20
まとめて読み込むなら、これだな。
ttp://msdn.microsoft.com/ja-jp/library/s2tte0y1.aspx
デフォルトの名無しさん [sage] 2010/09/29(水) 18:38:14

やってることは一緒なんだからコンパイラが最適化できる。バカ正直にIEnumerator操作する必要はない。
むしろ、for eachの列挙の方が形が決まってる(自由度が低い)分最適化の余地が大きい。
デフォルトの名無しさん [sage] 2010/09/30(木) 09:08:23
日付を2001001から2001/10/01へ変換するにはFormatはどうすれば?
デフォルトの名無しさん [sage] 2010/09/30(木) 10:39:35
2001年0月1日?
デフォルトの名無しさん [sage] 2010/09/30(木) 11:42:04
固定長だったら
Dim s As String = "20011001"
Dim y As String = s.Substring(0, 4)
Dim m As String = s.Substring(4, 2)
Dim d As String = s.Substring(6, 2)
でいいじゃん
あとで結合するときは、直接やらないでいったんそれぞれInt32.ParseでIntegerに変換して
DateTimeを作ってからToStringでフォーマット使って文字列にした方が応用が利く
デフォルトの名無しさん [sage] 2010/09/30(木) 11:46:17

Dim csvRecords As New ArrayList

While tr.EndOfData
 oneLine = tr.ReadFields()
 csvRecords.Add(oneLine)
End While

tr.Close()

'最後の行から最初の行へ その1
'csvRecords.Reverse() '要素の順序を反転

'最後の行から最初の行へ その2
For MyRow = csvRecords.Count - 1 To 1 Step -1

Next MyRow
デフォルトの名無しさん [sage] 2010/09/30(木) 12:44:52
そこもわかってないんだろうけど問題はそこじゃないだろ
結論から言うとの方法は使えない
自分でTextReaderの派生クラス作ってうまく辻褄合わせしてやればできなくはないけどには絶対無理
一行ごとにTextFieldParserを作るとか強引な方法は考えられるけど
ある程度フォーマットの決まったファイルを読むならTextFieldParserなんて使わずに自分で書くのも難しくない
デフォルトの名無しさん [sage] 2010/09/30(木) 13:04:49
で出来たけど?
74 [sage] 2010/09/30(木) 13:29:28
考えたらはどうせメモリに全部読み込むの前提なんだから
全ての行を逆に結合して一つの文字列にしてしまえばTextFieldParser使えるね
デフォルトの名無しさん [sage] 2010/09/30(木) 14:10:24
サンプル・プログラムでTextFieldParser使ってるのに意味不明。
デフォルトの名無しさん [sage] 2010/09/30(木) 14:14:00

やってることは一緒じゃないんじゃね?
列挙は実際の要素(この場合配列に格納されてる実際のinteger値)取得する必要があるけど、
普通のループは要素関係ないぞ(取得/インクリメントするのはループ変数のinteger値)
integer値を取得するってとこだけ見れば同じかもしれんが
前者は配列中の要素を特定する必要があるが後者はその必要が無い
配列だからIEnumeratorすっとばす最適化するってなら差が出ない理由にはなるな

つかの二つのループって同じ処理結果じゃないだろ、これ
デフォルトの名無しさん [sage] 2010/09/30(木) 15:56:17
C#ではfor (int i = 0; i < array.Length; i++) hoge(array[i]);
のような典型的な形の配列アクセスは最適化されるよ
配列専用の特別なIL命令が使われるらしい
VBはどうか知らないけどたぶん一緒
デフォルトの名無しさん [sage] 2010/09/30(木) 20:05:02

質問だけしてトンヅラって感じの悪い野郎だな
デフォルトの名無しさん [sage] 2010/09/30(木) 20:51:29
文字か数値か判別するのにChar.IsNumberとかInteger.TryParseだとうまくいかない。
「String "--" から型 'Double' への変換は無効です。」とエラーが出る

他に文字か数値か判別する方法はないのかな?
デフォルトの名無しさん [sage] 2010/09/30(木) 21:06:27
それ、IsNumberやTryParse以外の所でミスってないか?

どの行でエラー出してるか確認してみろ
デフォルトの名無しさん [sage] 2010/09/30(木) 21:09:01
VB初心者が書いてみたがこんなんでどう
Dim s As String
Do
Dim i As Integer
s = Console.ReadLine()
If s Is Nothing Then
Exit Do
End If
Try
i = CInt(s)
Console.WriteLine(i + 10)
Catch ex As Exception
Console.WriteLine(s)
End Try
Loop
デフォルトの名無しさん [sage] 2010/09/30(木) 22:27:35
「正常系の処理に例外を使うな」
デフォルトの名無しさん [sage] 2010/09/30(木) 22:29:19
うっせーよ
デフォルトの名無しさん [sage] 2010/10/01(金) 01:22:19

だよな。
列挙の方は要素からの読み取りで間接的な参照が挟まるlことになる。
デフォルトの名無しさん [sage] 2010/10/01(金) 08:56:41
VB2008使用です。
チェックボックスを出しているDateTimePickerで、
Checkedの変更タイミングで行いたい処理があります。

ValueChangedで実装してみたのですが、
DateTimePicker.Value=Today
DateTimePicker.Checked=True
とした後にチェックボックスを画面上で外すと
ValueChangedが行われません。
Checkedの変更タイミングはValueChangedではないのでしょうか?
デフォルトの名無しさん [] 2010/10/01(金) 13:21:13
恐れ入ります、分かる方がいらっしゃいましたらご教授ください。

●VB.NETにて、配列の先頭アドレスを数値に変換するにはどうすればよいのでしょうか?

やりたいことは、waveOutPrepareHeader()に渡すWAVEHDR構造体のlpDataメンバに
波形バッファの先頭アドレスを代入したいのです。

例)
<StructLayout(LayoutKind.Sequential)> Structure WAVEHDR
 Dim lpData As Int32
 Dim dwBufferLength As Int32
 Dim dwBytesRecorded As Int32
 Dim dwUser As Int32
 Dim dwFlags As Int32
 Dim dwLoops As Int32
 Dim lpNext As Int32
 Dim reserved As Int32
End Structure

Declare Function waveOutPrepareHeader Lib "winmm.dll" Alias "waveOutPrepareHeader" (ByVal hWaveOut As Int32, ByRef lpWaveOutHdr As WAVEHDR, ByVal uSize As UInt32) As Int32

Dim waveBuffer As Byte(BUFFER_SIZE)
Dim waveHdr As WAVEHDR

waveHdr.lpData = waveBufferの先頭アドレス
waveHdr.他のメンバ = 適当に設定
waveOutPrepareHeader(..., waveHdr, ...)

C言語風に書けるなら waveHdr.lpData = (unsigned long)waveBuffer; とやりたいところですが・・・。
よろしくお願いいたします。
デフォルトの名無しさん [sage] 2010/10/01(金) 14:07:01
非同期なら
GCHandle.AllocでGCHandleType.PinnedしておいてAddrOfPinnedObject
その配列がアンマネージで使われなくなったらFreeを忘れずに
あとポインタとかハンドルはInt32じゃなくてIntPtrな
デフォルトの名無しさん [sage] 2010/10/01(金) 14:17:29
書き戻しがないなら単純にコレでいけると思う。
<StructLayout(LayoutKind.Sequential)> Structure WAVEHDR 
 Dim waveBuffer As Byte(BUFFER_SIZE) 
 Dim dwBufferLength As Int32 
   :
どうしてもリアルにアドレスを数値化したいなら
固定化なりマーシャリングを自前でやる必要がある。
デフォルトの名無しさん [sage] 2010/10/02(土) 15:33:06
下記のコードでnの中のresultに0.0000・・・の0の部分だけを取りたいのですが、
これだと0が代入されてしまいます。
n = 1.0000000015 だと result = "1.00000000"
となるので正規表現は間違っていないよですが、
0だけの文字列を取る方法を教えて頂きたいです。

Dim n As Double
n = 0.0000000015
Dim r As New Regex("(?<1>1\.?0*)\d+")
Dim m As Match
m = r.Match(n)

If (m.Success) Then
Dim result As String
result = m.Groups(1).Value
Console.WriteLine(result)
End If
デフォルトの名無しさん [sage] 2010/10/02(土) 15:48:30
1.0000000015にたいして
00000000がとれれば良いの?
デフォルトの名無しさん [sage] 2010/10/02(土) 15:55:13
1.0000000015の場合は
1.00000000が取りたいです。
実際には1.・・・・という値が対象になることはないです。いつも0.・・・・・nn・・・
0.00・・・・・nnnで0以外の数字が出るまでの0.000000の部分を取りたいです。
デフォルトの名無しさん [] 2010/10/02(土) 16:02:35
nをそのまま文字列にすると1.5E-09になるぞ。

nをはじめから文字列にしたらどうなる?
Dim n As String = "0.0000000015"
デフォルトの名無しさん [sage] 2010/10/02(土) 16:02:40
[1-9]\.0+
あとそういうのに浮動小数点使うな
Decimal使う
デフォルトの名無しさん [sage] 2010/10/02(土) 16:04:31
94みたいなことをしてないか気づけるので
Option Strict Onおすすめ
デフォルトの名無しさん [sage] 2010/10/02(土) 16:06:20
誤解されそうな表現だった。別に94に何か言いたいことがあるわけじゃなくて
勝手に暗黙的な変換がなされるのを防ぐって意味ね
デフォルトの名無しさん [sage] 2010/10/02(土) 16:09:42
レスありがとうございます。
Decimalでできました!正規表現もありがとうございます。
String変数に入れると"9E+15"みたいになってしまいました。
Option Strict Onをやったら何箇所か〜〜〜が出ました;
どうもありがと!
デフォルトの名無しさん [sage] 2010/10/02(土) 16:13:02
>Option Strict Onをやったら何箇所か〜〜〜が出ました
それは同様のバグがある可能性が極めて高い場所だから修正することをお勧めする
デフォルトの名無しさん [sage] 2010/10/02(土) 16:20:27
そのままのコードを生かしてみた
string.formatの部分はもっとましなやり方があるかもしれない
Dim n As Double = 0.0000000015
Dim reg As New System.Text.RegularExpressions.Regex("(?<1>.\.0*)\d+")
Dim s As String = String.Format("{0:0.################}", n)
Dim m As System.Text.RegularExpressions.Match = reg.Match(s)
If (m.Success) Then
System.Console.WriteLine(m.Groups("1").Value)
End If
デフォルトの名無しさん [sage] 2010/10/02(土) 16:32:36

誰の言うことが正しいのかの判断は君に任せるが、
Decimal使えっていうのは俺はちょっと論点ずれてると思うよ。

扱う値の範囲にもよるが、普通はDoubleで問題ないし、以下のようなコードを書くべき。
Private Function SomeFunc(ByVal value As Double) As String
  Dim regex As New Regex("^(\d*[.]+0*)\d*$")
  Dim m As Match = regex.Match(value.ToString("G"))
  If m.Success Then
    Return m.Groups(1).Value
  Else
    Return ""
  End If
End Function
デフォルトの名無しさん [sage] 2010/10/02(土) 16:41:48
それ正規表現間違ってます
何も考えたくないならDecimalの方がいいよ
浮動小数点はちゃんと理解して使わないと結構普通に予期しない動作するよ
デフォルトの名無しさん [sage] 2010/10/02(土) 16:46:49
WindowsフォームにWebBrowserがあります。
WebBrowser上のActiveXのコントロール(テキストボックスなど)にアクセス
できるでしょうか?

デフォルトの名無しさん [sage] 2010/10/02(土) 17:05:45
Document.DomDocumentでCOMのDOMのポインタが取れるから
その中から探してIHTMLObjectを取得すればいいんじゃないの
やったことないから細かいことは知らないしCOMはスレ違い
デフォルトの名無しさん [sage] 2010/10/02(土) 17:08:02

Dim m As Match = regex.Match(value.ToString("G"))

Dim m As Match = regex.Match(value.ToString("F20").TrimEnd("0"c))
とかにしないとダメだなw素で何か勘違いしてた。


>それ正規表現間違ってます
どこが?

>浮動小数点はちゃんと理解して使わないと
むしろちゃんと理解してない奴がやたらとDecimalなぞを使いたがる印象
デフォルトの名無しさん [sage] 2010/10/02(土) 17:24:08
[.]+はおかしい
?の間違い?
デフォルトの名無しさん [sage] 2010/10/02(土) 17:25:59

よくそんな知識で人にケチ付けられるな....
デフォルトの名無しさん [sage] 2010/10/02(土) 17:32:52

確かにその量指定子は不適切だったありがと
デフォルトの名無しさん [] 2010/10/02(土) 18:28:24
VBまともなの買うなら。
ttp://profiles.yahoo.co.jp/-/profile/?sp=oGT3BCg1eqGiCHsyTN79KJdc
デフォルトの名無しさん [sage] 2010/10/02(土) 18:43:23
GUIアプリを適当に作るとソースコードとGUI部品が密着してしまって再利用しにくくなりますよね。
特にマルチスレッドアプリを作ってると、自分の知識が足りない事もあって、改良しようとすると全面作り直しなど泥沼にはまってきます。
こういうのを解決する手法があると思いますが、教えてもらえますか。
デフォルトの名無しさん [sage] 2010/10/02(土) 18:47:32
他の言語やってみたら見方が変わるよ
VBできるならC#→Java→他がおすすめ
デフォルトの名無しさん [sage] 2010/10/02(土) 19:25:03
とにかくクラスを作るようにしてたらそのうち慣れるよ
デフォルトの名無しさん [sage] 2010/10/02(土) 19:33:12
やっぱ仕事単位でクラスにまとめるんですね。以前やってみたけどそれほど旨くいかなかったのはスキル不足のせいかあ。
オッサンなので他言語に移るのはつらいけど、C#はやってみる価値があるのかな・・・。
デフォルトの名無しさん [sage] 2010/10/02(土) 19:46:12
VBできるならC#は簡単
C#やればVBで「やるべきでないこと」がわかってくる
88 [] 2010/10/02(土) 21:10:29
です。


どうもありがとうございました。

まずはの方法でうまく行きました。
次はの方法で試してみたいと思います。
デフォルトの名無しさん [sage] 2010/10/02(土) 23:10:54
vb.netの質問ではないのですが、どうかご教授ください。

vs2003で.net1.1を参照し作成したexe(以降、hoge.exe)を、.net1.1がインストールされていない、
.net2.0以上がインストールされているPCで実行したところ、正常に動作します。
※「正常」と書いていますが、「ザックリと動く」と読み替えてもらってもかまいません。

そこで質問なのですが、hoge.exeはが参照している.netは1.1なのに、
gacに入っている2.0以降の.netライブラリ上で動作するのでしょうか?

もしかして、.net2.0のmachine.configにsidebyside的なことがかいてあるのでしょうか?
デフォルトの名無しさん [sage] 2010/10/02(土) 23:27:50
.NET2.0上で.NET1.1アセンブリの扱いのポリシーは「取り敢えず2.0で動かしてみる」だったはず
.NET4だとapp.configに記述されてない限り起動させないだったはずだけど

.NET1.0/1.1の記述だけどこの辺参考に
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_05/idnfw11_05_02.html
デフォルトの名無しさん [sage] 2010/10/03(日) 09:39:17
.NET4でポリシーが変わったのは、100%の互換性は保証できないから必ずテストしろという意味
1.1→2.0時の問題を踏まえての変更だからその意味を考えて慎重に
ほかの会社なら100%の互換性と言い切っちゃうところだけどそこはMSらしいというか
デフォルトの名無しさん [sage] 2010/10/03(日) 10:31:09
.NET4でコードセキュリティモデルから透過セキュリティモデルに変わったのがでかい。
デフォルトの名無しさん [sage] 2010/10/03(日) 16:41:55
CASがなくなったわけじゃないよ。軒並みObsoleteになっただけ。
どっかの公式ドキュメントで読んだけど、.NET Frameworkのコンポーネントの
インストールパスが変わったら問題が出るアプリケーションが存在する可能性は0ではないとかそんなレベルの話らしい
デフォルトの名無しさん [sage] 2010/10/04(月) 11:35:15
質問させてください。

今情報表示するだけのアプリを作っているのですが、
いろんな機種で表示させたいと思っています。
そこで問題になるのが解像度の問題です。
常に最大化して使いたいのですが、小さな機種(800x480に)あわせて作っているので大きな画面だと右と下に大きな余白が出来てしまいます。
全てのラベルや画像を画面いっぱいに広げる方法はないでしょうか?
anchorは使ったのですが、これはラベルの文字が大きくならないため使えませんでした。

何かよい対処がわかる方がおられましたら、アドバイスいただけると助かります。
デフォルトの名無しさん [sage] 2010/10/04(月) 11:40:47

WPFで作れば拡大縮小が自由自在なはず
知らないけど
デフォルトの名無しさん [sage] 2010/10/04(月) 11:45:15

つまりFormだと絶望的だと・・・?
デフォルトの名無しさん [sage] 2010/10/04(月) 12:02:58
折角でかい画面使ってるのにそれに合わせて文字が大きくなるとか超がっかり
そんなのOSのDPI設定でするもんだろ
デフォルトの名無しさん [sage] 2010/10/04(月) 12:26:06
解像度取得して
それにあわせて描画すればいいだけちゃうんけ?
デフォルトの名無しさん [sage] 2010/10/04(月) 12:28:38
常に最大で使うっていうのが
そのPCでは、そのアプリしか動かさないってことなら

PCの解像度のほうを変えろ

121 [sage] 2010/10/04(月) 12:51:19

そんなもんですか
どんな画面でも表示できるのを目指しているんですが


いろんな設定に対して行うのは結構作業工数がバカみたいになるので・・・


やっぱりそれがいいんですかね。
ワイド画面で設定しているから4:3の画面で少しおかしくなるのは目を瞑りますかね
デフォルトの名無しさん [sage] 2010/10/04(月) 13:01:09
Direct3Dで作るのもいいかも
解像度なんて関係なく作れるし
デフォルトの名無しさん [sage] 2010/10/04(月) 13:14:35

WPFとかDirect3Dとか根本的に修正しないと無理っぽいみたいですね
デフォルトの名無しさん [sage] 2010/10/04(月) 13:49:58

>>いろんな設定に対して行うのは結構作業工数がバカみたいになるので・・・

ん〜と・・・・、そんなに工数多くなるかな?、やろうとしてることがわからんので、ちょとイメージ沸きません

anchorで文字のサイズ以外がうまく言ってるなら
文字サイズだけ自力で変えてやれないの?、それなら工数いらなくない?
デフォルトの名無しさん [sage] 2010/10/04(月) 14:05:37

レスありがとうございます。
元が800x480でアプリ開発してて、それを最大化等で拡大したときに文字を含めた全てを均等に大きくしたいのです。
anchorで大きくできると言っても均等ではなく、とりあえず端からの距離を保ったまま大きくなってる状態で、やりたいこととは違うのです。

それにどんな解像度のマシンで使われるか不明なので、どのくらいのフォントサイズで、どの位置〜というのが明確に決めづらいです。
デフォルトの名無しさん [sage] 2010/10/04(月) 14:14:17
まあ比率で計算するしかないわな
Direct3Dも座標は絶対値じゃなくて比率で指定するし
デフォルトの名無しさん [sage] 2010/10/04(月) 14:18:04

文字は自前でコントロールの大きさ調べてそれに対して何%
みたいな感じでやれば?
もちろん間歇的になるけど
それと両アンカーでやっても違うってこと?
どうしたいのか分かんね
デフォルトの名無しさん [sage] 2010/10/04(月) 14:18:28

まぁ自動計算はしてくれないと・・・
.Netと言えどもなんでもあるわけじゃないんですねw
デフォルトの名無しさん [sage] 2010/10/04(月) 14:22:52
macなら自由に拡大できるのにね
デフォルトの名無しさん [sage] 2010/10/04(月) 14:24:23

アンカーって余白の設定ですよね?
相対的に大きくしたいので、余白が絶対的に設定されるだけなので今回やりたいこととは違うんですよ。

要はフォームサイズが大きくなった分、全てのコントロールを相対的に大きくしたいのです。
デフォルトの名無しさん [sage] 2010/10/04(月) 14:27:07
エロいな
デフォルトの名無しさん [sage] 2010/10/04(月) 14:32:19

マックうらやましいれす(^q^)
.NETは透過もままならないですからねorz
デフォルトの名無しさん [sage] 2010/10/04(月) 14:32:53

だから両アンカーにすればいいと言ってるのだが…
アンカー勘違いしてないか?
余白はpaddingだぞ?
デフォルトの名無しさん [sage] 2010/10/04(月) 14:42:12
それとラベルのautosizeがtrueだったってオチじゃないよね?
デフォルトの名無しさん [sage] 2010/10/04(月) 14:47:33

いやいやいや、ちゃんと読めよ。どう見てもそれじゃ不足でしょうに
クライアント領域の幅をW、コントロールの幅をwとすると、136がやりたいのは W/w=const で、139だと W-w=const

で、答えはテーブルレイアウト。フォントは知らん
デフォルトの名無しさん [sage] 2010/10/04(月) 14:51:16

両アンカーにしても画像部分しか拡大されないんですが・・・もちろんラベルはautosizeをfalseにしてます


autosizeはfalseにしてもanchorで両端にくっつけるとラベルだけ大きくなって、フォントまでは大きくならないんです。


テーブルレイアウト・・・ググってみます!
デフォルトの名無しさん [sage] 2010/10/04(月) 14:51:47

アホか
両アンカーと何度も書いとろうが
デフォルトの名無しさん [sage] 2010/10/04(月) 14:58:31

だからラベルサイズは自動可変するから後はsizechangegedイベントで
フォントを変更すればいいという話

もちろんコントロールによってはアンカーだけではうまくサイズ変更
されないものもあるけど(CheckBoxとかRadioButtonとか)
デフォルトの名無しさん [sage] 2010/10/04(月) 14:59:39
SizeChangedね
デフォルトの名無しさん [sage] 2010/10/04(月) 15:00:19
anchorすげー
初めて知った
デフォルトの名無しさん [sage] 2010/10/04(月) 15:11:09
一枚絵を画面サイズにストレッチしたみたいな表示にしたいってことだよね

画面全部まとめて1枚絵にしちゃえば?w
デフォルトの名無しさん [sage] 2010/10/04(月) 15:13:13

要はそういうことです。
> 画面全部まとめて1枚絵にしちゃえば?w
それも考えたんですがちょっと無理やりすぎるのでw
他に自分の知らない方法があるのではと思って相談したまでです。
デフォルトの名無しさん [sage] 2010/10/04(月) 15:13:40

textboxどーすんの?って話になるw
デフォルトの名無しさん [sage] 2010/10/04(月) 15:14:16
前後逆になった


それならいけるかもしれませんね。
ちょっと試してみます
デフォルトの名無しさん [sage] 2010/10/04(月) 15:14:56

今回に関してもラベルとグラフコントロールとピクチャボックスくらいなんで大丈夫ですw
デフォルトの名無しさん [sage] 2010/10/04(月) 15:18:09

それも絵として描画するんだよ、縦横比も自由自在だぜ
デフォルトの名無しさん [sage] 2010/10/04(月) 15:19:37

あ、すまん、textboxは、たしかに面倒だw
デフォルトの名無しさん [] 2010/10/04(月) 17:59:32
いちいちコメントにレスつけて自分の意見を主張している様子から察するに、
手を動かして、実際に何かを学ぼうと思っていないだろう。
2chで適当な返答返しながら、どんぴしゃな答え、誰かがコード書いて貼ってくれるの待ってるんでしょ。

2chに来る割合をもう少し減らして、開発に時間割けば?
デフォルトの名無しさん [sage] 2010/10/04(月) 18:03:40
154は忘れて
デフォルトの名無しさん [sage] 2010/10/04(月) 18:03:56
また訳分からん因縁つける奴が
少なくとも言われたことは試してると思うが?
デフォルトの名無しさん [sage] 2010/10/04(月) 18:04:46
156も忘れて(^^;
デフォルトの名無しさん [sage] 2010/10/04(月) 20:15:26
既に誰か指摘してると思うけど、そもそもウィンドウの全ての要素の大きさを
クライアント領域のサイズに比例させる必然性が何もないし、苦労してやっても
気持ちの悪いUIになるだけだよなあ。

昔のネオジオの格闘ゲームじゃないんだからさあ。

VS2010のエディタ部分なんかデバッグ時微妙にフォントサイズが変わるけど、
あれってちょっと気持ち悪いでしょ?
デフォルトの名無しさん [sage] 2010/10/04(月) 21:31:21
こんなコード書いて、
やるで
おわったで
と出力されるにもかかわらずディレクトリが出来ません
どうやって調査すれば良いのでしょうか

System.Console.WriteLine("やるで")
Try
System.IO.Directory.CreateDirectory("d:\temp\トップ")
Catch ex As Exception
System.Console.WriteLine(ex.ToString())
System.Console.WriteLine("いきなりディレクトリつくれんです")
End Try
System.Console.WriteLine("おわったで")
159 [sage] 2010/10/04(月) 21:45:33
自己解決。ウィンドウが更新されてなかっただけでした
別プロジェクトでコードを作り直しても同じ結果になり悩んでたんですが
ウィンドウを閉じて再度表示させると治りました

エクスプローラのwindowが更新されないとか、
今まで経験したことがなかったのでちょっと驚き
ウィンドウを再表示後は、上の減少は再現しなくなりました・・
デフォルトの名無しさん [sage] 2010/10/05(火) 14:10:02
ttp://ideone.com/Pg1mD

のようなコードで
1秒間にどれだけ処理(ループ)できるか書いているのですが
妥当ですかね?
デフォルトの名無しさん [] 2010/10/05(火) 14:59:05
何を測りたいのかはっきりさせてくれ
そのコードだと、ループ内で行ってる処理の中ではたぶん
Console.WriteLineが一番重いので、Console.WriteLineの処理時間を計測してるだけ。
測りたい処理よりもコストのかかる処理をループ内に入れてしまうと何の意味もなくなる。
文字列連結や文字列比較の速度を調べたいのでなければ、
同じ理由で文字列の操作も避ける。GC.Collectも同様。
パフォーマンス計測にはStopwatchクラスを使う。
ループ開始前にStartして終了後にStop。最後に経過時間を出力。
一秒間にどれだけ処理できるか調べたいんだったら最後に一秒当たりに換算すればいい。
デフォルトの名無しさん [sage] 2010/10/05(火) 15:26:36

そのものズバリ Stopwatch クラスですかありがとうございます。

何を計りたいかですが…
1〜15桁の文字列(パス)の生成に掛かる時間を、
調べたいと思っています。
デフォルトの名無しさん [sage] 2010/10/05(火) 21:26:04
一文字づつ文字列を連結するのは典型的な非効率糞コード
StringBuilderを使う
デフォルトの名無しさん [sage] 2010/10/05(火) 23:58:01
HttpWebRequestとHttpWebResponseで末尾が.のURLリクエストしてるのに
実際は末尾の.がないURLに代わってリクエストされるんだけど
対処法おしえてください
デフォルトの名無しさん [sage] 2010/10/06(水) 00:40:09
ttps://connect.microsoft.com/VisualStudio/feedback/details/386695/system-uri-incorrectly-strips-trailing-dots
現状、TcpClientとかSocketとか使うしかないんじゃないかな
デフォルトの名無しさん [sage] 2010/10/06(水) 22:22:47
CrLf区切りのテキストファイルから
何行目と指定してテキストを取り出したり、
同じように指定してその部分を置き換えたりしたいのですが、
できるとしたらどんな方法で出来るでしょうか?
デフォルトの名無しさん [sage] 2010/10/06(水) 22:32:28
簡単なのはFile.ReadAllLines
ファイルの行を置き換えたかったら全部消して書き直せばいい
デフォルトの名無しさん [sage] 2010/10/06(水) 23:03:49
レスありがとうございます。
行数が多くて一行あたりの処理が簡単なため一気に何千行の処理を行うことになるのですが
そうなると1行ごとに全部を書き換えるというのは避けた方が良いですよね?
変数に読み込んで処理すれば良いのですが、メモリの占有が大きくなるのと
プログラムが予期しない終了の仕方をした時にせっかく途中まで処理したものが
どこにも記録が残っていないという状態になってしまうので、
ファイルをピンポイントで修正していきたいと思ったのですがそういうアクセスはあまり一般的ではないでしょうか?
デフォルトの名無しさん [sage] 2010/10/06(水) 23:12:24
>行数が多くて一行あたりの処理が簡単なため一気に何千行の処理を行うことになるのですが
これ、他人が読んで意味が通じると思う?
デフォルトの名無しさん [sage] 2010/10/06(水) 23:26:35
高々何千行程度のテキスト読み込んでおくのにどんぐらいのメモリ食うと思ってんだ?
デフォルトの名無しさん [sage] 2010/10/07(木) 04:43:55
9Gくらい?
デフォルトの名無しさん [sage] 2010/10/07(木) 04:49:23
1 行につき 1 MB 使えば 1000 行で 1 GB だから、だいたいそのくらい・・・
ってばかあっー!
デフォルトの名無しさん [sage] 2010/10/07(木) 07:49:52

>ファイルをピンポイントで修正していきたいと思ったのですが
>そういうアクセスはあまり一般的ではないでしょうか?
一般的うんぬん以前に、ファイルの任意の位置にデータを挿入する事は出来ないので無理。
元々の一行の長さと、書き込もうとする一行の長さが同じなら、その場所だけ上書きすればよい。

一気に何千行も書きかえるなら、一行ずつランダムアクセスするとかえって遅くなるかもよ。
デフォルトの名無しさん [] 2010/10/07(木) 15:16:12
いったん別の一時ファイルに書き出せばいいんじゃね
StreamReaderで一行ずつ読みながらStreamWriterで平行して書き出せばいい
デフォルトの名無しさん [] 2010/10/07(木) 15:53:02
本当に困っています。
OKWaveのほうにも質問していますが、TransparencyKeyでフォーム中身を透過させて、そのフォームを最大化、そしてまた元のサイズに戻すなど、
一定のサイズ変更操作をすると、フォームのタイトルバーなどがつかめなくなってしまいます。
サイズ変更もできなくなります。
本当に困っています。何か回避方法などをご存じの方がいましたら教えてください。お願いします。
ttp://okwave.jp/qa/q6233258.html

(マルチみたいで申し訳ないです)
デフォルトの名無しさん [sage] 2010/10/07(木) 17:59:50
とりあえずそのソースうpして
デフォルトの名無しさん [sage] 2010/10/07(木) 18:06:11
みたいってマルチそのものでしょw
176 [sage] 2010/10/07(木) 18:24:20

ソースも何も、フォームデザイナで、BackColoerとTransparencyKeyを同一にしただけです。
他の設定は一切いじらずとも、百発百中でなります、
VS2008でも、VB2010 Expressでも。
176 [sage] 2010/10/07(木) 19:03:33
ttp://www.youtube.com/watch?v=sARJjxKedS8&fmt=18
こんな感じです。
最大化したっきり、上にあるフォームのタイトルバーがつかめない・・・。
デフォルトの名無しさん [sage] 2010/10/07(木) 20:04:57
うちは問題ないなー
デフォルトの名無しさん [sage] 2010/10/07(木) 20:19:18
自分で使うわけじゃないので、環境依存ならいいんですけどね。。。
ちなみにWinXPじゃ問題は起きません。Vista以降で、aero有効時にのみ起きるようです。
デフォルトの名無しさん [sage] 2010/10/07(木) 20:21:50
うちはVistaSP2だけど問題ないなー
デフォルトの名無しさん [sage] 2010/10/07(木) 20:58:57
ディスプレイドライバの相性とか
デフォルトの名無しさん [sage] 2010/10/07(木) 21:12:23
自分のフォームだけaeroオフで起動とかできないですか?
aeroがなければ上手くいくのになぁ。。。
デフォルトの名無しさん [sage] 2010/10/07(木) 21:25:35

プロジェクトのプロパティニXPの視覚効果の有効、無効の設定があったと思うけどそれじゃだめ?
うちはvista無いから試せん
デフォルトの名無しさん [sage] 2010/10/07(木) 21:28:25

そのチェック外しても、なんにも変わりませんでした。。。
デフォルトの名無しさん [sage] 2010/10/07(木) 21:32:13
うちでも再現したよ。
でも下記のコードにしたら固まらなくなったよ
private void Form1_Load(object sender, EventArgs e)
{
//大きさを適当に変更
this.Size = new Size(300, 300);
Bitmap bmp = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.WhiteSmoke, g.VisibleClipBounds);

//透明にする色
Color transColor = bmp.GetPixel(0, 0);
//画像を透明にする
bmp.MakeTransparent(transColor);
//背景画像を指定する
this.BackgroundImage = bmp;
//背景色を指定する
this.BackColor = transColor;
//透明を指定する
this.TransparencyKey = transColor;

this.TopMost = true;

}
デフォルトの名無しさん [sage] 2010/10/07(木) 21:33:20
タイトルバーはつかめるがウィンドウ境界が透明扱いになってるな
OnSizeChangedで前回のWindowStateと違ってればRecreateHandleとか乱暴なことでもする?
デフォルトの名無しさん [sage] 2010/10/07(木) 21:57:55

タイトルバーも境界もどっちも掴めません。。。


つまり画像を挟むってことですかね?
いまdsiから書き込んでるので、明日VB的文法に翻訳してみたいとおもいます。
デフォルトの名無しさん [sage] 2010/10/07(木) 22:58:27
得意気にC#でw
デフォルトの名無しさん [sage] 2010/10/07(木) 23:30:45
C#にコンプレックス持ってんのかw
仕事はVB.NETで趣味アプリはC#でやってて
今、家だからPCにはC#しか入ってないんだよw
デフォルトの名無しさん [sage] 2010/10/08(金) 05:47:58
バカ?
ここは何スレだっつの
デフォルトの名無しさん [sage] 2010/10/08(金) 11:59:10
じゃあ、わざわざC#スレでレスしろってかw
めんどいだろJK
デフォルトの名無しさん [sage] 2010/10/08(金) 13:45:25
質問です。
VB2010でVBの勉強をしているのですが、
ボタンを押すことによってテキストボックスに入力されている文字をテキストファイルに出力したいのですが
以下のコードではうまくいきません

Dim Writer As New IO.StreamWriter("C:\vb.txt")
Writer.WriteLine(TextBox1.Text)

Writer.Close()

デバッグしてもエラーは出ないし、ボタンを押しても何も起きない状況です
どなたかご教示お願いします
デフォルトの名無しさん [sage] 2010/10/08(金) 14:02:16
2010は知らないけど
ttp://dobon.net/vb/dotnet/file/writefile.html
じゃだめなの?
デフォルトの名無しさん [sage] 2010/10/08(金) 14:21:48

だめです。
GUIデザイナのプロパティからTranceparecyなどの設定を削除して、フォームリロード時にお示しのコードを実行するようにしましたが、
やはりタイトルバーなどがつかめない状態になりました・・・。
デフォルトの名無しさん [sage] 2010/10/08(金) 14:29:13

じゃダメ?
デフォルトの名無しさん [sage] 2010/10/08(金) 14:41:21

をやると、正常になりますが、最大化したときだけじゃなく、
普通にサイズ変更しただけでもなる場合があるので、いくらかは問題は軽減しますが、全解決とはなりません・・・。
デフォルトの名無しさん [sage] 2010/10/08(金) 14:43:48
resizeendイベントでもやればいいんじゃないの?
デフォルトの名無しさん [sage] 2010/10/08(金) 14:44:46
なるほど。。。
瞬間にチカチカするのは代償と考えてあきらめるしかないですかね。
デフォルトの名無しさん [sage] 2010/10/08(金) 14:46:51
フォームが透明になるだけでもありがたく思わないと
デフォルトの名無しさん [sage] 2010/10/08(金) 14:49:13
でもまぁ、そうですけど、何も問題がない人との違いは何なのかと・・・。
まぁ、設定で、おかしくなる人ようの設定かなんかをもうけてもいいですし、その辺は臨機応変にやろうと思います。
デフォルトの名無しさん [sage] 2010/10/08(金) 14:50:17
問題ないって書いたのは全部俺だけど
全部うそだよw
デフォルトの名無しさん [sage] 2010/10/08(金) 14:50:35

ファイル名にコロンや垂直タブって無理じゃね?
デフォルトの名無しさん [sage] 2010/10/08(金) 14:51:31
さん
これでできました。ありがとうございました!
デフォルトの名無しさん [sage] 2010/10/08(金) 14:57:08
も嘘かもしれないので、信じないとしても、
何とか例の現象は解決(?)いたしました。
リサイズができなくなったときのために一応つけておいたステータスバーも取り払うことができ、
当初意図していたとおりのソフトができそうです。
皆様、アドバイス等ありがとうございました。
デフォルトの名無しさん [sage] 2010/10/09(土) 23:22:31
For i As Integer = 1 To 100
Next

の中でiを1から100の間で戻したり進めたりするのは何も問題ないでしょうか?
デフォルトの名無しさん [sage] 2010/10/09(土) 23:25:12
気になるんだったら別の書き方すればいいのに
デフォルトの名無しさん [sage] 2010/10/09(土) 23:49:26
問題ないけどそういう使いかたするならあえてfor nextを
使わないのがいいと思う
デフォルトの名無しさん [sage] 2010/10/10(日) 22:41:57

トンクス
デフォルトの名無しさん [sage] 2010/10/14(木) 11:32:35
宇宙語を話す皆さんに質問です
プログラミング用語の『スロー』ってどういう意味?(”投げる”とか答える人はまだ地球人)

なんか、こう、イメージの掴める解説ってないのかね
デフォルトの名無しさん [sage] 2010/10/14(木) 12:34:30
マルチ乙
デフォルトの名無しさん [] 2010/10/14(木) 13:07:36
異常系世界へgotoするってこと
その際のスペースカプセルが例外
デフォルトの名無しさん [] 2010/10/14(木) 15:43:35
linux上でunixを使いCUIの環境で、日の丸の国旗の画像を作るプログラミング、教えてください
デフォルトの名無しさん [sage] 2010/10/14(木) 16:20:31
スレチ
デフォルトの名無しさん [] 2010/10/14(木) 22:36:51
ttp://www.mediafire.com/?78a7las051tizi0

↑こんな感じでどう?
即席で作ってみたけど
デフォルトの名無しさん [sage] 2010/10/15(金) 01:19:03
プリンタドライバをインストールしたいのですが、「プリンタ名が無効です」と表示されて上手くいきません。
どこがまずいかご教授お願いします。

必要なファイルは事前に C:\Windows\system32\spool\DRIVERS\W32X86 にコピー済みで、
ファイルをフルパスで指定しても同じ結果になります。

Public Shared Function DriverInstall(ByVal strDriverName As String) As Boolean
Dim di As New DRIVER_INFO_3
With di
.cVersion = 3
.pConfigFile = "ps5ui.dll"
.pDataFile = strDriverName & ".ppd"
.pDependentFiles = "pscript.ntf" & vbNullChar _
& "pscript.hlp" & vbNullChar _
& "ps5ui.dll" & vbNullChar _
& strDriverName & ".ppd" & vbNullChar _
& "pscript5.dll"
.pDriverPath = "pscript5.dll"
.pEnvironment = "Windows NT x86"
.pHelpFile = "pscript5.hlp"
.pMonitorName = String.Empty
.pName = strDriverName
.pDefaultDataType = "RAW"
End With

If AddPrinterDriver(String.Empty, 3, di) = 0 Then
Dim ExcptWin32 As New Win32Exception(Marshal.GetLastWin32Error())
MessageBox.Show(ExcptWin32.Message, "Win32Err", MessageBoxButtons.OK)
Return False
End If
Return True
End Function
デフォルトの名無しさん [sage] 2010/10/15(金) 01:26:27
一応、APIの宣言部分も貼っておきます。
AddPrinterDriverW を AddPrinterDriverA に変えると、エラーメッセージは「パラメータが間違っています」になります。

Private Declare Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverW" _
(ByVal pName As String, _
ByVal Level As Integer, _
ByRef pDriverInfo As DRIVER_INFO_3) As Integer

Public Structure DRIVER_INFO_3
Public cVersion As Long
Public pName As String
Public pEnvironment As String
Public pDriverPath As String
Public pDataFile As String
Public pConfigFile As String
Public pHelpFile As String
Public pDependentFiles As String
Public pMonitorName As String
Public pDefaultDataType As String
End Structure
デフォルトの名無しさん [] 2010/10/17(日) 00:05:45
あげとく
デフォルトの名無しさん [sage] 2010/10/20(水) 16:20:40
じゃ、俺は下げとく。
デフォルトの名無しさん [sage] 2010/10/21(木) 01:16:55
C#だと拡張メソッドでenumを拡張できるけど、VBはできるん?
デフォルトの名無しさん [sage] 2010/10/21(木) 11:05:07
VBでは拡張メソッド専用の構文を準備していないため次のように属性を直接指定する。
Imports System.Runtime.CompilerServices
Module StringExtensions
    <Extension()> _
    Public Sub Print(ByVal aString As String)
        Console.WriteLine(aString)
    End Sub
End Module

同じ要領でenumでも出来るはず、やってみて。
デフォルトの名無しさん [sage] 2010/10/21(木) 23:34:28

なるほど、試してみる
デフォルトの名無しさん [sage] 2010/10/26(火) 20:28:20
DLL改ざん出来ないように厳密名付けたんだけど、
この場合バージョン管理ももれなく付いてくるの?
アセンブリバージョン上げたら呼び出し側でエラーが出るんだけど…
対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?
デフォルトの名無しさん [sage] 2010/10/26(火) 21:57:25
基本的には厳密名つける=バージョン管理を行う。

>対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?
もしくはconfigファイルでバージョンリダイレクト。
もしくは全ビルド。
デフォルトの名無しさん [sage] 2010/10/26(火) 21:58:25
>DLL改ざん出来ないように厳密名付けたんだけど、
実はあんまり意味ないよね。
デフォルトの名無しさん [sage] 2010/10/27(水) 00:18:19
>もしくはconfigファイルでバージョンリダイレクト。
これは"呼び出し側exe.config"にバージョンポリシーを記述して配置するイメージですよね?

>実はあんまり意味ないよね。
えw
デフォルトの名無しさん [sage] 2010/10/27(水) 18:23:08
すみません、初歩的で申し訳無いのですが
横2列のcsvを二次配列に入れるプログラムが作れません。

field()でテキストをReadlineして
field-Aに二次配列で入れるループを書いてます。
untilのループ内に変数Xを利用すると下記のエラーが出ます
「Exception.InnerException を参照してください。エラー: オブジェクト参照がオブジェクト インスタンスに設定されていません。」

Dim field() As String
Dim field-A(,) As String
Dim reader As New System.IO.StreamReader("field.csv", System.Text.Encoding.Default)
Dim X As Integer

X = 0

Do Until reader.EndOfStream

line = reader.ReadLine()
field = line.Split(",")

field-A = Nothing
field-A(X, 0) = field(0)
field-A(X, 1) = field(1)

X = X + 1

Loop

csvの中身
フィールドA-01,フィールドB-01
フィールドA-02,フィールドB-02
フィールドA-03,フィールドB-03
デフォルトの名無しさん [sage] 2010/10/27(水) 18:25:30
field-A(X,0)の行でどうもエラーが出るようです。

・他にもっと簡単な方法があると思うが浮かばない
・変数Xのuntil内での使い方がおかしいorスコープがおかしいが、原因がわからない
(UNTIL内でX=0とするとエラーが起きないんですがループでリセットするわけにはいかない)

上記2点、わかる方いらっしゃいますでしょうか?
宜しくお願いします。
デフォルトの名無しさん [sage] 2010/10/27(水) 19:05:03

>field-A(X,0)の行でどうもエラーが出るようです。
field-Aを使用する前(Do Loopの前)にあらかじめ2次元配列を作成する
field-A = New String(2, 1) {}

>他にもっと簡単な方法
2次元配列使わないでいいのならListとか使ったほうが楽

>変数Xのuntil内での使い方がおかしいorスコープがおかしい
どうおかしいのか分からない
デフォルトの名無しさん [sage] 2010/10/27(水) 19:10:21

オブジェクト参照がオブジェクト インスタンスに設定されていません。

というエラーが出てフォームも立ち上がらない状態です。
untilの外側で宣言したXがインスタンスオブジェクトと認識されてるとかなんとか

そこまでしか情報がわかりませんでした。
Nothingで解決かと思ったら解決せず。
デフォルトの名無しさん [sage] 2010/10/27(水) 20:33:20
配列っていうのは事前にメモリを確保してから使うんだよ?
確保するコードを追加しよう。

だけど、行数わかる?ファイル読み込まないと分からないよな?
つまりこの処理に配列は合わない。
随時メモリを拡張してくれるListの方が適切
デフォルトの名無しさん [sage] 2010/10/27(水) 21:14:07
太古の時代では一行目にデータ数書いたりしてたな
デフォルトの名無しさん [sage] 2010/10/27(水) 21:22:19
>>実はあんまり意味ないよね。
>えw
あんまり役に立つ場面てないよね、に言いかえよう。
デフォルトの名無しさん [sage] 2010/10/27(水) 21:43:46

ありがとうございます!
配列の最大数を宣言しないとだめなんですね。

Dim field-A(10,2) As String

と数値を入れて宣言したら思い通り動作しました。
それからListが良いということですので使ってみます。

全て解決です。皆さんありがとうございました。
デフォルトの名無しさん [sage] 2010/10/28(木) 01:54:46

配列が向かないのはまあ同意するが
たまには ReDim Preserve の事も...いや、思い出さなくてもいいか
デフォルトの名無しさん [sage] 2010/10/28(木) 08:22:50

msdnによると
ttp://msdn.microsoft.com/ja-jp/library/w8k3cys2(VS.80).aspx
>Preserve を使った初期化。Preserve 修飾子を指定した場合、Visual Basic では、
>既存の配列から新しい配列に要素がコピーされます。
とあるから、結局はコピー、つまり遅いんでしょ?
デフォルトの名無しさん [sage] 2010/10/28(木) 10:38:43
一要素ずつ拡張してたら糞遅いわな
List(Of T)は容量があふれるたびに内部の配列のサイズが2倍になる
同じことを自分でやってもいいけど時間の無駄
デフォルトの名無しさん [sage] 2010/10/28(木) 12:49:22
拡張と見せかけた再割り当てってのが嫌なんだよ。
VB6では桁違いに速い。
デフォルトの名無しさん [sage] 2010/10/28(木) 19:46:52
いや再割り当てはどっちみち必要だろ
VB6は内部でListみたいなことをやってるだけ
デフォルトの名無しさん [sage] 2010/10/28(木) 20:48:49
そうなの?
実はその辺自信無くて試したんだけど、10倍ぐらい違ったからそうだろって…
デフォルトの名無しさん [sage] 2010/10/28(木) 20:52:08

なんか物凄く馬鹿っぽいご意見ですいこと....
デフォルトの名無しさん [sage] 2010/10/28(木) 21:09:43
は間違ってないよ
List(Of T)は再割り当て時には現在の倍の容量を確保して新しい領域に現在の要素をすべてコピーする
要素が追加されるたびに再割り当てというような馬鹿なことはしない
デフォルトの名無しさん [sage] 2010/10/28(木) 22:17:26
一般的なListの伝統ですな
242 [sage] 2010/10/28(木) 23:27:06
もう一度やってみたら、
確かに要素数の増加に伴って拡張に必要な時間が増えますね・・・

にしても.net遅すぎる気が・・・
.netはinteger、VBA(VBが手元に無い為)はlongの一次元配列で、
要素数を0から350000まで1づつ増やすコードをそれぞれで実行した結果、
書くのも恥ずかしいぐらいの差がついちゃいました。

コード間違えたかなぁ・・・
デフォルトの名無しさん [sage] 2010/10/28(木) 23:45:54
.NETでは確実に額面通りの動作をするから不自然なのはVBAの方だろう
ループの中でRedim Preserveしたりするバカが多いから変な最適化してるんじゃないの
デフォルトの名無しさん [sage] 2010/10/30(土) 00:48:22
たまたま空きが後ろにあればそのまま拡張できる実装になってるんじゃない?
.NETの場合はメモリ管理上確実に再確保とコピーが必要。
デフォルトの名無しさん [sage] 2010/10/31(日) 01:26:31
VB2010、.Net Framework4.0で、Byte型変数の値を、10進数に変換し、Integer型の
変数に代入したいと思っています

Dim BBB As Byte
Dim III As Integer

という宣言で、BBBに「10」と入っている時に、IIIにどうにかして「16」と、10進数に
変換した結果を代入させたいと思っているのですが、どうしたらよいのでしょう?

III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…

ToInt16とかを実行するために、2バイトのバイト列とかにしないとダメなのでしょうか?
デフォルトの名無しさん [sage] 2010/10/31(日) 01:38:32

III=BBB
デフォルトの名無しさん [sage] 2010/10/31(日) 01:46:55

それは何度も試しててムリぽ…と思ってもう一度やってみたら、できました…

ありがとうございました

何でできないって思ったんだろ?
もう寝ます…
デフォルトの名無しさん [sage] 2010/10/31(日) 07:39:59

できなくね?
何か勘違いしてると思われ
16進数というのは16進数表記の事で、中身の数値じゃないよ。
5という数値を表す場合、"5"、"X"、"五"、"○○○○○"、
といろいろあるが、そのひとつが16進数で、どれもStringで表現される。
III = Convert.ToInt32("10", 16)
が正解。
>III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…
ToInt16の16は16bit整数型(Short)で16進数という意味は無いよ。
デフォルトの名無しさん [sage] 2010/10/31(日) 10:49:33

>10進数に変換し
人間が見えるように出力するときにやるもんだろ

>BBBに「10」と入っている時に
まずここは何進数で「10」のつもりなんだ?
BBBに値を代入したコードはどうなってるんだ
デフォルトの名無しさん [sage] 2010/10/31(日) 14:57:34
で解決したって言ってるんだから
単にバイト変数の中身を整数変数に代入したかっただけの話だろ?

デフォルトの名無しさん [sage] 2010/10/31(日) 20:24:40
どうして、VB.NET ってあまり流行らないんですか?
どの案件みても、C++とかJavaとかC#とかPHPとか
デフォルトの名無しさん [sage] 2010/10/31(日) 20:28:42
C#でいいならVBをわざわざ選ぶ意味はないよ
どっちかというとVB6上がりでC触れないとかネガティブな理由で使う言語だからね
デフォルトの名無しさん [sage] 2010/10/31(日) 21:36:47
VB.netも楽しいけど、C#の方が強力だし、VBの文法って汚いし…
やたら融通の効く所はいいと思うんだけど。
デフォルトの名無しさん [sage] 2010/10/31(日) 22:45:44

Microsoft的には非IT系のGeekなプロフェッショナル向けの言語。
要は会計士とか医師でプログラミングもしちゃうぜ的な人向け。
デフォルトの名無しさん [sage] 2010/10/31(日) 22:52:28
いつの時代のVBのコンセプトだよそれ。
デフォルトの名無しさん [sage] 2010/10/31(日) 22:57:06
システム部門が独立してできたようなところだとVBが主戦力多いよ
往々に.net移行が遅れてたりする
デフォルトの名無しさん [sage] 2010/10/31(日) 23:08:41
非情報系の人にはC系は難しいからVBっていうのはもう古いよ。
実際JavaやC#ならVBと変わらん。MSの囲い込みイメージ戦略に騙されてるだけ。
デフォルトの名無しさん [sage] 2010/11/03(水) 17:01:16
ASP.NETを使うことになったのですが、おすすめの本などありましたら教えてください
デフォルトの名無しさん [sage] 2010/11/04(木) 00:28:54

ttp://hibari.2ch.net/test/read.cgi/tech/1288035953/137
デフォルトの名無しさん [] 2010/11/04(木) 03:23:01
マルチごめんなさい。
急にプログラマーに仕事が決まり、ASP.NETが必要になったのですが、
適当なスレがなかったようなのでマルチになってしまいました。
謝罪をさせていただいた上でまた質問させてください。
みなさんはASP.NETの勉強はどうしてるんですか?
おしえてください。使ってない人もいるかもしれませんが・・
デフォルトの名無しさん [sage] 2010/11/04(木) 11:05:31
ASP.NETなんて勉強しなくても使えるからなぁ。
デフォルトの名無しさん [sage] 2010/11/04(木) 11:06:54
RequestオブジェクトとResponseオブジェクトがあれば
なんでもできるし。
デフォルトの名無しさん [sage] 2010/11/04(木) 13:30:28
プログラムできない奴はプログラマとしての仕事をするな
時間と金の無駄だ
デフォルトの名無しさん [sage] 2010/11/04(木) 13:56:28
誰にでもできる簡単な仕事です。
デフォルトの名無しさん [sage] 2010/11/04(木) 16:22:03
文系理系関係ありません
ただ学歴高い方が発注元に単金を高く請求できるので
デフォルトの名無しさん [sage] 2010/11/04(木) 16:48:57
高卒でプログラマやってます
デフォルトの名無しさん [sage] 2010/11/04(木) 17:20:45
その場合は資格をいっぱい取ればおk
デフォルトの名無しさん [sage] 2010/11/04(木) 18:17:44
オラクルマスターを取りなさい
デフォルトの名無しさん [sage] 2010/11/04(木) 18:27:34
テクデとテクネなら持ってます。
デフォルトの名無しさん [] 2010/11/04(木) 20:51:45
知恵袋でも質問したけど回答がつかなのでここでも聞かせてください


自分のサイトを読み込んでリンクさせるてリンクをクリックすると規定のブラウザで開く方法ってありますか?
要はリファラを残したい。。。
デフォルトの名無しさん [sage] 2010/11/04(木) 21:00:44
日本語でおk
デフォルトの名無しさん [] 2010/11/04(木) 21:04:49
リファラを残す方法はありますか?
デフォルトの名無しさん [sage] 2010/11/04(木) 21:10:54
リファラが何かわかっているのかい?
HTTPヘッダだよ
それがわかればどうとでもできることがわかるよ
デフォルトの名無しさん [] 2010/11/04(木) 21:32:25
リンク元のページのことじゃないの??



デフォルトの名無しさん [sage] 2010/11/05(金) 11:19:49
環境はVB.NET 2008 Express Edition + Windows XPです。
Visual Studioエディタ内で子ウインドウをキーボードで切り替えるとき、
Ctrl+Tabキーで一覧が表示されますが、ここで
Enterキーまたはマウスでクリックしなくても切り替えられますか?
デフォルトの名無しさん [sage] 2010/11/05(金) 19:45:34
スペースキーでもOK(たぶん)
念力でもOK(エスパーなら)
っていうか、何が聞きたいんだ
デフォルトの名無しさん [] 2010/11/05(金) 20:50:48
質問です。
VisualStudio2003proとSqlserver2005developerを持っているのですが、
この組み合わせではADO.NET2.0の機能を使うことはできませんか?
test.vb [sage] 2010/11/05(金) 21:44:14


意味わからないけど
既定のブラウザでURLを開くだけなら
Process.Start("ttp://example.com/")
デフォルトの名無しさん [] 2010/11/05(金) 23:39:21
私はJAVAしかやったことなくて今度VBもやらないといけないことになったのですが、
今までは、オブジェクトというのは変数とメソッドが一緒になった固まりだと思ってました。
しかし、VBのサンプルコードを読むと、

Dim fm As Object

fm = 2.73

という構文が出てきたんですが、どうやらこれはVBでは間違っていないようなんです
fmをオブジェクト宣言したのなら、まずはそこからインスタンスを作って、さらに
インスタンスの変数。つまりfm.hensuu =2.73 みたいな形ならわかるのですが、
いきなりオブジェクトとして数値が宣言されて、いきなり数字が代入されるなんて・・
VBではオブジェクトの意味がJAVAと違うんでしょうか・・おしえてください
デフォルトの名無しさん [sage] 2010/11/05(金) 23:45:07
ほんとにJavaやってんの?
それJavaでもできるよ(Java5以降)。オートボクシングという。
.NETではボクシングは実行エンジン自体に組み込まれてて、Javaのオートボクシングよりももっと柔軟。
デフォルトの名無しさん [sage] 2010/11/06(土) 00:07:27

JAVAにもあるん・・・なんだかわからない・・
まずはインスタンス化しないと変数は代入できないんじゃなかったけ?
ましてオブジェクトは固有だから、変数がいくつあるかわからないし・・
デフォルトの名無しさん [sage] 2010/11/06(土) 00:12:25

VB(というか.net)にはobject型という型があるんだよもん

つーか入門書ぐらいけちらず買えよ
それかMSDN読むか
Javaと違ってMSDNの日本語化はわりと深い所までちゃんとされてるからいいぞ
デフォルトの名無しさん [sage] 2010/11/06(土) 00:13:58
Javaでもこう書ける
Object fm;
fm = 2.73;
2行目は省略形で書かれていて、省略せずに書けば次のようになる。
fm = Double.valueOf(2.73);
Double.valueOf(2.73)の処理はボクシングと呼ばれる。
.NETでもこれと同じような処理が自動的に行われている。
これでわかんないならVBと比べる以前にJavaを入門書からやり直すべき。
デフォルトの名無しさん [sage] 2010/11/06(土) 00:15:33
何が言いたいのかよーわからんけど、
Object型のインスタンスなんて、スレッドの同期オブジェクトが欲しいときぐらいしか作らないよw
デフォルトの名無しさん [sage] 2010/11/06(土) 00:31:43
普通は、intやdoubleなどの単一の値も、
全てオブジェクトとして扱うのがオブジェクト指向的には自然なんだよ
Javaは設計が古いのでそうなってないが.NETは実際に全部オブジェクトとして扱えるということ
デフォルトの名無しさん [sage] 2010/11/06(土) 00:36:52
javaもまともにできてたとは思えんな。
デフォルトの名無しさん [sage] 2010/11/06(土) 13:37:13
.net前のMSDNとかは、変な翻訳とかも混ざって非常に分かり難かったが
最近のは割とまともにローカライズされて見やすくなったよな
新しく使うクラスとかはとりあえずF1押して概要とかメンバーとか見るのが癖になってる
デフォルトの名無しさん [sage] 2010/11/06(土) 15:26:46




ありがご当皆さん・・勉強してみます・・・
デフォルトの名無しさん [sage] 2010/11/07(日) 01:58:54
・注文テーブル
注文番号(PK) 都道府県コード 市区町村コード 以下、注文日時とか商品IDとか諸々

・都道府県マスター
都道府県コード(PK) 都道府県名

・市区町村マスター
都道府県コード(PK1) 市区町村コード(PK2) 市区町村名

とこんなテーブルがあったとして、DataGridViewにBindingSourceを設定して、都道府県を
表示させるまでは良いのですが、市区町村に複合キーを投げる方法が分からず。
仕方がないのでテーブルアダプタにWHERE 都道府県コード=@都道府県コードみたいなメソッドを用意して、
データテーブルを取得するようにコードを書いたのですが、もっとスマートなやり方ってないもんですか?



デフォルトの名無しさん [sage] 2010/11/09(火) 00:22:51
javascriptを含むhtmlのソースをダウンロードして表示したいです。
ttp://dobon.net/vb/dotnet/internet/webclientopenread.html
ここの方法でダウンロードは出来たのですが、javascriptがソースコードのままになってしまいます。
javascriptによってhtmlが生成された後のhtmlをダウンロードするにはどうすればいいでしょうか?
デフォルトの名無しさん [sage] 2010/11/09(火) 01:57:19
またドボン!か・・・。
いい加減、ドボンはもういいよ。

俺なんか、7年前に買ったものを大事に使うあまり、
流行から取り残されていってるんだぞ?
7年以上も続けているドボンを見てるとイライラしてくる。
そろそろ身を引いたらどうなのよ、って。

ドボンはアーカイブ(過去ログ)だけ残して、
後は若い奴らに譲ろうぜ?
若い奴らに新しいVBサイトを構築させていこうぜ。
デフォルトの名無しさん [sage] 2010/11/09(火) 07:15:46
そうは言っても若い奴らが好き好んでVBなんか使うと思うか?
デフォルトの名無しさん [] 2010/11/09(火) 09:04:25
こんにちは。スレチでこちらに飛んできました。

ディスプレイが省電力モードに移行をしたかを知るために、下記のように作ってみました。

<System.Runtime.InteropServices.DllImport("user32.dll")> Shared Function MonitorFromPoint(ByVal x As Integer, ByVal y As Integer, ByVal dwFlags As Integer) As IntPtr
End Function

<System.Runtime.InteropServices.DllImport("kernel32.dll")> Shared Function GetDevicePowerState(ByVal hDevice As IntPtr, ByVal pfOn As Integer) As Integer
End Function

Public Shared Sub PowerState()

Dim hWnd As IntPtr
Dim Ret As Integer
Dim Pw As Integer

hWnd = MonitorFromPoint(&H0, &H0, &H2)
Ret = GetDevicePowerState(hWnd, Pw)

MsgBox(Pw)

End Sub

こんな感じにやりましたが、ダメでした。
そもそも、ハンドルが取得できない。

何かよい方法はないでしょうか??
デフォルトの名無しさん [sage] 2010/11/09(火) 10:30:53
MonitorFromPointの引数は2つになってるね。
ttp://msdn.microsoft.com/ja-jp/library/cc410472.aspx
デフォルトの名無しさん [sage] 2010/11/09(火) 11:40:35

そんなの無理じゃね?
デフォルトの名無しさん [sage] 2010/11/09(火) 11:54:15

javascriptのdocument.writeなどで書き出すhtmlを展開したいと言ってるの?
WebBrowserコントロールにいったん読み込んで、
それのdomから取得すればできるかもしれないな。
デフォルトの名無しさん [sage] 2010/11/11(木) 10:28:36
データベース接続で質問です。

こんなやり方と
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "接続文字列";

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sqlStr;

こっちのやりかた
何が違うのでしょうか。

SqlConnection conn = new SqlConnection("接続文字列");

SqlCommand cmd = conn.CreateCommand();
cmd.CommandText =sqlStr;

301 [age] 2010/11/11(木) 10:31:21
なぜこんな質問したかというと、
efreedom.com/Question/1-442465/InvalidOperationException-Executing-SqlCommand-Transaction
にスレッド処理でエラーが発生したんだよって報告があったので。
デフォルトの名無しさん [sage] 2010/11/11(木) 11:50:46
同じです。
デフォルトの名無しさん [sage] 2010/11/13(土) 09:22:42
しょぼいPCで開発してる奴は死ね
デフォルトの名無しさん [sage] 2010/11/13(土) 21:58:19
LabelのBorderColorを変更出来るようにする
初歩的なことですみません。
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim aPen As New Pen(m_BorderColor, 1)
Dim aRect As Rectangle() = {New Rectangle(0, 0, Width - 1, Height - 1)}
e.Graphics.DrawRectangles(m_Pen, m_Rect)
MyBase.OnPaint(e)
End Sub

見た目には実装されているのですが、BorderStyleとは無関係に四角を描いてるだけです。
本来のBorderStyleを拡張するにはどうしたら良いのでしょうか?
デフォルトの名無しさん [sage] 2010/11/13(土) 22:46:29
BorderStyleをNoneにする
デフォルトの名無しさん [sage] 2010/11/13(土) 23:38:53
NoneにしてPaddingを全部1とかにするのがやっぱり簡単ですかね
デフォルトの名無しさん [sage] 2010/11/13(土) 23:44:18
「本来のBorderStyleを拡張」ってどういう意味なんだ。

小学生じゃないんだから相手にエスパー能力を期待しているとしか思えないような
質問するなよと。
デフォルトの名無しさん [sage] 2010/11/14(日) 00:13:24

ControlPaint.DrawBorder/DrawBorder3D
デフォルトの名無しさん [sage] 2010/11/15(月) 01:35:26
Part20にあった質問なんだけど、この答えを知りたいです。

BindingSourceとTextBoxをバインドしています。
BindingSourceのカレントレコードが変更される際に入力をチェックして、
入力のキャンセルや、レコード移動のキャンセルを行いたいのですが、
どうしたらいいでしょうか。

PositionChangedやCurrentChangedイベントで出来るかと思ったのですが、
これらは移動後に発生するみたいですし。

よろしくお願いします。
デフォルトの名無しさん [sage] 2010/11/15(月) 13:19:24
ハゲ以外で。
デフォルトの名無しさん [sage] 2010/11/15(月) 22:51:39
>入力のキャンセルや、レコード移動のキャンセル

意味が分からん
デフォルトの名無しさん [sage] 2010/11/15(月) 23:13:58
Gridのセル編集を開始したら保存ボタンを押すまで他の行の編集が出来ないようにしたいって話なんだけど…
デフォルトの名無しさん [sage] 2010/11/16(火) 00:25:02
自己解決しました
ttp://www.eggheadcafe.com/software/aspnet/30776891/how-to-cancel-bindingsourcepositionchanged-event.aspx
デフォルトの名無しさん [sage] 2010/11/17(水) 02:34:48
ユーザコントロールをコンボボックス風にドロップダウンで表示させたいんですが、やり方が全く分かりません。
どなたか参考になりそうな日本語サイトをご存じないですか?
デフォルトの名無しさん [sage] 2010/11/17(水) 09:06:22
そういうのはWPFだろ
WPFで作ったコンボをVBに読み込むとか。
正攻法は大変だと思う
デフォルトの名無しさん [sage] 2010/11/17(水) 09:07:20
もうどうでもいいからリストボックスでも表示してやれよ
デフォルトの名無しさん [sage] 2010/11/17(水) 21:44:07
初心者スレに行くべきか悩んだんですが、型変換に関して
とあるAPIの関数を呼び出しているんですが

Public Declare Function ADC_SetConfig Lib "AIOUSB" Alias "VBADC_SetConfig" (ByVal DeviceIndex As UInteger, ByRef pConfigBuf As Byte, ByRef ConfigBufSize As UInteger ) As UInteger

これの第2引数、pConfigBuf。ヘルプには以下のような構造体が書かれていました。
' Config 構造体
<SerializableAttribute()> <ComVisibleAttribute(True)> _
Public Structure TUSBAI1616Config
Dim ChannelRange() As Byte
Public Sub Initialize()
ReDim ChannelRange(0 To &HF)
End Sub
Dim CalibMode As Byte
Dim TrigMode As Byte
Dim StartStopCH As Byte
Dim Oversample As Byte
End Structure

この構造体を第2引数のとおり、Byteとして渡したいんですがどう変換したらいいんでしょうか?
AllocHGlobal→StructureToPtrで取得したポインタを渡したら0除算云々と怒られました
3日3晩悩んで試行して解決できず、エロい人知識を貸してください
デフォルトの名無しさん [sage] 2010/11/17(水) 22:00:14
そのDeclare宣言は変えられんの?
ByRef As TUSBAI1616Config
って定義するだけなんだけど
デフォルトの名無しさん [sage] 2010/11/17(水) 22:23:02

Declareの宣言は勝手に変えるな馬鹿と言われて来たせいもあってか、その発想には至りませんでした。
明日試してみます。

オンラインマニュアル無いと思ってたらありましたので一応
ttp://accesio.com/MANUALS/AIOUSB_API_Reference.html#ADC_SetConfig


※サンプルプログラム(VB6)で使用されていた例
Private Type TUSBAI1616Config
ChannelRange(0 To &HF) As Byte
CalibMode As Byte
TrigMode As Byte
StartStopCH As Byte
Oversample As Byte
End Type

ADC_SetConfig DeviceIndex, Config, ConfigBufSize

これを、.net向けにのように私が構造体を定義しなおしました。
デフォルトの名無しさん [sage] 2010/11/17(水) 22:49:57
VB6サンプルじゃなぁ…
デフォルトの名無しさん [sage] 2010/11/19(金) 01:09:46
テーブルの数だけテーブルアダプタが作成されてコーディングが非常に面倒なんですけど、
テーブルアダプタの共通化についてサンプルがあるWebサイトかなんかありますか?
デフォルトの名無しさん [] 2010/11/19(金) 20:41:50
俺はデザイナーからコードを引っこ抜いて、簡易的な汎用テーブルアダプタを作った
どうせUpdateメソッドしか使わないからねぇ
デフォルトの名無しさん [] 2010/11/21(日) 21:31:09
VB.netでコマンドライン引数を扱いたいのですが
取得する方法がいまいち分りません
どのようにすれば良いのでしょうか?
デフォルトの名無しさん [sage] 2010/11/21(日) 21:35:41
Environment.GetCommandLineArgsとか、My.Application.Startupイベントの引数とか
デフォルトの名無しさん [sage] 2010/11/21(日) 21:48:11
自己解決しました
以下の方法で取得できました
お騒がせしました

Dim returnValue As String()

returnValue = Environment.GetCommandLineArgs
デフォルトの名無しさん [sage] 2010/11/21(日) 21:50:47
skshggrksg

起動時のコマンドライン引数を取得する
ttp://dobon.net/vb/dotnet/programing/commandline.html

@IT:.NET TIPS コマンドライン引数を取得するには?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html

【VB.NET】外部から引数を受け取るプログラムを作成する
ttp://blog.livedoor.jp/akf0/archives/51333101.html

コマンドライン引数の取得
ttp://go2vb.cocolog-nifty.com/blog/2007/04/post_1b46.html

.NET 入門 VB.NET - コマンドライン引数を扱うには... (2)
ttp://itnandemolab.blog70.fc2.com/blog-entry-2364.html
デフォルトの名無しさん [sage] 2010/11/21(日) 23:22:35
もう解決してるのに嬉しそうに貼らなくていいです
デフォルトの名無しさん [sage] 2010/11/21(日) 23:38:35
なにそれひどい。
デフォルトの名無しさん [sage] 2010/11/22(月) 09:43:01
vb.net コマンドライン
でぐぐれば出てくるのにマジでぐぐる前にここで
質問してるのか
いい加減にしとけよ
デフォルトの名無しさん [sage] 2010/11/22(月) 12:43:48
加減は見たつもり
デフォルトの名無しさん [sage] 2010/11/23(火) 17:40:40
Form1の起動時に(チェック処理に引っ掛かった場合には)
Form2を起動するコードを次の様に記述したのですが
なぜか、Form1が消えません。

※*_Loadイベントだけでは無く*_Shownイベントでも
試したのですが駄目でした。

どうすればForm1を非表示にした状態で、
Form2を起動する事が出来ますでしょうか?

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  ' 〜 チェック処理 〜
  Dim ins As New Form2
   Me.Hide()
   ins.Show()
   Me.Show()
End Sub
デフォルトの名無しさん [sage] 2010/11/23(火) 18:00:05
ins.ShowDialog(Me)
デフォルトの名無しさん [sage] 2010/11/23(火) 18:00:25
ハライテw
デフォルトの名無しさん [sage] 2010/11/23(火) 18:24:41
RitchTextboxの内容を印刷したいんだけど
VB2010でもまだそのまま印刷ってのは実装されてないんだっけ?
サンプル探してもシルバーライトの物しか出てこないから
なにか良いサンプル有ったら教えて欲しい
デフォルトの名無しさん [sage] 2010/11/23(火) 18:33:20
開発環境のバージョンとは何の関係もない話だと思うが
WinFormの話ならEM_FORMATRANGEとか使えば
デフォルトの名無しさん [sage] 2010/11/23(火) 18:45:54

ありがとうございます!!解決しました!!
デフォルトの名無しさん [sage] 2010/11/23(火) 19:11:24

ありがとう
調べてみます
デフォルトの名無しさん [sage] 2010/11/23(火) 19:35:12

Visual Basic .NET または Visual Basic 2005 を使用して RichTextBox コントロールの内容を印刷する方法
ttp://support.microsoft.com/kb/811401/
デフォルトの名無しさん [sage] 2010/11/23(火) 20:10:27

ありがとう
まるまるコピペしてつかってみます
デフォルトの名無しさん [] 2010/11/25(木) 12:43:06
VB2010expressでTextboxを配列化して順に配列の文字を入れたいが
どうやってもできない。
NULL扱いされる。

誰か助けて。
デフォルトの名無しさん [sage] 2010/11/25(木) 13:00:22
エスパーすると、配列をNewした後、TextBoxをNewしてないから。
デフォルトの名無しさん [sage] 2010/11/25(木) 14:13:11
Controls.OfType(Of TextBox)().ToArray()
とかでいいよ
デフォルトの名無しさん [] 2010/11/25(木) 15:06:27
341です。

すみません。補足説明します。

たとえば
Dim A as New Arraylist

For i As integer = 0 To 4
a.Add(i * 10)
TextBox(i).Text = R.ToString  ←ここがNull(Nothing)らしい
Next

簡単に配列にできないものでしょうか?
ネットで色々見ましたが、なぜかうまくできません。
初心者だから・・・?
デフォルトの名無しさん [] 2010/11/25(木) 15:15:02
テキストボックスの名前をTextBox1, TextBox2, …と連番にしておいて
Controls("TextBox" & i).Text = R.ToString()
のようにすれば配列にしなくても同じことができる
配列にするには一つずつ配列の要素に自分で代入する必要がある
あとArrayListなんか捨ててList(Of T)使いましょう
デフォルトの名無しさん [sage] 2010/11/25(木) 15:22:38
どうせ R が Nothing なんだろ
デフォルトの名無しさん [sage] 2010/11/25(木) 15:24:04

それやるくらいなら

Dim TextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3 ...} だろ
デフォルトの名無しさん [] 2010/11/25(木) 15:28:37
どうでもいいよ
パフォーマンス的にはTextプロパティの設定に比べれば誤差だしVBでコードの良し悪し議論しても仕方ない
デフォルトの名無しさん [sage] 2010/11/25(木) 15:33:17
おいおい、職業プログラマで を許しちゃダメだろ
パフォーマンスの問題じゃなくてバグの出やすさ

は「"TextBox" & i)」が実在するかどうか実行時にしか評価されない最悪なコーディングだ。
デフォルトの名無しさん [sage] 2010/11/25(木) 15:36:17
なあに、その行が 「"TextBox" & i)」が実在するかどうか チェックするIfブロックの中に入っていれば問題ない
デフォルトの名無しさん [sage] 2010/11/25(木) 15:39:30

そんなこと言い出したらArrayList使うのも間違いだし4決め打ちもまずいし
ToStringの()省略も気になる
デフォルトの名無しさん [sage] 2010/11/25(木) 15:43:13

「チェックするIfブロック」も実行時にしか通らないだろ
この手のものは、コーディングミスってもコンパイルで引っかけるように考えてコーディングしないと
デフォルトの名無しさん [sage] 2010/11/25(木) 15:44:49
くだらない所に拘って生産性下げるのが一番最悪
デフォルトの名無しさん [sage] 2010/11/25(木) 15:48:07
後でTextBox5を追加したときに配列に追加するのを忘れても
コンパイル時には分からないし実行時のエラーすら出ないよ
が良いとは全く思わないがも万全とはいえない
デフォルトの名無しさん [sage] 2010/11/25(木) 15:52:00
R が何か分からないが

Dim A As New Arraylist   (個人的には Collection.Genelic 〜 を使いたいが)
Dim TextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}

For i As integer = TextBoxes.Lbound To TextBoxes.Ubound
  a.Add(i * 10)
  TextBoxes(i).Text = R.ToString
Next


くらいが最低限だろ
デフォルトの名無しさん [sage] 2010/11/25(木) 15:58:25
の問題が解決できてないじゃん
多重管理するなというのは基本でしょ
デフォルトの名無しさん [sage] 2010/11/25(木) 16:02:01
コントロール名に依存するコーディングというのもなぁ
デフォルトの名無しさん [] 2010/11/25(木) 16:08:04
341=344です。

ご教授ありがとうございます。
配列化、できました。


実は配列化したいTextBoxが200個×3種あって
200ずつをTabで切り替えて見られるようにしようとしています。

TextBoxがTab内にあると、この処理がうまくいかないのですが
どういう理由なのでしょうか・・・
デフォルトの名無しさん [sage] 2010/11/25(木) 16:15:01
ちょフォームに TextBox 600個ってさ
新手の拷問かよ
デフォルトの名無しさん [sage] 2010/11/25(木) 16:15:13
さすがに200はありえない。コードから自動でTextBoxを作るようにするべき。
を使ってるんだろうが、Tab内でうまくいかない理由は、テキストボックスは
フォームではなくてタブコントロールのControlsの中に含まれてるから。
デフォルトの名無しさん [sage] 2010/11/25(木) 16:21:02
とりあえずは
コンテナ(フォーム).Controls.Find 〜 で子や孫階層まで Find できるが
そもそも Grid 系を検討すべきじゃないのか?
デフォルトの名無しさん [sage] 2010/11/25(木) 17:10:06
ここの人たちは文句言いつつもなんだかんだで優しいな
昔と変わってなくて安心した
デフォルトの名無しさん [sage] 2010/11/25(木) 18:44:51
だってVB.netってだけで他のスレじゃ風当たり強いんだもの
デフォルトの名無しさん [] 2010/11/25(木) 18:51:31
>360,361

358です。
やはりTextBox多すぎですよね・・・
200個の測定データを1画面(Form内)で見られるようにしたくて
その表示する場所としててTextBoxを用意しようとしました。

TextBoxよりも良い方法があればよいのですが・・・

たしかにここの住人の方々は皆さんいい方です。

デフォルトの名無しさん [sage] 2010/11/25(木) 19:13:01
TextBox200個置くぐらいなら、DataGridViewのセル200個を使うかなぁ。
デフォルトの名無しさん [sage] 2010/11/26(金) 00:35:56
あははは、今日ちょうどテキストボックスの自動生成をやったよ
改行判定するためにmodなんて演算子を初めて使ったぐらいだ
デフォルトの名無しさん [sage] 2010/11/26(金) 06:34:10
そもそも表示だけなのにテキストボックスって…
普通ラベルだろ
で多くなったらListbox(マルチカラム)
もっと増えたらListView
最後はDataGridView
だな、俺なら
デフォルトの名無しさん [sage] 2010/11/27(土) 13:16:29
同じようなことを得意満面に指摘して悦に入る半可通
デフォルトの名無しさん [sage] 2010/11/27(土) 13:22:55
保守は不要ですよ
デフォルトの名無しさん [sage] 2010/11/28(日) 14:33:59
コンボボックスのドロップダウンリストってどんな仕組み?
下に配置されたコントロールを隠すようにサイズ拡張されるでしょ
もしかしてFormだったりするのかな?
何となく気になっちゃって
デフォルトの名無しさん [] 2010/11/29(月) 15:42:36
DataGridViewを使って、配列を1行10列で折り返して表示していく方法は
どうやったら良いですか?
デフォルトの名無しさん [sage] 2010/11/29(月) 15:52:06
バインディング使わずにDataGridViewにデータを表示する方法がわかってるなら
行 = 配列のインデックス / 10
列 = 配列のインデックス Mod 10
で配列のインデックスから行と列を計算するだけ。
バインディングを使いたいならその妙なデータ構造を改めるのが一番簡単だと思います。
デフォルトの名無しさん [] 2010/11/29(月) 17:08:45
たとえば、これだと縦にAの数値が並んでしまいます。

Dim A As New ArrayList
Dim Table As New DataTable
Dim Row As DataRow

For i As Integer = 0 To 50
A.Add(i) '仮値を入力
      Table.Columns.Add(i, GetType(Single))
Table.Rows.Add(A(i))
Row = Table.NewRow
Row(i) = A(i)
Next
DataGridView1.DataSource = Table

何か間違ってるのでしょうか?
もうワケがわかりません。
デフォルトの名無しさん [] 2010/11/29(月) 17:37:12
突然ですが、Focus()の事で教えてください。
フォームにコンボボックス・ラジオボタンなどを貼り付けて、
Enterキーを押した時フォーカスの移動をするように
KeyPressイベントにコードを書きました。
実行時、フォーカスを示す点線の□枠が出てきません。
Tabによる移動は□枠が出ます。
どなたか対処方法を教えてください。
デフォルトの名無しさん [sage] 2010/11/30(火) 00:32:07
Select()だったらどう?
デフォルトの名無しさん [sage] 2010/11/30(火) 09:01:09
AMDのACMLのライブラリを.NETで使う方法無いですかね?
C++では使えるようなのですがDLLをインポートしようとしても無理でした
デフォルトの名無しさん [sage] 2010/11/30(火) 10:15:41
普通のC++でラッパーを書いてC向けの関数としてエクスポートしてネイティブdllとしてコンパイルして.NETからdllimport
もしくはC++/CLIでラッパーを書く
前者の方がお勧め
デフォルトの名無しさん [sage] 2010/11/30(火) 21:42:23

ありがとうございます
C++の勉強がてらチャレンジしてみようと思います
374 [] 2010/12/01(水) 06:35:33
すみません。自己解決しました。
vista , 7 の仕様だったようです。

>375
返答すみませんでした。
デフォルトの名無しさん [sage] 2010/12/02(木) 05:49:32
の方法を始めて知った
コントロール名を変数使って指定できないかと前から思ってたんだ

で、プロパティーはそれで変更できるけど
イベントでそういう記述はなんとか出来ないかな?
イメージとしては
Private Sub Control("Label" & i )_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Control("Label" & i ).Click
こんな感じの何かない?
デフォルトの名無しさん [sage] 2010/12/02(木) 05:53:14
あ、前半はどうでもいいか
Handles Control("Label" & i ).Click の部分です
デフォルトの名無しさん [sage] 2010/12/02(木) 06:34:08
AddHandler
デフォルトの名無しさん [sage] 2010/12/02(木) 08:41:22
普通にデザイナからそのメソッド選択すれば?
デフォルトの名無しさん [sage] 2010/12/02(木) 12:15:50
AddHandlerだな
AddHandler使うならHandles以下はいらん
デフォルトの名無しさん [sage] 2010/12/02(木) 18:12:18
ImmGetCompositionString()を使って入力された漢字のフリガナを取得しています。
普通はフリガナがカタカナで返ってくるはずなのですが、あるときから特定のマシン
でだけ全角ひらがなで返ってくるようになってしまいました。

このサンプルを実行しても同じようになってしまいます。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/875imeyomi/imeyomi.html

環境の問題なのですが、どんな原因が考えられるでしょうか?
デフォルトの名無しさん [sage] 2010/12/02(木) 18:42:41
IMEが変わった
デフォルトの名無しさん [sage] 2010/12/02(木) 18:51:42
KB436842
デフォルトの名無しさん [sage] 2010/12/02(木) 23:34:46
ちょっと前にVB.NETの開発に参加して思ったんだけど、1ソースファイル(*.vb)に
複数のクラスを記述するのって、可読性が極度に下がって俺は嫌なんだけど、
これって他の開発現場では当たり前?
インターフェース定義クラスみたいな使い方なら納得も出来るんだけど、、、
デフォルトの名無しさん [sage] 2010/12/03(金) 08:56:34
セットで使うクラスなら
同一ソースの中に書くかな
デフォルトの名無しさん [sage] 2010/12/03(金) 09:51:25
ありがとうございます。
デフォルトの名無しさん [sage] 2010/12/03(金) 11:54:57
このようなエラーが出るのですがどのような原因が考えられますでしょうか?
System.Configuration.ConfigurationException: 構成セクション system.data を認識できません。 (c:\windows\microsoft.net\framework\v1.1.4322\Config\machine.config line 4047)

出るPCと出ないPCがあってどうしたものかと。
デフォルトの名無しさん [sage] 2010/12/03(金) 14:43:11
.net framework 1.1を再インスコしたら出なくなりました。
デフォルトの名無しさん [] 2010/12/11(土) 17:42:28
小数点第一位を二捨三入・七捨八入して整数と0.5単位の数値にしたいのですが、関数がわかりません
デフォルトの名無しさん [sage] 2010/12/11(土) 17:48:09
ありません
自分で作りましょう
デフォルトの名無しさん [] 2010/12/11(土) 18:06:43
thx

ないのかよ
使えねえな
デフォルトの名無しさん [sage] 2010/12/11(土) 18:14:32
必要なもの全部用意されてたら君の仕事無くなるよ?
デフォルトの名無しさん [sage] 2010/12/11(土) 18:22:30
そんな使いようのない関数がわざわざ用意してあっても無駄なだけだしな。
互換性のために残してあるとかなら仕方ねーなと思うが
デフォルトの名無しさん [sage] 2010/12/11(土) 18:25:37
Int(n * 2.0 + 0.5) / 2.0 で計算できるか。
デフォルトの名無しさん [sage] 2010/12/12(日) 15:11:12
Boolean型の二次元配列をtrueで初期化したいんですがどうすればできますか?
デフォルトの名無しさん [sage] 2010/12/12(日) 15:17:20
すべての要素にtrueを代入します
デフォルトの名無しさん [sage] 2010/12/12(日) 15:27:15

ループさせるんですか?
デフォルトの名無しさん [sage] 2010/12/12(日) 16:28:41
配列の変数名を逆転させてもいいけどね。
デフォルトの名無しさん [sage] 2010/12/12(日) 17:58:03

もう少し詳しく教えてくれると助かります
デフォルトの名無しさん [sage] 2010/12/12(日) 19:39:44
縦方向にリサイズ出来ないように
Me.MinimumSize = New System.Drawing.Size(200, 28)
Me.MaximumSize = New System.Drawing.Size(2000, 28)とやっても
何故か縦方向にリサイズ出来るんだけどどうすれば縦方向にリサイズさせないように出来るの
デフォルトの名無しさん [sage] 2010/12/12(日) 20:36:32
イメージを256色PNGで保存するにはどうすればいいんでしょうか
デフォルトの名無しさん [sage] 2010/12/13(月) 10:13:39

Dim IsFirst() As Boolean

をやめて

Dim IsNotFirst() As Boolean

にする
デフォルトの名無しさん [sage] 2010/12/13(月) 12:07:35
DisabledとかUnlockedとか、たまに使っててイラっとするときがある。
オレだけか?
デフォルトの名無しさん [sage] 2010/12/13(月) 23:46:56

簡単にやるならたとえば以下

Dim img1 As Bitmap = New Bitmap("in.jpg")
Dim st As IO.Stream = New IO.MemoryStream()
img1.Save(st, Imaging.ImageFormat.Gif)
st.Seek(0, IO.SeekOrigin.Begin)
Dim img2 As Bitmap = New Bitmap(st)
img2.Save("out.png", Imaging.ImageFormat.Png)

ただし、この例はハーフトーンパレットのディザ描画になるため、あまりきれいではない

きれいに減色処理するためには色の量子化などの特殊なテクニックを使って頑張る必要があるが、
これに対する .NET の便利なクラスはない
減色、量子化などのキーワードで検索して、参考になりそうなサンプルを探すしかないと思う

また、減色だけでなく、そもそも256色のパレット付き画像の処理自体、.NETではまともなサポートが
ないので、細かなピクセル処理を行うには LockBits/UnlockBits などを使ってピクセルをバッファとして
読みだして処理する必要があるが、これも簡単には説明できないので、いろいろ検索して調べてみて欲しい
408 [sage] 2010/12/14(火) 00:48:59
きれいな減色に対する.NETのサポートはないと思いこんでたけど、
.NET3.0以降だと、

System.Windows.Media.Imaging.GifBitmapEncoder

というクラスが追加されてて、簡単にそれなりの減色結果が得られるようです
一応修正版

Dim src As New System.IO.MemoryStream(System.IO.File.ReadAllBytes("in.jpg"))
Dim enc As New System.Windows.Media.Imaging.GifBitmapEncoder()
enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(src))
Dim mem As IO.Stream = New IO.MemoryStream()
enc.Save(mem)
mem.Seek(0, IO.SeekOrigin.Begin)
Dim img As System.Drawing.Bitmap = New System.Drawing.Bitmap(mem)
img.Save("out.png", System.Drawing.Imaging.ImageFormat.Png)
デフォルトの名無しさん [sage] 2010/12/14(火) 02:11:07
WPF/WICありならわざわざGifBitmapEncoder使わなくてもFormatConvertedBitmap挟むだけで良いよ
デフォルトの名無しさん [] 2010/12/15(水) 12:58:43
起動中のブラウザの取得がうまくいきません。
IEの取得はできたのですが、Firefoxのウインドウがうまくいかず、原因がわかりません。

Dim ObjShell As Object
Dim ObjFF As Object
Dim n As Integer

Set ObjShell = CreateObject("Shell.Application")
Set ObjFF = Nothing
Set ObjFF = ObjShell.Windows(0)
Set ObjShell = Nothing

IEをひとつだけ起動させると、Set ObjFF = ObjShell.Windows(0)がうまくいくのですが、
Firefoxの場合、ObjFFがNothingのままになってしまいます。

解決方法等、わかる方がいたら教えて下さい。
宜しくお願い致します。
デフォルトの名無しさん [sage] 2010/12/15(水) 13:02:08
Set ObjShell = CreateObject("Firefox.Application")
デフォルトの名無しさん [sage] 2010/12/15(水) 13:07:31
そもそもFirefoxはCOM用の口なんか用意してないっしょ
デフォルトの名無しさん [] 2010/12/15(水) 21:36:40
【C#, C♯, C#】 MonoMac 【MonoDevelop】  
ttp://hibari.2ch.net/test/read.cgi/mac/1291602001/

詳しい奴、ちょっと↑きてくれ
デフォルトの名無しさん [sage] 2010/12/16(木) 19:16:06
ビルドはつかわずにいつもリビルドしかつかわないけどこれでいいの?
デフォルトの名無しさん [sage] 2010/12/16(木) 19:27:37
小規模のプログラムならどっちも一緒だろ
デフォルトの名無しさん [sage] 2010/12/16(木) 20:03:58
修正されたソース、アセンブリのみ対象とするのがビルドだっけ
デフォルトの名無しさん [] 2010/12/18(土) 01:19:39
Color.ToArgbメソッドを使ってcolor型のデータを数値化
しているのですが法則がわかりません。
RGB値で(0.0.255)の場合16776961と変換され≒256^3に
なってしまいます。AARRGGBBと並べるのであれば
青の変換値は255になると思うのですが違うのですか?
デフォルトの名無しさん [sage] 2010/12/18(土) 09:11:26
16776961じゃないだろよく見ろ
16進で表示すればもっとわかりやすい
デフォルトの名無しさん [] 2010/12/18(土) 09:36:15
 256^3だと16777216になるのかな?
16進ならFF0000FFなので4278190335になってしまうんでしょうか?
デフォルトの名無しさん [sage] 2010/12/18(土) 11:04:13
配列が0からはじまるように
RGBも0からはじまるので
(0.0.255)も実は
0〜254なので
254を変化すればよろしい
デフォルトの名無しさん [sage] 2010/12/18(土) 17:27:58

16776961じゃなくて-16776961だろ?
アルファ値が255なら符号ビットが1で負になる
直感的にわかりやすい値が欲しければConvert.ToUInt32で直接変換してみればいい
デフォルトの名無しさん [sage] 2010/12/20(月) 17:22:48
vb.netを勉強しとけと言われたのですが
おすすめのマニュアルをご存知ないでしょうか?
デフォルトの名無しさん [sage] 2010/12/20(月) 20:26:42
.net tipsでググる
デフォルトの名無しさん [sage] 2010/12/20(月) 20:35:37
VB6のコードが一緒に載せてあるサイトは絶対に見ない
デフォルトの名無しさん [sage] 2010/12/21(火) 13:43:49
一緒にのってるとなにか問題あるの?
デフォルトの名無しさん [sage] 2010/12/21(火) 18:43:15
VB6と同じように書く=.NET的には悪い書き方
デフォルトの名無しさん [sage] 2010/12/22(水) 01:18:19
なんちって
デフォルトの名無しさん [sage] 2010/12/22(水) 04:06:45
Form1に
Public i as integer
と書いても
Form2でiを使えないんだけど
デフォルトの名無しさん [sage] 2010/12/22(水) 13:17:55
Form1はNewしたのか
Sharedはいらないのか
どんなエラーが出てんのか
デフォルトの名無しさん [sage] 2010/12/22(水) 18:32:48
Form2は
Form1からForm2.Show
したもの
デフォルトの名無しさん [sage] 2010/12/22(水) 23:17:17
Form2にForm1インスタンスの参照でも渡してなきゃ無理
デフォルトの名無しさん [sage] 2010/12/23(木) 03:22:08
むずかしす
デフォルトの名無しさん [sage] 2010/12/23(木) 10:25:30

Form1.iで参照できる かもしれない


バージョンとかにもよるが、VBには既定のインスタンスってのがあってな
ユーザがインスタンス作成しなくても、勝手に作成されて参照できるインスタンスがあるんだ

本来ならの言うようにForm1のインスタンスへの参照もってないとダメなんだが
Form1だけでForm1の既定のインスタンスを参照できたりするんだ

まあ、既定のインスタンス使うようなコードは書くべきではないと思う
デフォルトの名無しさん [sage] 2010/12/23(木) 10:50:13
VBで使うべきではないとか良くない機能とか言い出したらVBの存在意義って…
VBにあってC#に無い機能のほとんど全部じゃん
デフォルトの名無しさん [sage] 2010/12/23(木) 11:17:51

既定のインスタンス使ってたら は発生してないと思う
デフォルトの名無しさん [sage] 2010/12/23(木) 12:10:50

規定のインスタンスはVB6時代から悪者扱いされてたと思うけど。
デフォルトの名無しさん [sage] 2010/12/23(木) 14:35:09

が何をどうして使えないっていってるかわからんからな
だからForm1.iで参照って書いてある


.netで1回廃止しようとしたんだけどな
いきなり廃止するんじゃなくて、使うか使わないか選べるようにしといて
その次ぐらいで廃止すればよかったのにな
デフォルトの名無しさん [sage] 2010/12/23(木) 15:18:28

ルールを逐次変更するなんて最悪のやり方。
デフォルトの名無しさん [sage] 2010/12/23(木) 15:22:27
2005以降の方針転換は間違ってないと思うよ
オブジェクト指向的に良くないというような考えを持ち込むんだったらそもそもVBなんかいらん
デフォルトの名無しさん [sage] 2010/12/23(木) 23:42:53
はじめてVB.NETやろうと思うんだけどとりあえず何を買えばいいの?
ttp://www.amazon.co.jp/Microsoft-Visual-Studio-Professional/dp/B003LTZ1VA/ref=pd_sim_b_6
これ買っておけば一応問題ない?
デフォルトの名無しさん [sage] 2010/12/23(木) 23:47:20
買わなくてもフリーのがある。
デフォルトの名無しさん [sage] 2010/12/23(木) 23:59:26
ありがとう、いろいろあるんだね
デフォルトの名無しさん [sage] 2010/12/24(金) 06:35:35
vb5
vb6
2002
2003
2005
2008
2010
と何回も買わなければならないのでそろそろ考えねば
デフォルトの名無しさん [sage] 2010/12/24(金) 07:49:07
QuickBasic 世代から買ってるんだが・・・
デフォルトの名無しさん [sage] 2010/12/24(金) 11:10:13
VB6→2005→2010(予定)
デフォルトの名無しさん [sage] 2010/12/24(金) 11:18:58
N-BASICから
デフォルトの名無しさん [] 2010/12/24(金) 11:44:45

> Form1に
> Public i as integer
> と書いても
> Form2でiを使えないんだけど

手抜きしとらんでプロパティでやりとりしろよ
デフォルトの名無しさん [sage] 2010/12/24(金) 12:45:58
そんなことVBで言ってもしょうがないでしょ
それを言い出すと、フォームのインスタンスをそのまま子フォームに渡すのも、結合が強くなるので悪い手抜きだし
フォームに貼ってあるテキストボックスをむやみに他のクラスに渡したりプロパティで公開したりするのも
フォームの実装をさらけ出してて良くないよ
デフォルトの名無しさん [sage] 2010/12/24(金) 13:01:54

手抜きはいいとしても・・・
インスタンス化してない可能性のが高くないか?
デフォルトの名無しさん [] 2010/12/24(金) 14:26:38

VBだからとか、お前アホだろ
デフォルトの名無しさん [sage] 2010/12/24(金) 14:29:35
VB も C# も基本的には一緒だが
ここでクダ巻いてるのは VC++ 使いか?
デフォルトの名無しさん [sage] 2010/12/24(金) 14:29:54
プログラミングごときにあんまり真剣になるなよ
気楽に行こうぜ
デフォルトの名無しさん [sage] 2010/12/24(金) 14:37:19
VBだからとか関係なくで悩んでるような段階で善いとか悪いとか気にしてもな
どうせ今練習で書いてるものなんて慣れた後で必ず全部捨てて書き直すことになるんだから
デフォルトの名無しさん [sage] 2010/12/24(金) 20:34:51
me.rry=ch(r is math)
デフォルトの名無しさん [sage] 2010/12/24(金) 21:11:26
LINQって便利だな
ちょっとしたCSVのデータを加工する案件があったんだけど
まさにうってつけの機能だと感じたよ
デフォルトの名無しさん [sage] 2010/12/24(金) 21:22:23

生活がかかってるんだぜ
デフォルトの名無しさん [sage] 2010/12/24(金) 21:31:47

スペルが全然違うのは何か理由が?
デフォルトの名無しさん [sage] 2010/12/24(金) 21:54:29
mathのほうがソースコードに出てきそうな感じだから。それだけ
デフォルトの名無しさん [] 2010/12/25(土) 19:46:17
SetWindowPosを使用して、Form1を最前面に表示したいんですが、
以下のコードを実行して、Button1をクリックすると、
画面の左上にタイトルバーの未表示されるんですが、
何か間違ってるんでしょうか?
user32.dllはデフォルトで用意されているんですよね?
OSはWindowsXP、
開発環境はMicrosoft Visual Basic 2008 Express Edition SP1 です。
詳しい方よろしくお願いします。

Public Class Form1
Public Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
SetWindowPos(Me.Handle, -1, 100, 100, 500, 500, &H40)
End Sub
End Class
デフォルトの名無しさん [sage] 2010/12/25(土) 21:20:08
「タイトルバーの未表示」意味不明
デフォルトの名無しさん [sage] 2010/12/25(土) 21:25:59
Form.TopMost=Trureじゃダメなん?
デフォルトの名無しさん [sage] 2010/12/25(土) 21:59:11

タイトルバーのみ表示の間違いです。


最終的には、別exeで表示されているウィンドウを常に最前面に表示させたいんです。
こんな感じで
Dim hWnd As IntPtr = FindWindow(Nothing, "別ウインドウのタイトル")
If Not hWnd.Equals(IntPtr.Zero) Then
SetWindowPos(hWnd , -1, 100, 100, 500, 500, &H40)
End If
それで、まず自分自身のフォームで試したら、
TopMostにもならずタイトルバーしか表示されない状態で左上に描画されてしまうんです。

どなたか助言お願いします


デフォルトの名無しさん [sage] 2010/12/25(土) 22:03:07
情報の小出しする奴に助言しても、また条件を追加されるからめんどくさい
デフォルトの名無しさん [sage] 2010/12/25(土) 22:48:41
PC98用BasicでPC98ゲーム作るのはどうすれば
デフォルトの名無しさん [sage] 2010/12/26(日) 00:33:07
スレチ
デフォルトの名無しさん [sage] 2010/12/26(日) 02:40:32

引数LongってVB6のやつでしょw
デフォルトの名無しさん [sage] 2010/12/26(日) 09:11:21
SetWindowPos使わなくてもAppActivate使えばいいんじゃないの
別の実行ファイルを常に最前面にしたいなら、そっちに制御任せりゃいいんだよ
デフォルトの名無しさん [sage] 2010/12/26(日) 09:42:56
これで動いたよ

Public Class Form1
Public Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, _
ByVal X As Integer, ByVal Y As Integer, _
ByVal cx As Integer, ByVal cy As Integer, _
ByVal wFlags As UInteger) As Boolean


Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SetWindowPos(Me.Handle, -1, 100, 100, 500, 500, &H40)
End Sub
End Class
デフォルトの名無しさん [sage] 2010/12/26(日) 10:21:56
VB2010EEで、インスタンス変数のインテリセンスでSharedメソッドを表示しなくする方法と
フォームデザイナが生成するコントロールのアクセス修飾子デフォルトでPrivateにする方法を教えて欲しいです

ウザ過ぎて死にそう
デフォルトの名無しさん [sage] 2010/12/26(日) 10:41:23
Modifiresは駄目そうだなあ
全部選択してPrivate指定するしかないと3年前のこのスレの質問が出てきた

誰に合わせた仕様なんだよこれ
まぁ分かってるけど
デフォルトの名無しさん [sage] 2010/12/26(日) 13:02:11


ありがとうございます!
VB6の構文を使っていたんですね、引数の型を直したらうまく動きました。


AppActivateの存在を知りませんでした。
調べてみます。
デフォルトの名無しさん [sage] 2010/12/26(日) 13:18:25

気持ちは分かるけど、Formで外から呼ぶパブリックメンバなんてせいぜいShowかShowModalぐらいなんだから
インテリセンスに余計なものが表示されても普通は事実上そう困らないはずだと思うけど。>Modifierの件
デフォルトの名無しさん [sage] 2010/12/26(日) 14:55:29

469の場合、HandleはIntPtr型を返すから変換するか宣言のhwndをIntPtr型にした方がいい
それとOption StrictはOnにするクセ付けたほうがいい
デフォルトの名無しさん [sage] 2010/12/26(日) 18:08:38
For i = 0 to 100
intSum = intSum + i
i = i +1
Next
0〜100までの足し算の結果がバグってるけどなぜ
デフォルトの名無しさん [sage] 2010/12/26(日) 18:14:35

i = i +1がいらないんじゃ。
それかintSumの初期値が0以外とか。
デフォルトの名無しさん [sage] 2010/12/26(日) 18:21:14
intSumの初期値が合っててもi = i + 1の行があったらだめだろ
デフォルトの名無しさん [sage] 2010/12/26(日) 20:31:53
0〜100の偶数を足すにしてもそんな摩訶不思議なコードは書かない
デフォルトの名無しさん [sage] 2010/12/26(日) 20:37:12
すごくC言語っぽいコードだなあ、と思ったのでした
デフォルトの名無しさん [sage] 2010/12/26(日) 20:37:21
Dim i As Integer, intSum As Integer

intSum = 0

For i = 0 To 100
intSum += i
Next
デフォルトの名無しさん [sage] 2010/12/26(日) 20:39:45
intSum = Enumerable.Range(0, 101).Sum()
デフォルトの名無しさん [] 2010/12/28(火) 18:08:04
右クリックや左クリックをしても、奥にあるウィンドウの操作をできるようにする方法ってありますか?
クリックした瞬間に最小化や移動→マウスの位置を取得→その位置のウィンドウを左(右)クリック→またウィンドウを元に戻す
ということはAPIというものでできるようなのですが、他に簡単な方法は無いでしょうか

具体的にやりたい事は、デスクトップに時計や画像を少し透過で表示させるけど、
作業の邪魔にはならない・・そんな物を考えています
よろしくお願いします。
デフォルトの名無しさん [sage] 2010/12/28(火) 19:36:29
簡単なやり方はありません
C++でWin32API使ってやってるサンプルを見つけたのなら
それを移植しましょう
デフォルトの名無しさん [sage] 2010/12/28(火) 20:40:12

マウスが乗った時点で裏に回るとか移動して逃げるってのならどう?
デフォルトの名無しさん [sage] 2010/12/28(火) 20:45:06
マウスが乗ったらポインタの周り10ドット位完全透明の穴を開ければ?
デフォルトの名無しさん [sage] 2010/12/29(水) 02:50:10
なんとかなりそうです。ありがとうございました

考えついたものを調べたらAPIであったというレベルなので・・C++も面白そうですね。やってみようかな

おー、なるほど、そんなてもあるんですね
ttp://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_4324_2.html
でイケそうですね

こんなことができるんですね!DeleteObjectですか、知りませんでした。ありがとうございます
デフォルトの名無しさん [sage] 2010/12/29(水) 14:34:53

これで実現できるんじゃない?
ttp://msdn.microsoft.com/ja-jp/library/ms997507.aspx
>ヒット テスト
>レイヤード ウィンドウのヒット テストは、ウィンドウの形状と透明度に基づいています。これは、色分けされているウィンドウの領域やアルファ値がゼロの領域は、マウス メッセージが透過することを意味します。
>レイヤード ウィンドウが WS_EX_TRANSPARENT 拡張ウィンドウ スタイルを持つ場合、レイヤード ウィンドウの形状は無視され、マウス イベントはレイヤード ウィンドウの下の他のウィンドウに渡されます。
デフォルトの名無しさん [sage] 2010/12/29(水) 14:45:08
それをAPIと言ってるんだろ
デフォルトの名無しさん [sage] 2010/12/29(水) 18:03:00
あーでもあれか。透明にしちゃうとポインタの位置分からなくなるから
グローバルフックせんといかんのか
デフォルトの名無しさん [sage] 2010/12/29(水) 19:56:04
グローバルフックでポインタ位置を取得
ポインタがフォームの範囲内ならその座標を中心に
適当な色でFillEllipse
その色をMakeTransparent
そのビットマップを表示

で出来たよ

あ、ただそれを抑制する手段作っておかないと一切操作
出来なくなるからねw
デフォルトの名無しさん [sage] 2010/12/29(水) 19:57:41
グローバルフックはググれば適当なdllがあるから
デフォルトの名無しさん [sage] 2010/12/29(水) 20:49:00
言葉でなく
ソースコードください
デフォルトの名無しさん [sage] 2010/12/29(水) 20:52:41
ソースコードくださいじゃなくて
調べて試せよ
デフォルトの名無しさん [sage] 2010/12/29(水) 21:55:24
ポインタは写って無いけどこんな感じね
青いトコは壁紙
ttp://www.gazo.cc/up/23223.jpg
デフォルトの名無しさん [] 2011/01/01(土) 12:47:46

今更だけど、下記で参照できる。

My.Forms.form1.i (iがpublic宣言)
もちろん、iはコントロールのオブジェクト名でも参照できる。
たとえば、
My.Forms.Form1.TextBox1.Text というような感じです。



デフォルトの名無しさん [sage] 2011/01/01(土) 20:02:08
Select Case って If があれば存在いぎっがないの?
デフォルトの名無しさん [sage] 2011/01/01(土) 20:07:49
そうです。
デフォルトの名無しさん [sage] 2011/01/01(土) 20:10:31
列挙体を使った振り分けとかはselect caseの方がずっと便利。caseを自動生成してくれる。
そんなに気にすることじゃないが、select caseの方が一般に処理が速くなる(可能性がある)
デフォルトの名無しさん [sage] 2011/01/01(土) 20:24:17
else if 〜を何度も書くのが面倒じゃなければね
デフォルトの名無しさん [sage] 2011/01/01(土) 22:50:27

>select caseの方が一般に処理が速くなる(可能性がある)
どういう意味?
IfもSelect Caseも全く同じパフォーマンスになると思うけど
VB6ならまだしも、VB.NETからは短絡評価できるようになったわけだし
全く変わらなくなったと思うけど、ILだと結果が異なってたりするの?
具体的な例を挙げて欲しいんだけど
デフォルトの名無しさん [sage] 2011/01/01(土) 22:53:10
select caseの場合、テーブルで評価してたりするのかな?
だとしたら分岐が多い場合は単純ifより速くなると思うけど
デフォルトの名無しさん [sage] 2011/01/01(土) 23:25:53
最適化されないなら、Ifの方が微妙に遅いだろうな
デフォルトの名無しさん [sage] 2011/01/01(土) 23:37:54
ILにswitch命令(ジャンプテーブル)は存在するよ
デフォルトの名無しさん [sage] 2011/01/01(土) 23:40:39
select caseのほうが可読性高いだろ。
デフォルトの名無しさん [sage] 2011/01/02(日) 07:47:43
vb2010Express  SQLServer2008 でデータのやりとりがしたいのですが、
ttp://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample033ConnectSQLServer.htm

に書かれているようにやっても
ステップ イン: 非ユーザー コード 'WindowsApplication1.My.MyApplication.New' をステップ オーバーしています
のようなエラーがたくさん出てできません。
これはどういう意味でしょうか?
どのようにすればよいですか?

現在 VBでデータソースとして接続はできました。
その際ユーザーインターフェースとマルチアクティブリザルトセットを
変更したのですが、関係ありますでしょうか?

長文で申し訳ないですがよろしくお願いいたします。
デフォルトの名無しさん [sage] 2011/01/02(日) 09:48:55
do loop
do loop
exit do
loop
A
loop
B
はAとBのどこえジャンプかしら
デフォルトの名無しさん [sage] 2011/01/02(日) 11:45:33
Elseif function()= xx
Else if function()=yy
と羅列していくとpgm上は分岐の数だけ演算を行うのでしょうか?
デフォルトの名無しさん [sage] 2011/01/02(日) 15:26:57
function()が何度も呼ばれるかどうかということかな?
ILにコンパイルする段階では何度も呼ばれる状態のまま。
ILからJITされる段階で関数にI/Oやその他の作用がないかどうか、
毎回同じ値を単純に返すだけの関数かどうかを検査して、
まとめても問題ないようなら最適化される。
507 [sage] 2011/01/02(日) 15:42:23

thx
関数が毎回演算されるか不確定ならelseif文に羅列すべきではないね。
ありがとう。
デフォルトの名無しさん [sage] 2011/01/02(日) 15:43:51

話が噛み合ってない気がする....
はたぶんそんな高尚なことは聞いてない。
デフォルトの名無しさん [sage] 2011/01/02(日) 15:45:44

いや、当たり前だがElseまたはElseIf以降の式は対応するIfで評価された値が
Falseの時しか実行されないって。

そうでなきゃ怖くて使えるか。
507 [sage] 2011/01/03(月) 15:28:15
分かり難い文章でしたか?本当に知りたかった事は、
If a=100
else if functionA(a,b,c)=100
else if functionA(a,b,c)=50
Else
Endif
(functionは値渡しで他の変数の数値を変える事はないものとする)
という文をかいて、functionA()が1回につき計算が10秒かかった時に
最後のelseに到達するまで10+a秒かかるのか20+a秒かかるのか知りたかったのですが、
回答はJITcompilerで決定されるとのことでした。
最適化されるならどの様に書いても問題はないのでしょうが、
Functionが1回実行か2回実行されるかをプログラマが制御できない様な文章は
書くべきではないなと思っただけです。

直前にif文だけの為に dim a as integer, a=functionA(a,b,c)としてaをif文で評価するのって
あまり美しくない気がしていまして、、、。
デフォルトの名無しさん [sage] 2011/01/03(月) 16:59:21

なんでやってみないんだ。
Visual Basic 2010 Express もインストール出来ないのか?
デフォルトの名無しさん [sage] 2011/01/03(月) 20:32:21
>直前にif文だけの為に dim a as integer, a=functionA(a,b,c)としてaをif文で評価するのって
>あまり美しくない気がしていまして、、、。

>else if functionA(a,b,c)=100
>else if functionA(a,b,c)=50
俺から見りゃ、こんな書き方する方がよっぽど美しくないし無駄にしか思えないわ。
デフォルトの名無しさん [sage] 2011/01/03(月) 20:33:28
If a=100
Else
 Dim aa as integer = functionA(a,b,c)
 if aa=100
 else if aa=50
 EndIf
Endif

これじゃダメなのか
デフォルトの名無しさん [sage] 2011/01/03(月) 21:13:38
同じメソッドの戻り値を複数評価するなんて気持ち悪すぎだろ
SelectCaseならまだしも、ElseIfで逐次実行して連続評価とか
センスなさすぎ
デフォルトの名無しさん [sage] 2011/01/04(火) 01:57:23
それよりもJITの段階で最適化されるってのはホントなのか?
その段階で最適化されるなら、最適化オンオフ制御できない気がするんだが
もし最適化されることによる弊害がでたらどうするんだ?コード修正しかないのか

最適化するかどうかはコンパイルオプションとかで制御できるのが普通だと思うんだが
のあたり詳しく説明してるところとかあったら教えてくれ
デフォルトの名無しさん [sage] 2011/01/04(火) 02:03:35
ILDASM使って解析(確認)してみればいいんじゃない
デフォルトの名無しさん [sage] 2011/01/04(火) 11:06:44
基本的に最適化はJITだよ
インライン展開なんかもJIT
JITの最適化のONOFFは実行時のオプションや属性などで決まる
デフォルトの名無しさん [sage] 2011/01/04(火) 14:46:15
wshスレにも書き込んでしまったのですが、よく見たら過疎っていたし、VB.NETもインストールされているのでこちらでと思います。
ttps://www.miraiz.bz/Template/Index/
にあるテンプレートを一括してダウンロードしたいのですが、可能でしょうか?可能なら誰か作ってくれませんか?
デフォルトの名無しさん [sage] 2011/01/04(火) 15:23:41


>可能かどうか
出来る

>可能なら誰か作ってくれませんか?
スレ違い つうかベンチャーやる気か知らんが甘えるな

ページのリンク抽出して拡張子を条件にしてファイルダウンロードするようなやついくらでもあるだろ
それくらい探してみれば?
デフォルトの名無しさん [sage] 2011/01/04(火) 15:27:58

> ページのリンク抽出して拡張子を条件にしてファイルダウンロードするようなやついくらでもあるだろ
> それくらい探してみれば?
それでは無理なので、相談させて頂いています。
尚、ベンチャーやる気はありません。
今後の様々な応用の為のプログラミングの勉強にもなるとも思っての相談です。
だいぶ前にwshで単純なwebページダウンロードを行うプログラムを組んだ事があったのですが、それもどこかに失ってしまいました。
デフォルトの名無しさん [sage] 2011/01/04(火) 15:50:42

貴方の相談は作ってもらうことですか?
デフォルトの名無しさん [sage] 2011/01/04(火) 16:41:41

1つずつ質問したり調べたりするよりも合理的に、最も勉強にもなると私は思っていますが。
デフォルトの名無しさん [sage] 2011/01/04(火) 17:09:29
へー
デフォルトの名無しさん [sage] 2011/01/04(火) 23:49:22

何の会社かしらんけど、減価償却費シュミレーションとか恥ずかしすぎるw
デフォルトの名無しさん [sage] 2011/01/04(火) 23:59:23
プログラムに限らず、1つずつ調べてコツコツ作ったほうが勉強になるに決まってんだろ
いきなり参考書の答えみて勉強になるとでも重ってんのかよ
デフォルトの名無しさん [sage] 2011/01/05(水) 13:34:32

あまり程度は良く無いという事でしょうか?


教師有り学習ではそうなりますが、私の様な教師無し学習ではそうとは限りません。
学生時代から他の人のソースで勉強してきましたので。
> いきなり参考書の答えみて勉強になるとでも重ってんのかよ
なりますよ。
15秒わからなければ答えを見ろという和田秀樹さんの数学の学習法の書籍なんかも参考にどうぞ。
教師無し学習で仮説実験的思考回路を養うとすごい勢いで学習できる脳になります。。。という話はスレチなのでおいときますが、
自分の思っている事が全てだと思わないことです。
デフォルトの名無しさん [sage] 2011/01/05(水) 15:09:11
答えがない問題のほうが世の中には多いよ。
そうした場合どうするんだろね。この手の人は?
「くれ!!!」って大声で叫ぶエネルギーがあったら、自分で調べたらいいのに。。。
デフォルトの名無しさん [sage] 2011/01/05(水) 15:39:09

> 答えがない問題のほうが世の中には多いよ。
本題と無関係の仮定を出して逃げる、、、どこぞのガイドラインのまんまだな
デフォルトの名無しさん [sage] 2011/01/05(水) 15:42:03
能力のない人間の逃げだろ

調べる能力にしろ、作る能力にしろ
デフォルトの名無しさん [sage] 2011/01/05(水) 15:49:27

どうぞ。
この情報の組み合わせだけで十分可能です。
どうぞ組み合わせておつくりください。

ttp://www.google.co.jp/search?hl=ja&source=hp&q=C%23+WEB%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%8F%96%E5%BE%97&btnG=Google+%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=&gs_rfai=

ttp://www.google.co.jp/search?hl=ja&source=hp&q=C%23+HTML%E3%80%80%E8%A7%A3%E6%9E%90&btnG=Google+%E6%A4%9C%E7%B4%A2&aq=f&aqi=g1g-m1&aql=&oq=&gs_rfai=

ttp://www.google.co.jp/search?hl=ja&source=hp&q=C%23+%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89&btnG=Google+%E6%A4%9C%E7%B4%A2&aq=f&aqi=g1g-m1g-r2g-mr6&aql=&oq=&gs_rfai=

デフォルトの名無しさん [sage] 2011/01/05(水) 15:53:56

間にユーザ名とパスを入力するフォームがある
デフォルトの名無しさん [sage] 2011/01/05(水) 16:02:16

そうですか
ではこれでどうぞ

ttp://www.google.co.jp/search?hl=ja&source=hp&q=C%23%E3%80%80%E8%87%AA%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3&aq=f&aqi=g1&aql=&oq=&gs_rfai=
デフォルトの名無しさん [] 2011/01/05(水) 16:12:44
回答できないとgoogleにリンク張るっていうのお決まりパターンだな
デフォルトの名無しさん [] 2011/01/05(水) 16:48:25
質問です。
開発環境:VB2008 Express
OS:XP pro SP3

フォームアプリで他のWindowにフォーカスを移さない、という制御は可能でしょうか。

FormイベントのLostFocusの中で、Me.Activate() しても上手く行きません。
MSではあまりLostFocus使うなみたいな記述もあり、
別な方法があるのかと思いましたが見つかりませんでした。

何かヒントだけでも教えて頂けるとありがたいです。
よろしくお願いします。
デフォルトの名無しさん [sage] 2011/01/05(水) 17:46:30

まんま答えがあるじゃねぇかwww
わざわざ答えるようなもんでもない

ログインして
WEBページのリンク抽出して
ダウンロードする
たったこれだけだろ?
デフォルトの名無しさん [sage] 2011/01/05(水) 18:40:18
ほっとけよ。煽って回答得るって性格の方なんだから。
デフォルトの名無しさん [sage] 2011/01/05(水) 19:23:05
VB.NETでASP.NETを書いてサーバーにaspxファイル置いとけばボーダフォンとかドコモ用のページに自動でなるの?
デフォルトの名無しさん [sage] 2011/01/05(水) 20:30:34
ASP.NETでA、Bという機能があって双方の*.aspxはほとんど同じなので画面だけ共用して処理を書く*.vbは別にする事ってできるの?
デフォルトの名無しさん [sage] 2011/01/05(水) 22:14:00
できるよ
デフォルトの名無しさん [sage] 2011/01/06(木) 09:05:28

無理じゃないか?
ユーザーエージェントとかその辺使うんだと思うけど
デフォルトの名無しさん [] 2011/01/06(木) 10:22:05
イベントハンドラと処理の解決タイミング?について質問です。

@Form1.Load の後に Form1.Shown が発生するように
 同一フォーム内の特定の関数が終了したことを条件として関数を起動させる方法は存在するのでしょうか?

 現在 Hide で隠したフォームを
 AddHandler 【別フォームが閉じた時】, AddressOf 【フォーム表示関数】
 という記述で表記し、【フォーム表示関数】内でフォームの更新と表示を行っています。
 この更新が非常に遅いので、先にフォーム表示のみを行い、その後更新が出来ないものかと考えています。

Aまた、更新に際してループ処理を行っているのですが、 「X件完了しました」 というアナウンスを
 【Xを示すテキストボックス】.Text = 【現在処理した項目数(=ループカウンタ)】(処理Xとする)
 という形で行おうとした所、処理が完了するまでフォームが表示されないため、途中経過が見れずに
 アナウンスの体を成しませんでした。

フォームの先表示とともに、処理Xに関しては更新処理中も即表示させることで
『フォームはすぐ表示され、更新中も現在の更新件数が随時表示される』
という機能が実現できるのかなぁ、と考えています。

そもそも発想が間違っている、もっと良い手段があるなどアドバイス頂けると嬉しいです。
デフォルトの名無しさん [sage] 2011/01/06(木) 10:25:01
非常に遅い処理なんぞはBackgroundWorkerでも使ってろ
デフォルトの名無しさん [sage] 2011/01/06(木) 10:43:50
マルチスレッドがいいよ
デフォルトの名無しさん [sage] 2011/01/06(木) 11:09:07
質問から察するに
純粋なマルチスレッドよりも
がウヌヌメ
sage [] 2011/01/06(木) 11:18:54
アドバイスありがとうございます。

>544 さん
早速ぐぐってみましたが、非常にそれっぽい文章が見つかり大喜びです。
現在、必死に内容を解読中です。
最後に DataGridView の表示を更新しようとすると有効でないスレッド間操作って怒られる・・・。

>555 さん
544さんのように、表の処理と BackgroundWorker の裏処理でマルチって事ですかね?
理解に誤りがあったらごめんなさい。

多分Aの進捗アナウンスも検索時に出てきた ProgressChanged あたり調べれば対応できそうなので、
DataGridView の更新手段と BackgroundWorker の理解に取り組んでいます。

取り急ぎお礼のみ
デフォルトの名無しさん [sage] 2011/01/06(木) 11:20:51
さん
入れ違いですがアドバイスありがとうございます。
やりたい事はこれっぽいので、苦戦中です。

・・・sageさんとか>とかなにこれはずかしい。
デフォルトの名無しさん [sage] 2011/01/06(木) 12:01:21
>DataGridView の更新手段
これはどういうこっちゃ?

察するに

1.データを取得
2.データをDataGridViewに表示
3.編集させる
4.なんか登録ボタンみたいなものを押すとデータを保存
(この処理が重くて時間がかかるので、画面が固まらないように
バックグラウンド処理で行い、進捗だけプログレスバーかなんかで表示したい)

こんな感じ?

釣りじゃないとすれば・・・
2ch sage
2ch アンカー
で調べれば幸せになれると思う
デフォルトの名無しさん [sage] 2011/01/06(木) 12:03:45
バックグラウンド処理の最後や途中でDataGridViewにアクセスしたらエラーになったんだろ
ProgressChangedやCompletedイベントハンドラはUIスレッドで呼び出されるのでそっちでやる
543 [sage] 2011/01/06(木) 16:15:29
やっていること

【処理X】
1.メインフォームを隠し、別フォームを開く。
2.別フォームでCSVを指定し、別フォームを閉じる。
3.別フォームが閉じた事にハンドルして、メインフォームを表示し、処理Xを起動。
【処理Y】
1.処理Xで指定したCSVを開き、データを DataTable に取得
2.DataTable のデータを一行ずつ編集し、内容を修正(結合や計算など)
3.2で修正したDataTable の行を DataSet.【テーブル名】DataTable に代入
(2と3をFor文で行数回ループ)
4.DataGridView.DataSource = 4のテーブル と指定してDataGridView を表示(大量データ)

@の目的は、処理Yを行う前に処理Xを完了させ画面を表示。その後で処理Yを走らせること
だったので、 さんの指摘通り処理Yを BackgroundWorker で行うことで解決しました。
543 [sage] 2011/01/06(木) 16:16:27
さんアドバイスありがとうございます!

参考資料:下記URLのVB版コード
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html

DataGridView については、 さんの指摘通り手順4に対し発生しました。
これについては

’Invoke を利用するためのおまじない?程度の理解です
Delegate Sub SetDelegate()

’関数をフォーム側で実行させる
Invoke(New SetDelegate(AddressOf 【関数名】))

’処理内容を関数として作成
Sub 【関数名】()
処理内容
End Sub

このような関数を作成し
Invoke(New SetDelegate(AddressOf 【DataGridViewへの書き込み(手順4)】))
という形で対応できました。(この行には下記の致命的な問題あり)

また、プログラムの開始時に
Invoke(New SetDelegate(AddressOf 【Formのロック/プログレスバーなどの表示】))
終了時に
Invoke(New SetDelegate(AddressOf 【Formの開放/プログレスバーなどの非表示】))
を加え『フォームはすぐ表示され、処理は裏で行われる』部分については対応できました。

(・・・Formをロックすると処理中のメッセージもロックされ見えにくくなってしまいますし、
 【処理中表示ラベル.Enabled = True】 では駄目なようなので、 Form はロックせず、ボタン
 などを個別ロックするしかないのかな?と考えています)
543 [sage] 2011/01/06(木) 16:17:16
A進捗表示については、サンプルページの方法で動いたことは動きました。
 ただ、問題が数点あり、現在それに取り組んでいる所です。

A:参考資料の System.Threading.Thread.Sleep(100) 部分に処理Yを全て入れると
  参考資料のFor i As Integer = 1 To bgWorkerArg の部分で bgWorkerArg = 0 となり抜けてしまう。

B:そもそも資料の方法では、処理Yの手順3はFor文の『連続した細かい作業』なので対応できるが、
  手順4のような『一つの大きな作業』の進捗を表示できない。(と、私が思っているだけかも)

C:二度目以降 Invoke(New SetDelegate(AddressOf 【DataGridViewへの書き込み(手順4)】))
  を通る際に、フリーズすることが頻繁にあります。

  特徴として
   ・該当行にブレークポイントを挟むと発生しなくなる。
   ・進捗表示部分をコメントアウトすると、発生しなくなる。
    (現在は手順2・3のFor文部分のみ参考資料の方法で進捗を表示している)
   ・データ量が小さいCSV読み込み時は、発生しない。

  このような症状と見受けられるので、現在はこれの原因を探っています。

凄まじい長さになってしまいましたが、ご意見などいただけるとありがたいです。
なお、未熟なもので内容に誤りがあったらごめんなさい。
543 [sage] 2011/01/06(木) 16:22:00
あああ誤記が・・・。
処理Xの手順3は『処理Yを起動』です。

AddHandler 【別フォーム】, AddressOf Me.Show
AddHandler 【別フォーム】, AddressOf 【処理Y】

この形だと処理Yが走っている間はフォームが表示されなかったので・・・。
デフォルトの名無しさん [sage] 2011/01/06(木) 16:36:02
1セルごとにデータをセットしていけばいい
543 [sage] 2011/01/06(木) 20:03:47
さんアドバイスありがとうございます

DataGridView.DataSource = DataSet1.TblAddrListDataTable

DataGridView.DataSource = DataSet1.【テーブル名】DataTable
という形にし、Dataset側を毎回初期化することで1行ずつ渡す事は成功しました。

しかし、DataSorce 側に行を追加する機能が見つからず、現状では最後に渡した
行だけが表示されてしまいます。

DataGridView.DataSource『.Rows.Add』
のような機能を探しましたが見つからず、ここで引っかかっています。

もしかして、そもそも方向性が間違っていますか?
デフォルトの名無しさん [sage] 2011/01/06(木) 20:29:39
以前、VB2008でアプリを作ったんですが、その時はDPI設定が100%だったんですけど
今のPCはDPI設定が115%で、文字や画像の表示がずれてしまいます。
自動スケーリングの機能があるみたいなんですが、どこを操作すればよいのでしょうか?
デフォルトの名無しさん [sage] 2011/01/07(金) 09:12:02

もしそうしたいのならDataGridView.DataSource をDataTableにキャストしてやらにゃぁ…

'データソースがテーブルと決め打ちされているんであれば
dim temp as datatable = directcast(DataGridView.DataSource)

こんな感じだった気がするけど・・・ 今IDEないから構文忘れたが
 
デフォルトの名無しさん [sage] 2011/01/07(金) 10:19:30
環境 OS:XP SP2 VB:2010express(無料ver) SQLServer2008
PC1 にDBのmdfファイルがある。
PC1とPC2は同じLAN内にあり、PC1の共有ファイルに、VBで発行した
windowsアプリケーションがある。

質問
PC2から PC1で発行したアプリケーションを実行すると
DBのデータを参照できませんでした。

コードで c:\programfile\〜〜 と書いた場合、
PC1の cドライブを参照するのか PC2のcドライブを参照するのか
どちらでしょうか?
デフォルトの名無しさん [sage] 2011/01/07(金) 10:33:56
そりゃローカルだろ・・・・・

\\pc名〜

で書かないといけないと思うんだけど・・・

それ以前にSQLSERVER使うんだったらそういう使い方よりは普通にDBにつないだ方が早いんじゃ?
デフォルトの名無しさん [sage] 2011/01/07(金) 10:49:05

ちょっとやり方違うと思うけど
例えばこんなやり方はどうだろ?

ttp://www.dotup.org/uploda/www.dotup.org1344821.zip.html

もう見てない可能性のが高いかw
543 [sage] 2011/01/07(金) 15:19:45
返信遅れすいません、 さん、 さんの手段を調べつつ、別の作業に追われていました。

さん  さん アドバイスありがとうございます。

1:DataSet 内に テーブルA を作成
2:DataGridView のプロパティ DataSource として テーブルA を指定
  (DataGridView の列構造は、テーブルAと完全一致)
3:CSVの値を DataTable テーブルBに取り、様々な編集を加える
4:テーブルB を テーブル?C(宣言した型:DataSet1.【テーブルAの名前】DataTable)に代入
5:DataGridView.DataSource = テーブルC

このような手段で現在は処理を行っています。いっそソース全文載せた方がいいですかね・・・長いですが。

テーブルCを一行取得するごとに手順5を行い、その後テーブルCを初期化する事で、手順5の
段階で常に最新行を取得することができました。
ただ、この場合手順5を行うたびに最新行で上書きされてしまい、最終的な表示が1行のみとなってしまいます。
(初期化を行わないと 1行⇒2行⇒3行・・・・⇒全行)となり、全行最後に代入するならそれ以外の工程が完全に
無駄ですし、そもそもの目的である『全行コピーのような単体(非ループ)の進捗を現す』ことになりません。

現在詰まっているのは、この部分です。
543 [sage] 2011/01/07(金) 15:21:58
>> 558 さん
directcast は型の強制変換と認識しているのですが、この場合ですとテーブルCを DataTable に変換するという
解釈で間違っていませんか?

Dim テーブルD As DataTable = directcast(テーブルC , DataTable)
DataGridView.DataSource = テーブルD

この形では上手くいかなかったので、他にも色々調べましたが上手い手段が見つかりませんでした。

>> 561 さん
参考URLを見ましたが、パスワードがかかっているようで落とせませんでした。すいません。

(追記) の最も致命的な問題Cについて
相変わらず意味不明で未解決ですが
ttp://www.pctec.2chmatome.info/?p=767
ここの 393 さんと似た症状だったのでビルドしてみたら、完成品では全く発生しませんでした。
原因不明なのが非常に気がかりですが、一応表面上は解決です。
デフォルトの名無しさん [sage] 2011/01/07(金) 15:32:17

むしろこちらがすみません。
ごめんパス書き忘れてた
PASS:vb

543 [sage] 2011/01/07(金) 15:46:48

なにこれすごい・・・。
ありがとうございます!読解する作業に勤しみます!!
559 [sage] 2011/01/07(金) 20:19:16

自宅からすいません
ありがとうございます。
普通のつなぎかたがわかりませんが、複数台でアプリを使いたかったので、
PC1以外での動作確認をするために、行いました。
デフォルトの名無しさん [] 2011/01/08(土) 18:56:59
皆様!たすけてください。
DataGridView関連なのですが、
起動時にDataGridViewをアクティブにしているのですが、
Form.Load イベントでImeModeをonにしているのですが、、
Windows Vista では日本語入力になり、
Windows7 ではなりません。
くぐっても解決方法が見つかりませんでした。
どなたかアドバイスを宜しくお願いします。

567 [] 2011/01/08(土) 18:59:01
すみません。
Visual Basic 2008 Pro です。
デフォルトの名無しさん [sage] 2011/01/09(日) 00:30:51

普通てのはDBサーバとしてSQLSERVERを使うことじゃないかな?
ファイルを共有して使うようなやり方ではないて事。

ただ、複数でやる場合クライアントOのライセンスの問題もあるので注意が必要
それはムとは関係ない別件か
デフォルトの名無しさん [] 2011/01/09(日) 17:22:04
TextBoxを右クリックした時に表示されるコンテキストメニューに
右から左に読むやUnicode制御文字の表示というメニューがありますが、
これらを選択できないようにする方法はあるでしょうか?
TextBoxのContextMenuプロパティを見てもNothingとなっており、
どこを修正していいか分かりません。
やはり自作するしかないのでしょうか?
デフォルトの名無しさん [sage] 2011/01/09(日) 17:51:16

dobonさんのところに解答があるよ
デフォルトの名無しさん [sage] 2011/01/09(日) 19:16:02

ありがとうございます。
コンテキストメニュー自体を表示しないようにする方法は見つかったのですが、
コンテキストメニュー内の一部を選択できないようにする方法は見つかりませんでした。
よろしければ詳しい場所を教えていただけませんか?
デフォルトの名無しさん [sage] 2011/01/09(日) 22:08:07
環境 OS:XP SP2 VB:2010express(無料ver) SQLServer2008
PC1 にDBのmdfファイルがある。

PC1でデバッグしていますが、
接続文字列が、 c:\programfile〜 だと接続できるのですが
\\pc1\c$\programfile〜 とすると接続できません。
TCP/IPは有効
SQLサーバーのリモート接続は許可
ファイヤーウォールはポート開放済み(現在無効にしてます)

書き方がまずいのか、サーバーになってるPC1からは接続できないのか
設定が何かたりないのか、誰かエスパーお願いします

インスタンス名も
.\インスタンス名  だといけますが
\\PC1\インスタンス名,ポート番号  にすると、接続できなくなります。

こちらについても誰かエスパーお願いします。
デフォルトの名無しさん [sage] 2011/01/10(月) 15:12:53
ttp://msdn.microsoft.com/ja-jp/library/xf8k2h6a.aspx
543 [sage] 2011/01/11(火) 11:08:44
休日を挟んだため遅くなりましたが、お陰様で問題が解決したのでお礼を。


サンプルを組んで下さるとか感激しました。
現在参考にしているコードは巨大すぎ、私のスキルでは必要な情報を探すことが非常に困難でしたが
561さんの洗練されたコードを見て、とても理解の助けとなりました。
質問部分以外でも『Useing』等の使い方など参考になる点が多く、ぜひ味わいつくそうと思います。

動け!動けよ!!と半ギレ状態でキーボードを叩く作業から開放されました。

結局
・CSVの取り込みとDataGridViewへの書き込みは BackgroundWorker にお願いする
・元フォームの全コントロールへのEnable設定により、ロックとロック解除を行う
・更新状況は ProgressBar 及び 進捗状況を表すラベル.Update() による表記で現す
・DataTable 上に CSV データを書き込む際は、Castをループさせると便利。

以上により
『フォームを先に表示し、裏で重い作業を行う。かつ、その進捗状況を随時表示する。』
という目的が達成されました。



アドバイスくださった方ありがとうございます。
聞ける相手がおらず困っていたため、とても助かりました。
デフォルトの名無しさん [sage] 2011/01/11(火) 11:20:10

PGはどうかしらんが、少なくともスポークスマンの才能はあると思う
デフォルトの名無しさん [sage] 2011/01/12(水) 04:09:27
環境はOSはXPのsp3、VB2008EEです
正規表現を使い、二行以上の文章から検索し、抽出したいと思いました
一度変数に入れて改行を置換したらできたのですが、こういう時は他にやり方はありますか?
デフォルトの名無しさん [sage] 2011/01/12(水) 13:06:56
>改行を置換したら
この辺が意味不明
二行以上の文章からどの部分を抽出すればいいの?
デフォルトの名無しさん [sage] 2011/01/12(水) 23:53:51

メモ帳にさえついてるんだから消す必要ないだろ
デフォルトの名無しさん [sage] 2011/01/13(木) 11:00:24

返事が遅くなってすいません
Sub Main()
Dim hoge As String = "abc" & vbNewLine & "de"
hoge = System.Text.RegularExpressions.Regex.Replace(hoge, "b.*d", "ghj")
Dim moga As String = "abcde"
moga = System.Text.RegularExpressions.Regex.Replace(moga, "b.*d", "qwert")
End Sub
このような感じです。hogeだとうまく行くのですが、mogaだとうまくいきません。
作っているプログラムは、ブラウザのNGワードなんです(練習用に作っています)。
"氏ね"をNGにしたいとき、"氏"と"ね"の行がまたがってるとうまく置換出来ませんでした。
デフォルトの名無しさん [sage] 2011/01/13(木) 11:21:34
RegexOptions.SingleLine
デフォルトの名無しさん [sage] 2011/01/13(木) 12:16:59
いくら考えても上のif文でtrueにならない理由がわかりません、助けてください・・・
Substringは一文字ずつ取り出すといくつかのサイトに書いて会ったのですが、
このコードだと1バイトずつ見てる感じがします。私が何を間違えてるんでしょうか
それとも第一引数は文字数、第二引数はバイト数ということなんでしょうか?
Sub Main()
Dim khonbun As String = vbNewLine
If khonbun.Substring(0, 1) = vbNewLine Then '偽
MsgBox("vbNewLine")
End If
If khonbun.Substring(0, 1) = vbCr Then '真
MsgBox("vbCr")
End If
If khonbun.Substring(0) = vbNewLine Then '真
MsgBox("vbNewLine")
End If
End Sub
デフォルトの名無しさん [sage] 2011/01/13(木) 12:20:56
vbNewLine = vbCrLf = Chr(13)+Chr(10) = キャリッジリターンとラインフィードの二文字
デフォルトの名無しさん [sage] 2011/01/13(木) 13:04:49

うおおおおすべての疑問が解けました!!ありがとうございました!
デフォルトの名無しさん [sage] 2011/01/13(木) 16:32:21
【困っていること】
@某DLLファイルが参照する辞書ファイル(.DEC)の指定方法
 もしくは参考URLを理解する上で有効な書籍など。
 参考URL ttp://codezine.jp/article/detail/444?p=1

ADataGridViewへの『追記』方法

【詳細&経緯】
@某DLLファイル内の関数α(値Xを代入すると、辞書ファイルβからXに対応する値Yを返す)
 を使う際に「新辞書と旧辞書を同時に使いたい」という指定がありました。
 DLLファイルの中身をいじることは不可能そうなので、フォルダを辞書別に用意して
 プログラムで呼び出すDLLのパスを指定することはできないかと考えています。

 (DLLが操作できないなら、参照する辞書ファイル名βもいじれないと予想。フォルダを辞書
 ごとに作成し、フォルダにDLLと辞書を一対ずつ用意、参照する予定。)

 (作成元メーカー曰く、新辞書は旧辞書と同名で更新の際には上書きする仕様らしい。)

 一応参考URLは発見したのですが、ちょっと私のレベルでは意味不明なので、理解するうえで
 必要な知識などアドバイスいただければうれしいです。
デフォルトの名無しさん [sage] 2011/01/13(木) 16:33:33
A現在は
  1:CSVなりDBの中身を『空の』 DataTable に保存。
  2:上記 DataTable を 『空の』 DataSet.TblAddrListDataTable に1行ずつ保存。
  3:DataGridView.DataSource = 上記 DataSet.TblAddrListDataTable で表示を変更する。
 という手法によって DataGridView の中身を表示してています。

 ただ、この方法だと手順2を行うたびに表示内容が更新されてしまうので、手順2を
 『現在の DataGridView の中身をコピーした DataSet に対して、追加で』 一行ずつ保存。
 とできないものかと考えています。
 (扱うデータ量が多大なので、なるべく処理が早いほうが望ましい。)

 そもそも発想が間違っている、もっと良い手段があるなどアドバイス頂けると嬉しいです。
 よろしくおねがいします。
デフォルトの名無しさん [sage] 2011/01/13(木) 16:41:14

こないだの人?

@むしろメーカーにといあわせたほうがいいんじゃない?
そう言う使い方を想定していない場合、ライセンス違反になる可能性もあるだろうから

Aはわけわかめ
デフォルトの名無しさん [sage] 2011/01/13(木) 16:49:26
DataGridViewは捨てて自前で描画すればいいのでは?
いくらでも早くできるよ
デフォルトの名無しさん [sage] 2011/01/13(木) 17:00:02
@はここを読めばおk
ttp://dobon.net/vb/dotnet/links/extractarchive.html
585 [sage] 2011/01/13(木) 19:37:29

ものすごく早いレスありがとうございます。
度々お世話になります、こないだの人です。

@については問い合わせてみたところ、技術の方が調べてくれました。結果
『参照する辞書ファイルのパスを指定する』
という素晴らしい関数が存在することを知り、解決です。
・・・さっさとサポートに電話しろって話でした、ありがとうございます。

Aについても
Dim DataSet As New DataSet1.TableName

If DataGridView1.RowCount > 0 Then
DataSet = DataGridView1.DataSource
Else
'なにもしない
End If

以下、DataSet.AddTableName = (追加したい行) を行数回繰り返し

DataGridView1.DataSource = DataSet

これでOKでした、お騒がせしてすみません。
585 [sage] 2011/01/13(木) 19:39:07

アドバイスありがとうございます。


解決はしましたが、後学のためにキーワードだけでも落としていってもらえると
とても嬉しいです。
DataGridView 以外に描画方法を知らないだけなので・・・。


実はそこも調査中に見つけて途中で良く判らなくなって困ってたURLの一つでした・・・。
でも、これが知識として基本になっているようですし、まずはそのURLから理解できるよう
読み進めていこうと思います。
デフォルトの名無しさん [sage] 2011/01/14(金) 01:15:40
使用されてないローカル変数です
ってのを言ってこないようにするには
デフォルトの名無しさん [sage] 2011/01/14(金) 09:01:38
使うか初期値入れれば?

宣言して初期値が入ってないものを条件分岐などで使うとそう言われるね

dim i as integer

if i== 0 then


dim i as integer = 0

なら怒られないんじゃね?
デフォルトの名無しさん [sage] 2011/01/14(金) 15:14:15
>宣言して初期値が入ってないものを条件分岐などで使うとそう言われるね
それは元々言われないだろ
デフォルトの名無しさん [sage] 2011/01/14(金) 17:09:18

ごめん、C#でしかも未割当の変数で怒られる
疲れてるな俺
デフォルトの名無しさん [sage] 2011/01/14(金) 18:07:26
警告を抑止する方法があったはずだけど、詳しくはわすれた
Visual Studioのスレで聞け
デフォルトの名無しさん [sage] 2011/01/14(金) 20:47:54
>宣言して初期値が入ってないものを条件分岐などで使うとそう言われるね
俺もあったと記憶してたが…違ったかな?
デフォルトの名無しさん [sage] 2011/01/14(金) 21:40:38
型によっては割り当て前変数使用の警告が出るな
デフォルトの名無しさん [sage] 2011/01/15(土) 00:21:18

プロジェクトのプロパティの「コンパイル」タブで「未使用のローカル変数」の
通知を「なし」にすればいいだけじゃないの?
デフォルトの名無しさん [sage] 2011/01/15(土) 06:28:27
次の数式は、いずれも "a Mod b" と同じ意味になります。

a - (b * (a \ b))

a - (b * Fix(a / b))

↑がなぜ おなじ なのかわけわかめ
デフォルトの名無しさん [sage] 2011/01/15(土) 18:18:29

a \ b と Fix(a / b) が同じなのがわからないのか?
a Mod b が下の二つの式で計算できるのがわからないのか?

どっちにしても演算子と関数の意味を理解できればあとは算数の世界なんだが
デフォルトの名無しさん [sage] 2011/01/15(土) 18:39:24
負の数についても同じなんだっけ?
Intってやつもあるよね
デフォルトの名無しさん [sage] 2011/01/15(土) 19:42:09
そもそも余りってのはなんなのか
デフォルトの名無しさん [sage] 2011/01/15(土) 19:56:24
余り=ぼっち

デフォルトの名無しさん [sage] 2011/01/15(土) 20:06:54
余り=やればできる子
デフォルトの名無しさん [sage] 2011/01/15(土) 20:12:59
やってできないから余ってんだよ
デフォルトの名無しさん [sage] 2011/01/15(土) 20:24:42
まだチャンスはある
デフォルトの名無しさん [sage] 2011/01/15(土) 20:31:30
そんなものはない
デフォルトの名無しさん [sage] 2011/01/21(金) 14:16:28
二つ手に負えない問題が出てきたので、ヒントをいただけると嬉しいです。

【困ってること】
 ○「種類 'System.OutOfMemoryException' の例外がスローされました。」というエラーの発生。
 ○Try & Catch を用いた場合にファイルが閉じられない。

【やりたいこと】
 ○DataGridView に表示された一覧表のうち
  『選択した行』の『特定の列(予め指定)』のみをCSVに書き出す。

【やっていること】
 長すぎるため次レスで投稿

【詳細】
 下記プログラムで、一応動きはしました。
 ただ、データが10万件とかあると凄く心許ないです。20万件とかあるとほぼ確実にエラー吐きます。
 20万件だと進捗チェックαの95%完了前後でエラー、10万件でもβの98%前後で稀にエラー。
 安定性を高めるため、メモリに優しい改善案を募集しています。(原因をメモリが溢れているためと想定)

 また、手順1〜11は全て Try 内で行われており、エラー時は Catch に飛ぶのですが
 手順11前に Catch に飛んだ場合、CSVが開きっぱなしになってしまいます。
 (Dim sr As New System.IO.StreamWriter(csvPath, False, enc)で宣言、sr.close() で閉じていますが
  Catch 内に sr.close() と書いても無効でした・・・。)
 エラー時でもきちんと閉じる方法を教えていただきたいです。

宜しくお願いします。
デフォルトの名無しさん [sage] 2011/01/21(金) 14:18:02
【やっていること】
(変数の中身については、10行の DataGridView の奇数行を選択した場合として例示)

 0:書き込み先CSVを指定
(以下 bgWorker)
 1:指定されたCSVを開く。
 2:全行をループさせ、選択されていた場合行番号を変数 X に確保、","を繋げる( X = ,1,3,5,7,9)
 3:X の最初の一文字目(不要な "," )を削除し、文字列配列である XX に代入する。(XX() = 1/3/5/7/9)
★進捗チェックα
(大ループ(列ごと))
 4:For Each Y In XX() によって、XX(選択行の個数)分ループさせる。(選択行)
 5:DataGridView の DataSorce に対し、 DataSorce.Rows(Y) で書き込むべき列を取得
 6:取得行に対し、さらに列数Z回ループを行う。(カウンタは i とする)
(小ループ(セルごと))
 7:DataSorce.Columns(i).Caption にて、列ヘッダ HeaderName を取得。 
 8:HeaderName を条件に Select 文で分岐、『書き出すべき列か』を判定。
 9:書き込む場合、 "," & row(i).ToString を変数 XXX に追記。列項目に編集が必要な場合は、適宜行う。
(小ループ完了)
10:XXX の最初の一文字目(不要な "," )を削除し、CSVに XXX の内容および改行を書き込む。
★進捗チェックβ
(大ループ完了)
11:CSVを閉じる。
デフォルトの名無しさん [sage] 2011/01/21(金) 15:57:38

つうか、また君かwwww

先に書き出す列をどっかに保持ってから行ごとに処理していけばループの回数は減るんじゃない?

晒せるならソースとデータ(データを差し支えないように置換するなんかして)晒した方が早いんじゃないか?
デフォルトの名無しさん [sage] 2011/01/21(金) 16:52:48
処理2と3は不要だろ
処理4で全行ループさせて、該当行かどうかチェックすればいいだけ

最後にまとめてファイルに書くんじゃなくて、行単位で書き出せ
書きだす内容を変数にためると、サイズチェックしないといずれ入りきらなくなる
デフォルトの名無しさん [sage] 2011/01/21(金) 17:51:23
もうコテハンな乗れよww
デフォルトの名無しさん [sage] 2011/01/21(金) 18:56:46
コテハン名付けてやろうぜ
609 [sage] 2011/01/21(金) 19:14:43
三度目ですねお世話になります。


早速アドバイスありがとうございます。
A:DataGridView のデータを取捨選択して書き込み用 DataTable に取る
 ⇒DataTable の中身をCSVに直接書き出す
B:ループカウンタあたりを作成し、DataGridView.Rows(カウンタ).Selected で判別
 ⇒True のみ手順5以下を行う
こう解釈してただいまソースと格闘中です。


うーん・・・。スレ人口?的にその方が判りやすいですかねいっそ。
自分なら「人恋し」とか付けそうですw
デフォルトの名無しさん [sage] 2011/01/21(金) 19:26:19
StreamReaderやStreamWriterをUsingで使やいいんでね?
609 [sage] 2011/01/21(金) 20:55:52

アドバイスありがとうございます。
・・・そういえばそんな便利なものありましたね、忘れてました。

折角以前 で素晴らしいサンプルを貰ったのに。OTZ
・・・以前ついでに


コミュ障の気があるので、実は物凄く嬉しかったです。
雑談でレス数を延ばすのが申し訳なかったから自重しただけなんですよ!
609 [sage] 2011/01/21(金) 21:06:24
お陰様で問題が解決しました、ありがとうございます。

困りごと@
 今回は の手法を使いました。
  を試していて「DataTable.newrow = DataGridView.rows(行番号)」と書いたところ
  型が違うと怒られてシフトしましたごめんなさい。

 結局
 ・手順4の行ループの直後にカウンタ(cnt)を設置
 ・『if DataGridView.Rows(cnt).Selected = true のみ処理を行う』指定(手順5の位置)
 ・Else までの間に手順6〜10を行う
 ・End if の後ろでカウントアップと進捗チェックを行う。
 この手順で動かしたところ、CPU/メモリ共に使用率は50%前後をキープ。
 安心して動かせる(放置できる)ようになりました。

困りごとA
 Dim sr As New System.IO.StreamWriter(csvPath, False, enc) の行を
 Using sr As New System.IO.StreamWriter(csvPath, False, enc) で宣言
 手順11の位置に End Using を入れると、エラー時にもきちんとファイルを閉じてくれました。
 こっちも明らかに11飛ばして Catch に直行してるのに何故・・・。



お世話になりました、ありがとうございます。
聞く相手の居ない環境なので、真面目な話このスレの人が師匠です。
デフォルトの名無しさん [sage] 2011/01/23(日) 14:16:27
帳票を作成したいんだけど、コードで少しずつ調整するんじゃなくて、
視覚的にリストを配置したり、ラベルを置いたりすることって無理?
検索すると 有料ソフトばっかヒットするしやたら高いし・・・
デフォルトの名無しさん [sage] 2011/01/23(日) 14:55:15

バージョンは?
Crystal Reportsじゃだめなの?
619 [sage] 2011/01/23(日) 15:26:05

サンクス ちょっと頑張ってみる
ちなみにVB2010express(新しくて無料の奴)
日本語版が最近でたみたいだけど、導入方法載ってるページがないっす
デフォルトの名無しさん [sage] 2011/01/23(日) 20:55:23
最近登場したUsingとは?
デフォルトの名無しさん [sage] 2011/01/23(日) 21:00:17
最近でもないだろ・・・
デフォルトの名無しさん [sage] 2011/01/25(火) 14:27:01
C#はpublic static classとできますが
VBはpublic shared classとするとエラーが出ます
VBの対応物はないんですか?
デフォルトの名無しさん [sage] 2011/01/25(火) 14:38:59
> 有効期間
> Visual Basic は静的クラスをサポートしません。
> 静的クラスと同等の機能はモジュールで実現されます。
> 詳細については、「Module ステートメント」を参照してください。
デフォルトの名無しさん [sage] 2011/01/25(火) 15:03:28
なるほど、モジュールなのか、ありがとうございますた
デフォルトの名無しさん [sage] 2011/01/25(火) 21:33:18

モジュールは旧VBから引き継いだレガシーだから使わない方がいいよ。
VBでは静的クラスはコンストラクタをprivateにして実装するのが普通。
デフォルトの名無しさん [sage] 2011/01/25(火) 21:39:19
MustInherit+Abstract(無理だけど)にしないとC#から正しく認識できる静的クラスにはならないよ
デフォルトの名無しさん [sage] 2011/01/25(火) 21:39:24
拡張メソッド涙目
デフォルトの名無しさん [sage] 2011/01/25(火) 21:40:10
間違えた
MustInherit+NonInheritable
デフォルトの名無しさん [sage] 2011/01/25(火) 21:53:57
を実際試してみるとエラーでした

moduleをコンパイルしてReflectorすると
internal sealed class Aや
.class private auto ansi sealed A
って出ますね


普通のクラス+shared sub newで動きました、ありがとう
デフォルトの名無しさん [sage] 2011/01/27(木) 13:20:14
バインドしていないDataGridViewで、列を作って
DefaultCellStyle.Format
を指定しても反映されないのは仕様なんでしょうか。
対応方法ってないでしょうか。
デフォルトの名無しさん [sage] 2011/01/27(木) 15:56:04
バインドしてないんだったら値を設定する前にString.Formatしてやればいいだけのことなんじゃないでしょうか
デフォルトの名無しさん [sage] 2011/01/28(金) 00:51:32

Me.DataGridView1.Columns(0).DefaultCellStyle.Format = "#,0"
Me.DataGridView1.Rows(0).Cells(0).Value = 12345D
でできる。
書式にあわないデータを設定しているとかじゃないの?

Me.DataGridView1.Columns(0).DefaultCellStyle.Format = "#,0"
Me.DataGridView1.Rows(0).Cells(0).Value = "12345" ' ←数値用の書式設定なのに文字列を設定してる
とかだとダメ。
デフォルトの名無しさん [sage] 2011/01/29(土) 20:08:34
TableAdapterって
正規化されていないDBを受け取って
正規化されたDataSetやDataTableを返すような用途に使えますか?
デフォルトの名無しさん [] 2011/02/01(火) 11:10:13
ExcelシートのユーザーインターフェースをVBのフォーム上にロード
する方法ってどうやればいいんでしょうか?
SPREDやGridを使わずにExcelの機能をロードして使えないのかな?
って事です。
単純にコントロールとして追加できらと
Dim xlSheets As Microsoft.Office.Interop.New Excel.Sheets
Controls.Add(xlSheets)
みたいな感じやりましたが当然のように例外でます。

VSTOソリューションで近い事ができそうなんだけど、あれだとEcxel
ブックに実装って感じですよね。
あくまでWindowsフォームアプリにExcelのユーザインターフェース
だけ引っ張ってくるのを望んでいます。

情報持ってる方お願いします。
デフォルトの名無しさん [sage] 2011/02/01(火) 11:25:50
まあ無理だろね
デフォルトの名無しさん [sage] 2011/02/01(火) 11:54:12
WebBrowserでNavigateする手は一応ある
Excelの設定によっちゃダウンロードしちゃうとかいろいろ問題はあるが
デフォルトの名無しさん [sage] 2011/02/01(火) 12:52:52
おれもExcelと同等のスプレッドシート製品かExcelを取り込む方法知りたい
前調べた感じだと無理そうだったけど
の方法だとExcel固まっちゃうんだよね
デフォルトの名無しさん [sage] 2011/02/01(火) 12:58:10
むかしはOLEオブジェクトってのがあったんだが、なくなったか?
デフォルトの名無しさん [sage] 2011/02/01(火) 13:06:58
[INFO] Visual Studio .NET の Windows フォームに OLE コンテナ コントロールがない
ttp://support.microsoft.com/kb/304562

Visual Basic .NET で、WebBrowser コントロールを使用して Office ドキュメントを開く方法
ttp://support.microsoft.com/kb/304643
デフォルトの名無しさん [sage] 2011/02/01(火) 19:17:55
AxSOActiveXってどうやって使うん?
デフォルトの名無しさん [sage] 2011/02/01(火) 23:30:34
dim cn as NpgsqlConnection = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=test;Password=test;Database=a")
cn.Open()
cn.Close()

これだけのプログラムを実行して、postgresqlのログに
 could not receive data from client: No connection could be made because the target machine actively refused it.
 unexpected EOF on client connection
というエラーが出るんですが何ででしょうか

このエラーを無視してDataTableにAdapter経由で値をFillすると何故かDBの中身は表示出来ます
ただ、もう一つ接続を用意してNpgsqlCommandBuilderを使って値を書き換えるコードを書いても
データは更新されませんでした
デフォルトの名無しさん [sage] 2011/02/02(水) 00:17:12
データソースにデータテーブルを指定しているDataGridView上で
データテーブル内のデータを直接書き換えた直後、DataGridViewの
表示が書き換えた内容にならない場合があります。
表示が出来てないだけで、スクロールなどして対象セルを表示しなおさせると
きちんと書き換えた内容になっているのですが、
ちょっとなんとかしたいです。

指定セルの表示を更新させるとか、そういった対処法は
何かないでしょうか?
人恋し [sage] 2011/02/02(水) 00:42:47
【やりたい事】
テーブルA:No,固有値,値1,値2
テーブルB:No,固有値,値B
テーブルC:No,固有値,値C
テーブルD:No,固有値,値D
このような4つのテーブルを結合して

テーブルX:No,固有値,値1,値2,テーブルB.固有値,テーブルC.固有値,テーブルD.固有値
という項目数6のテーブルXを DataTable で作成、DataSet にセットしようとしています。

なお、DataSet 上では No はキーとして設定されており、重複はNGです。
また、固有値は全テーブルで共有しており、固有値に対して値1,値2,値BCDが存在します。
(ある固有値は、テーブルAのみに存在。別の固有値は、全テーブルに存在など。)
データベースは Oracle を使用しています。
人恋し [sage] 2011/02/02(水) 00:46:29
【困っていること】
SELECT A全部とB/C/Dの固有値 FROM テーブルA
LEFT JOIN テーブルB ON テーブルA.固有値 = テーブルB.固有値
LEFT JOIN テーブルB ON テーブルA.固有値 = テーブルC.固有値
LEFT JOIN テーブルB ON テーブルA.固有値 = テーブルD.固有値
WHERE あれこれ

という文を書いた時、取得できるテーブルは

テーブルX:
No1,固有値X,値1,値2,テーブルB.固有値X,DBNull,DBNull
No2,固有値Y,値1,値2,テーブルB.固有値Y,テーブルC.固有値Y,DBNull
No2,固有値Y,値1,値2,テーブルB.固有値Y,テーブルC.固有値Y,DBNull
No3,固有値Z,値1,値2,テーブルB.固有値Z,テーブルC.固有値Z,テーブルD.固有値Z
No3,固有値Z,値1,値2,テーブルB.固有値Z,テーブルC.固有値Z,テーブルD.固有値Z
No3,固有値Z,値1,値2,テーブルB.固有値Z,テーブルC.固有値Z,テーブルD.固有値Z

と、複数テーブルに存在するデータが分裂してしまいます。

このまま書き込むと3行目で「キーが重複していますよ」と怒られるのですが、
DataTable の行を『重複したものは、一つ残して削除する』といった便利な
SQLの命令文は存在しないものかと困っています。

命令文、対処法などアドバイスいただけると嬉しいです。
デフォルトの名無しさん [sage] 2011/02/02(水) 01:57:24

UpdateとかRefreshとかでできないかな?
とか想像で言ってみる



A・B・C・Dがどういうのかよくわかんない
キーはNo?固有値?
固有値で結合してるなら固有値がキーな気もするけど、DataSetはNoがキーなんだよね
そもそも固有値がキーなら、結合しても分裂しないか

キーが同じテーブルを結合するなら分裂しないだろうから、
そもそもテーブル構成自体がおかしいんじゃないかなー

結果セットの重複を消したいだけなら、SQLのSELECT句ににdistinctを書けばいいけど
でもやっぱり問題はそこじゃない気がする
デフォルトの名無しさん [sage] 2011/02/02(水) 03:26:30

VB.NETまったく関係ない質問だな

そのSQLの3行目と4行目のテーブルBはCとDの間違いだよな?

その結果が本当なら、テーブルAに No2,固有値Y や No3,固有値Z の行が複数あるんだが
出力でNoをキーにしたいなら、複数行をどうまとめる気なんだ?

データセットのキーをNoにするのが理解できん
固有値に対して値1,値2,値BCDが存在 なんだから、固有値をキーにするべきじゃないのか?
固有値をキーにするならまず重複のない固有値の一覧つくって、それにテーブルA-Dをouter joinすればいい

まあどっちにしろテーブル設計とSQLの問題だから、これ以上はDB関係の板できけ
デフォルトの名無しさん [sage] 2011/02/02(水) 05:07:30
ねぇねぇみんな、どうしてC#やらないんですか?
VB.NETとか終わコンでしょww
デフォルトの名無しさん [sage] 2011/02/02(水) 07:39:47

ここはVB.NETスレだから
SQLの質問はこっちで

SQL質疑応答スレ 10問目
ttp://hibari.2ch.net/test/read.cgi/db/1274791771/
デフォルトの名無しさん [sage] 2011/02/02(水) 15:08:21

DISTINCTすればいいよ
デフォルトの名無しさん [sage] 2011/02/03(木) 13:19:55
PrintDocumentを使った印刷で
全ページに総ページ数を印字したい場合って、
PrintPageを発生させる前に
事前に総ページ数を数えておくしかやり方はないでしょうか?

PrintPageで印字時に総ページを示すタグの様な物を
印字しておいて、最後に全ページのタグを置き換え
みたいな事を妄想してましたが、そんな方法は可能ですか?
デフォルトの名無しさん [sage] 2011/02/03(木) 14:06:07
最後まで印刷終わった後でPagesつかっていじれへんの?
デフォルトの名無しさん [sage] 2011/02/03(木) 14:56:57
すみません、Pagesというのが判らないです。
どうやって呼び出すんでしょうか?
デフォルトの名無しさん [sage] 2011/02/03(木) 15:35:36
SP3とかインストールの問題と同じ可能性があるからそっち調べてみたら幸せになれるかも
デフォルトの名無しさん [sage] 2011/02/03(木) 15:36:16
ごめん、誤爆した
人恋し [sage] 2011/02/03(木) 22:41:03
返信が遅れてすいません、体調(精神?)不良で倒れてました。
お陰さまで解決です、DISTINCT が私の探していた魔法の言葉でした。
そして皆さまスレ違い失礼しました。


テーブルAとDataSetのキーはNo テーブルBCDのキーは固有値ですね。
固有値はBCD各テーブル間ではユニークですが、複数テーブルに同じ固有値が存在する
可能性があり得る、という状況です。
説明下手ですいません、問題はそこでした。


SQLは誤字ですごめんなさい。
まさにその「複数行をどうやって纏めるんだ?」という部分で詰んでました。


適切なスレの紹介ありがとうございます。


それが答えでしたありがとうございます。


毎回迅速かつ完璧なアドバイスありがとうございます。
デフォルトの名無しさん [sage] 2011/02/04(金) 04:30:04

スレ違いなんであんまりあれなんだが

テーブルAの主キーがNoで結合結果に同じNoが2行でるには、
結合条件でテーブルAの1行に対して相手のテーブルが2行必要
結合条件が相手テーブルの主キーならこれはあり得ない

Distinctなんてする必要ない。説明のどこかに間違いがある
人恋し [sage] 2011/02/05(土) 17:30:59

ありがとうございます。

まずキー設定が間違ってました、Aは固有値(Noはユニーク)、BCDはNoがキーですごめんなさい。
色々と残念すぎる質問でごめんなさい。
デフォルトの名無しさん [sage] 2011/02/06(日) 03:56:07
フォーム上でクリックした点の座標を配列に格納するために、MouseClickのイベントプロシージャで
x(n)=e.Xと書いたのですが、NullReferenceExceptionエラーが出てしまいます。

eクラスの使い方自体よく分からない上に
VB2002の本を読みながらVB2010を使っているので…アドバイスお願いします。
デフォルトの名無しさん [sage] 2011/02/06(日) 09:05:13
根拠もなくeを疑う前に、デバッガでブレークポイント張って何がNothingなのか確認すれ
デフォルトの名無しさん [sage] 2011/02/06(日) 09:26:58
このスレに質問で妥当かどうか迷っていますが、間違っていたらご指摘の程

以前VB(DOS版〜)を使っていました。確かVB5前後まで
現在見るとVB.NETとなっていますが、違いを説明しているページ・書籍等ありますか?
またVBナンバーを辞めた理由をご存知の方は理由を教えてください。

プログラムと言うより言語の歴史で恐縮ですが、1つよろしくお願いします
デフォルトの名無しさん [sage] 2011/02/06(日) 09:35:29
ちょっとステートメントの書き方が似てるだけの別言語だから
違いとか言われても困る

と言いつつ言語バージョンは引き継いでるんだけどな。今VB10。開発環境の名前にはなってないけど
デフォルトの名無しさん [sage] 2011/02/06(日) 09:35:54
名前が変わったのは
.net frameworkというC#,VB,J#,F#他多数の言語で共通のライブラリが使える基盤に移行したから
そのため文法は似ているもののVB6以前とは互換性も無い
デフォルトの名無しさん [sage] 2011/02/06(日) 10:14:45
,664
なるほど、ありがとう

ちょっと凝った事遣り出すと「おろ?」って感じなのね
イベントドリブンな構造は窓の仕組み上変えようがないだろうが
ライブラリまわりやコンポーネント関係流用は要検討か…

逆にC#やJ#との親和性は良くなったのかな?
>>660 [sage] 2011/02/06(日) 10:27:06

学びはじめたばかりでブレークポイントも知りませんでした。雑な質問かもしれませんがお付き合いお願いします。

1行目がx(n)=e.Xで、この行を実行するとe.Xに赤二重下線が引かれて「オブジェクト参照がオブジェクトインスタンスに
設定されていません」と出ます。
だからe.XがNullなのかなと思って質問したのですが、試しにx(n)=2に書き換えて実行しても2の下に下線が出て
同じ文章が出ます。x(n)はIntegerで定義していますし、2がNull扱いになる理由もまったく想像できず困っています。
デフォルトの名無しさん [sage] 2011/02/06(日) 10:31:19


じゃあ、e.XがNothingかどうか調べてみようよ
それがNothingじゃなかったら、x(n)の方があやしい
667 [sage] 2011/02/06(日) 10:33:50

>

> 設定されていません」と出ます。
> だからe.XがNullなのかなと思って質問したのですが、試しにx(n)=2に書き換えて実行しても2の下に下線が出て
> 同じ文章が出ます。x(n)はIntegerで定義していますし、2がNull扱いになる理由もまったく想像できず困っています。

ちゃんと見てませんでしたすみません

それなら、x(n)が何も参照してないんじゃないだろうか
デフォルトの名無しさん [sage] 2011/02/06(日) 11:05:30
デバッグ中は自動変数とかそういうウィンドウ出てるから
(出てなかったらメニューのデバッグ>ウィンドウで)
それでそれぞれの変数の状態を確認する
デフォルトの名無しさん [sage] 2011/02/06(日) 11:07:08

おっしゃるとおり配列の宣言をよく理解していなかっただけの単純なミスでした。恥ずかしい。
それよりブレークポイントや、おかしい値のチェックを知れたことのほうがずっと有益でした。
デバッグって大事ですね。どうにか初めてのプログラムが完成しそうです。
重ねて回答くださってありがとうございます。
デフォルトの名無しさん [sage] 2011/02/06(日) 11:52:18

今日来たやつが偉そうに言うのもなんだが、こんなサイトを見つけた
ttp://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm

「4.値型と参照型の違い」が今回のエラーの原因だと思われる
数多情報とみんなのアドバイスと熱意?で完成目指して頑張って欲しい
デフォルトの名無しさん [sage] 2011/02/07(月) 00:44:38
VBの関数辞典みたいな本でおススメ教えてくだぱい
デフォルトの名無しさん [sage] 2011/02/07(月) 00:48:23
MSDN with Google
デフォルトの名無しさん [sage] 2011/02/07(月) 00:48:35

MSDNライブラリ。
.NETライブラリのリファレンスは書籍化されてたはずだけど、
アホみたいに高いし東京都全部の電話帳ぐらいのボリュームがある。
デフォルトの名無しさん [sage] 2011/02/07(月) 00:52:27
なるほど本は必要ないんですね。サンクス!
デフォルトの名無しさん [sage] 2011/02/07(月) 09:20:17
ヘルプにヘルプが必要だったりするけどな
デフォルトの名無しさん [sage] 2011/02/07(月) 09:27:58

おまえMSDNは10年ぶりか、力抜けよ
デフォルトの名無しさん [sage] 2011/02/07(月) 10:07:20
あれって全部機械翻訳なんでしょ
デフォルトの名無しさん [sage] 2011/02/07(月) 10:55:58
よほど評判が悪かったのか、最近のは人間が翻訳してないところは英語のまま
デフォルトの名無しさん [sage] 2011/02/07(月) 20:15:45
昔からMSDNライブラリに機械翻訳なんかないってw
KBと勘違いしてるんじゃないの
デフォルトの名無しさん [sage] 2011/02/07(月) 20:18:44
ニッチなライブラリだと機械翻訳まんまなのはあるぞ
デフォルトの名無しさん [sage] 2011/02/07(月) 22:55:53
人間がやってるのか。
機械翻訳の割には普通の文書だなって思ってた。
デフォルトの名無しさん [sage] 2011/02/08(火) 01:18:56

そのサイト罠に見えるぞ
デフォルトの名無しさん [sage] 2011/02/08(火) 01:44:29
値型と参照型についてなら、普通にMSDNでそれなりに説明している
次ページも一緒に見とくといい
ttp://msdn.microsoft.com/ja-jp/library/dd314344.aspx
デフォルトの名無しさん [sage] 2011/02/08(火) 01:47:30
VB中学校は俺解釈と俺用語が多すぎ
書いてる人はそれなりにきちんと理解してはいるんだろうけど
いかにもVBしかわからないの丸出しな感じ
デフォルトの名無しさん [sage] 2011/02/08(火) 02:42:45
ボタンにフォーカスがある状態でリターンキーを押しても
ボタンが押されるアニメーション
が起こらないんだけど
デフォルトの名無しさん [sage] 2011/02/08(火) 05:21:11

それに気付けば「卒業」する場なんじゃないかな。「中学校」だし。
俺はdobonがまだ理解不能な頃にけっこうお世話になったんで悪く言いたくなかったり。
デフォルトの名無しさん [sage] 2011/02/08(火) 19:50:56
そんなに俺用語多かったっけあそこ。
あまり真面目に読んだことないけど、そこそこちゃんと分かってる人が書いてる印象だったが
デフォルトの名無しさん [sage] 2011/02/08(火) 21:03:25
オブジェクト指向が絡んでくると怪しくなる
クラスが消滅するまで とか意味不明な言葉が出てくる
デフォルトの名無しさん [] 2011/02/08(火) 21:27:38
vb.net2010expressです
form_main(スタートアップフォーム)にボタンが3つ有り
1つめはデータ入力フォームを、他の2つは検索用フォームを開く
ようにしてあります。form_a,form_b,form_c
ここで、入力フォームが開いているときは他のフォームは閉じておきたい
また、検索用フォームが開いているときは他のフォームを閉じておきたいですが、どうすればいいのでしょう?

Form_a_Loadプロシージャで
If Form_b.Visible=true then
Form_b.Close()
End if
としてみたんですが駄目でした
デフォルトの名無しさん [] 2011/02/08(火) 22:49:42
フォームはShowかShowDialogで制御するのが基本だからな
デフォルトの名無しさん [sage] 2011/02/08(火) 23:09:43
ShowDialogとHideな
デフォルトの名無しさん [sage] 2011/02/08(火) 23:12:58
しかしこたえるきになれないしつもんだな
デフォルトの名無しさん [sage] 2011/02/08(火) 23:18:21
と言っても、小難しい質問だと答えられないのが、このスレのクオリチー
デフォルトの名無しさん [sage] 2011/02/08(火) 23:22:53
単純にメインフォームから閉じるんじゃダメなの?
子フォームから閉じなきゃダメなの?
690 [] 2011/02/08(火) 23:41:57


メインフォームの検索ボタンを押したときにでも勿論構いません。
検索フォームと入力フォームが同時に開いているのが嫌なだけですから。
デフォルトの名無しさん [sage] 2011/02/08(火) 23:43:56
開いたフォームはメインフォームのフィールドに入れとけ
デフォルトの名無しさん [sage] 2011/02/09(水) 00:50:08

インスタンスとかイベントとか、基本的な概念が分かってなさそうだから
手を動かす前に勉強した方がいい段階かもしれんね。
デフォルトの名無しさん [sage] 2011/02/09(水) 01:11:04
どうやればできるのかは知ってるけど、そんな糞設計をするようじゃ
迷惑でしかないから教えない
デフォルトの名無しさん [sage] 2011/02/09(水) 09:06:51

じゃぁこんな時はどんな風な遷移設計がいいのですか?せんせい!!
デフォルトの名無しさん [sage] 2011/02/09(水) 10:38:26
メールの送信時に
送信済みトレイに送信メールを残しておくために、
SmtpClientを使用せず
MAPIを利用してメール送信プログラムを作成しています。

メーラーはOutlookExpressを使用しており、
複数メールアドレスがアカウントとして設定されています。
@yahoomail(既定) Ahotmail

Aのアドレスからメールを送信したい時に
MAPIにて
AのログインID,パスワードにてログインを行い、
メールの送信を行うと
送信元アドレスが@の既定のアドレスのほうに
なってしまいます。

既定のアカウントが@の状態でAでログインした場合に
送信元アドレスをAのアドレスををすることは
できないのでしょうか?
デフォルトの名無しさん [sage] 2011/02/09(水) 10:50:20
OutlookExpress ってMAPIはサポートしてないような。
OutlookはMAPI対応だけど。
デフォルトの名無しさん [sage] 2011/02/09(水) 10:58:25
expressでも簡易MAPIクライアントにはなれるみたい。は忘れてね。
デフォルトの名無しさん [sage] 2011/02/09(水) 15:48:28
関数に静的クラスを渡すことってできないでしょうか?

sub hoge(kurasu as class)
end sub

call hoge(kurasu)

みたいに。
デフォルトの名無しさん [sage] 2011/02/09(水) 15:55:15
渡してどうすんのさ
静的メンバで多態したいとか言うの?
デフォルトの名無しさん [sage] 2011/02/09(水) 16:19:20
やめときます。
デフォルトの名無しさん [] 2011/02/09(水) 20:33:32
いいかげん、なんの行動もしてないくせにやたら高飛車な
キチガイでドボンだのの解説サイトに粘着してるカス(
を何とかしてほしいわ
デフォルトの名無しさん [sage] 2011/02/09(水) 20:39:04
なんだ唐突に。
これがアスペ脳か。
まあ、みたいな奴がカスなのだけは同意するけどね。
デフォルトの名無しさん [sage] 2011/02/09(水) 22:22:00
MSDNのチュートリアル入門やった後は何がおススメですか?
デフォルトの名無しさん [sage] 2011/02/09(水) 22:43:41
いちいち人に指示されなきゃならんのか?
デフォルトの名無しさん [sage] 2011/02/09(水) 23:12:40
指示されるつもりはないが、効率よく進みたいので、参考までに聞いてみただけだよ
デフォルトの名無しさん [sage] 2011/02/09(水) 23:32:47
じゃあ指示しない
デフォルトの名無しさん [sage] 2011/02/10(木) 00:09:01
答える気ないカスは黙っとけ
デフォルトの名無しさん [sage] 2011/02/10(木) 00:16:23
そのカスとやらに見下される気分ってさぞかし快感なんだろうね
理解できないけど
デフォルトの名無しさん [sage] 2011/02/10(木) 11:55:02
理解できないけどね
デフォルトの名無しさん [sage] 2011/02/10(木) 14:31:03
進みたい方向もゴールもわからん
必要なのは占い師か?だったらスレ違いだな
デフォルトの名無しさん [sage] 2011/02/11(金) 10:51:54
TAB区切りのTSVデータをTABで分割し配列に格納したところ
配列には3要素のみが格納されると思っていたらなぜか
4要素が格納されてしまうのですがどこに見落としがあるのでしょうか?
(TABでsplitしているのだから行末の改行文字は無視されると思っているのですが)

1 武田1 営業部1(改行)
2 武田2 営業部2(改行)
3 武田3 営業部3(改行)

line には、 
1 武田1 営業部1(改行) 
という読取ったデータの1行分が入っているとします。

vec_tab = Split(line, vbTab) 'TABで分割

を実行すると
vec_tab の要素数は3では無く
4となり vec_tab(4)の中身は "" (空文字)となっています。
デフォルトの名無しさん [sage] 2011/02/11(金) 10:59:43
ソースを見せろ
デフォルトの名無しさん [sage] 2011/02/11(金) 11:01:36
readData ← TSVを丸ごとメモリに読取ったデータが入ってます。

vec_line = Split(readData, vbCrLf) '1行分のデータで分割
For Each line As String In vec_line
   vec_tab = Split(line, vbTab) 'TABで分割
Next
デフォルトの名無しさん [sage] 2011/02/11(金) 11:03:23
問題ない
じゃあtsvファイルをバイナリエディタで見せろ
デフォルトの名無しさん [sage] 2011/02/11(金) 11:26:37

サンクス
解決しました。
デフォルトの名無しさん [sage] 2011/02/11(金) 11:32:24
えー
デフォルトの名無しさん [sage] 2011/02/11(金) 12:18:17
DataGridView 内の特定のセルがクリックされた場合に
その列定義がTextBoxか否かという判定を行いたいのですが
どういうコードを書けばよいでしょうか?

Private Sub dgv_test_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_test_list.CellClick
  If e.ColumnIndex >= 0 Then
   If dgv_test.Columns(e.ColumnIndex).CellType Is DataGridViewTextBoxCell Then

   End If
  End If
End Sub


このコードを書くと
DataGridViewTextBoxCellは型です。有効な式ではありません。
というエラーが出てしまいます。
デフォルトの名無しさん [sage] 2011/02/11(金) 12:29:44

まさかケツにタブが付いてたとか言わないよな
頼むからそう言ってくれ
デフォルトの名無しさん [sage] 2011/02/11(金) 12:46:53

if typeof hoge is fuga then
end if
デフォルトの名無しさん [sage] 2011/02/11(金) 13:04:29

試してみましたがエラーが出てしまいます。
どうすれば正常に判定することが出来ますか?

If TypeOf dgv_test.Columns(e.ColumnIndex).CellType Is System.Windows.Forms.DataGridViewTextBoxCell Then

      'ここで色々やりたい

End If

○エラー
   'System.Type' の式を型 'System.Windows.Forms.DataGridViewTextBoxCell' にすることはできません。
デフォルトの名無しさん [sage] 2011/02/11(金) 13:14:17
If TypeOf dgv_test.Columns(e.ColumnIndex) Is System.Windows.Forms.DataGridViewTextBoxCell Then

デフォルトの名無しさん [sage] 2011/02/11(金) 13:30:41
Typeオブジェクト関連のMSDNの説明は相変わらず不正確でわかりにくいな。
デフォルトの名無しさん [sage] 2011/02/11(金) 14:23:07


 の記載の様に修正したところやはり下記のエラーが出てしまいます。
なぜ!?

型 'System.Windows.Forms.DataGridViewColumn' の式を型 'System.Windows.Forms.DataGridViewTextBoxCell' にすることはできません。
デフォルトの名無しさん [sage] 2011/02/11(金) 14:24:27
本当に頭の悪いやつだなw
デフォルトの名無しさん [sage] 2011/02/11(金) 14:34:28
If TypeOf dgv_test.CurrentCell Is System.Windows.Forms.DataGridViewTextBoxCell Then

でどうだ
デフォルトの名無しさん [sage] 2011/02/12(土) 17:20:05
型付きデータセットの中のテーブルアダプタを配列にする方法を教えてください
Object型に入れても、メソッド使うときに遅延バインディングになってしまいます
デフォルトの名無しさん [sage] 2011/02/12(土) 23:20:48
Componentから派生したクラスを作成して
TableAdapterのBaseClassプロパティをそれに変更
後は野となれ山となれ
デフォルトの名無しさん [] 2011/02/12(土) 23:58:36

天才だな
デフォルトの名無しさん [sage] 2011/02/13(日) 10:14:44
のんびり開発してたらなんか冒険の書?とかで書けないし


罠サイトか?気をつけるわのページ見ておく
デフォルトの名無しさん [sage] 2011/02/13(日) 15:32:19
ある文字列からCrやLfやCrLfを排除する関数わ?
デフォルトの名無しさん [sage] 2011/02/13(日) 17:27:29
Replace
デフォルトの名無しさん [sage] 2011/02/15(火) 00:03:10
楽○の懸賞用のプログラムをWebBrowser作ってるのですが、
どうも画像認証の所で詰まってしまいます。

これはどうしたら処理できるのかご存知の方おられますか?
できれば、教えていただけませんか?
デフォルトの名無しさん [sage] 2011/02/15(火) 00:07:06
処理させないための画像認証だからなぁ
デフォルトの名無しさん [sage] 2011/02/15(火) 00:26:41
画像認証は大変アルヨ
とりあえずOCRとかで検索すればいいんじゃない
デフォルトの名無しさん [sage] 2011/02/15(火) 01:01:46

遅くなったけどうまくいきました。ありがとう!
738 [sage] 2011/02/15(火) 23:58:36

教えていただきありがとうございます。

OCRっていうやつを使えばできるのか。
なんとかやってみますww
デフォルトの名無しさん [sage] 2011/02/16(水) 00:39:39
仮に出来たら相当だけどな
であり、が何故中国かを考えた方が良いアル

つかあんまりやらんで欲しい
画像がどんどん難解にひん曲がっていって普通に視認できねーよ
デフォルトの名無しさん [sage] 2011/02/16(水) 22:22:27
テンプレート文字を作って、認証文字の輪郭を抽出して、そのテンプレートと
どれぐらい一致(=テンプレート内に収まるドットの数)を見るかって、
そういう感じらしいよ

テンプレート多ければ多いほど信頼性が上がるってやつ
デフォルトの名無しさん [sage] 2011/02/21(月) 10:12:35.83
折れと曲がりさえ区別できれば難しくない気がする
デフォルトの名無しさん [sage] 2011/02/21(月) 10:22:51.17
まずノイズ除去からかな?
走査線みたいなのだったり色のついた水玉だったりとかの

その辺除去して白黒の変な文字だけにすれば少しなんか見えてきそうな気がする。
デフォルトの名無しさん [sage] 2011/02/21(月) 11:57:43.15
実はOpenCV使えば簡単だけどな。
デフォルトの名無しさん [] 2011/02/21(月) 16:36:54.08
DataGridViewの一番左の行に行番号入れたいんだけど
簡単にできる方法ないですか?
デフォルトの名無しさん [sage] 2011/02/21(月) 16:51:11.77
datagridview 行番号でそっこう出てくる
好きなの選べば?
デフォルトの名無しさん [sage] 2011/02/23(水) 22:32:14.40 ?2BP(3300)
現在実行しているファイル
hoge.exe
のビルドした日付をhoge.exe内から取得する方法はありますか?
ビルドしたバージョンを取得する方法は分かったのですが
デフォルトの名無しさん [sage] 2011/02/24(木) 05:48:29.81
そもそも「ビルドした日付」なんて持ってるのか?
デフォルトの名無しさん [sage] 2011/02/24(木) 06:10:45.81
更新日時で茶を濁すぐらいしかなかろう。
デフォルトの名無しさん [] 2011/02/24(木) 13:21:26.03
PEヘッダ解析で
750 [sage] 2011/02/25(金) 00:37:41.25
簡単には取得できないようですね
なんか別の方法を考えてみます
(もしくはあきらめる)
デフォルトの名無しさん [] 2011/02/25(金) 13:27:03.86
ボタンを押すとマウスカーソルが移動する単純なプログラムを作っているのですが、
縦方向には移動するものの、横方向に移動することができません。
対処方法がよく分からないのですが、ご教示頂きたいと思います。
宜しくお願いします。

------------宣言---------------
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, _
ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Private Const MOUSE_MOVED = &H1 'マウスを移動する(相対座標)

------------実行---------------
Call mouse_event(MOUSE_MOVED, 300, 0, 0, 0) ←縦方向に正常に動きます。
Call mouse_event(MOUSE_MOVED, 0, 300, 0, 0) ←横方向に全く動きません。
デフォルトの名無しさん [sage] 2011/02/25(金) 16:24:59.42
Long => Integer
デフォルトの名無しさん [sage] 2011/02/25(金) 23:08:25.34
Dim Dt As New DataTable("Creature")

Newはいったいどんな効果が?
デフォルトの名無しさん [sage] 2011/02/25(金) 23:30:53.30
Dim Dt As DataTable = New DataTable("Creature")
の略
Newはコンストラクタを呼び出している
ちゃんと理解するならオブジェクト指向勉強してこい
デフォルトの名無しさん [sage] 2011/02/25(金) 23:36:13.06
むむ
デフォルトの名無しさん [sage] 2011/02/26(土) 01:49:26.75
11/02/26(土)00:42:12
これをWindowsフォルダ名に使える文字列に書きかえるプログラムかいて

デフォルトの名無しさん [sage] 2011/02/26(土) 05:58:41.11
宿題は自分でやれ
760 [sage] 2011/02/26(土) 11:24:00.06
URLエンコードとHTMLエンコードとSQLエンコードはあるのに
なんでWindowsエンコードはないんだよ
デフォルトの名無しさん [sage] 2011/02/26(土) 13:31:41.24
知ってるがお前の態度が気に入らない
デフォルトの名無しさん [] 2011/02/26(土) 15:35:58.73

md "\\?\c:\temp\11/02/26(土)00:42:12"
デフォルトの名無しさん [sage] 2011/02/26(土) 15:55:45.34
いまどきVS2005で開発してる俺ってどう?
古いか?
デフォルトの名無しさん [sage] 2011/02/26(土) 16:01:56.62
まあ唐突にスレ違いな雑談を始めるセンスはかなりおかしいと思うよ。

Win2kに対応可能なセットアップを作れるのは2005までだから、
そういう事情で2005を使ってるところはまああるでしょ。

それに、某川俣氏みたいにMSマンセーな人は最新版の優位性をやたら煽るけど、
C#にろしVBにしろ、2005より後に追加された機能なんてなけりゃなくてもなんとかなるし。
デフォルトの名無しさん [sage] 2011/02/26(土) 16:33:22.66
は金持ちになれないタイプ
デフォルトの名無しさん [sage] 2011/02/26(土) 16:42:16.13
確かにな。
WPFやSilverlightアプリ作りたいなら別だが
WinFormなら最新版である必要ないな。
デフォルトの名無しさん [sage] 2011/02/26(土) 17:08:56.54

コピペのマジレスされても・・・
デフォルトの名無しさん [sage] 2011/02/26(土) 20:28:51.63
DataGridViewで指定した行をアクティブにするにはどうすれば良いのでしょうか?

例えば、10行のデータが存在しているとして
3行目をアクティブにしたいのですがやりかたがわかりません。
デフォルトの名無しさん [sage] 2011/02/26(土) 21:46:01.27
「某川俣氏」みたいな表現する奴ってなんなの?
特定してるのにあえて某ってつけるのが面白いと思ってるの?
デフォルトの名無しさん [sage] 2011/02/26(土) 22:13:35.87
まあ少なくとも「奴ってなんなの?」とか書いてる奴が言えた義理じゃない。
っていうか、ガイジンじゃないなら婉曲表現ぐらい分かれよ。
デフォルトの名無しさん [sage] 2011/02/26(土) 22:32:49.75

C#, C♯, C#相談室 Part64
ttp://hibari.2ch.net/test/read.cgi/tech/1294734221/743

マルチなんで放置推奨
デフォルトの名無しさん [sage] 2011/02/26(土) 22:36:39.69

ですが誘導されたので質問しました。
エスパーの方お教え下さい。

DataGridViewで指定した行をアクティブにするにはどうすれば良いのでしょうか?

例えば、10行のデータが存在しているとして
デフォルトの名無しさん [sage] 2011/02/26(土) 22:39:41.81
C#スレ見たけど誘導なんてされてなくね?
甘えんなよカス
デフォルトの名無しさん [sage] 2011/02/26(土) 23:06:51.28
774
自己解決
デフォルトの名無しさん [sage] 2011/02/27(日) 23:47:42.16
oracleのDB8iと10gへ、9i(9.2.0.1)のクライアントを使用して接続したいんですが、
ODACだと9iクライアントに対応するものがなくて困ってます。
どのミドルウェアを使えば出来るでしょうか?
デフォルトの名無しさん [sage] 2011/02/27(日) 23:52:21.02
JDBC
デフォルトの名無しさん [sage] 2011/02/28(月) 00:10:37.03
そもそも9iクライアントで繋ごうとしてる時点で無理
JDBCってJava以外から使えるの?
人恋し [sage] 2011/02/28(月) 02:02:50.00
【困っていること】
Private Sub UpdataMaintLoad(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _DataGridView.CellDoubleClick
If 『ダブルクリックされたセル(場所)がヘッダである』 Then
'イベントは起こさない
Else'(=ヘッダではなく、表の中のセルがダブルクリックされている。)
イベント(sender, e)
End If
End Sub

この『』に入れるべき条件式が判らない。

【背景】
・セルの詳細を表示する関数が、ヘッダのクリック時に暴発してしまうことを防ぎたいです。
 ・ヘッダをクリック禁止にする対策法は、ソート機能が使えなくなるためNGです。

度々お世話になりますが、宜しくお願いします。
デフォルトの名無しさん [sage] 2011/02/28(月) 02:47:03.88
EventArgsじゃなくてちゃんとDataGridViewCellEventArgsで受けるか、
eをDataGridViewCellEventArgsにキャストして
if e.ColumnIndex<0 or e.RowIndex<0 then
で行けるかと
人恋し [sage] 2011/02/28(月) 22:50:06.79
レスが遅れすみません。
朝一で確認したのですが、会社が掲示板書き込み禁止だったので・・・。


ありがとうございます、ご指摘の方法でばっちり解決しました。
いつも素早く素晴らしいアドバイスをいただきとても助かっています。
デフォルトの名無しさん [] 2011/03/03(木) 01:23:55.93
DataGridViewの使いにくさは異常
デフォルトの名無しさん [sage] 2011/03/03(木) 01:29:09.12

具体的にどういうとこ?
デフォルトの名無しさん [sage] 2011/03/03(木) 11:29:45.09
使いやすすぎだろ
デフォルトの名無しさん [sage] 2011/03/03(木) 12:37:33.44
別になれればどうということはない
デフォルトの名無しさん [sage] 2011/03/03(木) 12:47:55.70
DataGridView で質問があるんだけど
セルをエクセルに見立てて質問する。

A〜Dまで列があって、C1の次はB2に移動させたい。
「次」とはタブキーもしくはエンターキーを押したときの動作

KeyDown イベントで書くと正しく動作するように見えるけど
セルを編集してて編集終了の意味でエンター押すと KeyDown イベントが起きなくて D1 に行ってしまう。

仕方なく CellEditEnd にも KeyDown と同じように CurrentCell を変更するコードを書いてみるが
一瞬B2に移動する挙動を示しつつも、D1へ移る内部処理が生きてて、C1→B2→D1 となってしまう。
最終的に、CellEditEnd の中で SendKeys "{Right}{Right}" として所望の動作にはなったんだが
セル列の増減に自然対応できない強引すぎるコードで嫌いだ。

なにか良い手はないのか
デフォルトの名無しさん [sage] 2011/03/03(木) 12:54:33.86
古いシステム入れ替えの場合だいたいいつもEnterで横と言われるんだが Excelだってデフォルトで下に移動するでしょ
といって左右使わせることにしている

フォーカスも同じ
Tabでいどうしてくれ WEBフォームなんかでもどこでもTABでいどうでしょ?
て見せて無理やり納得させてる

古い産物いつまで引きずるつもりなんだよカス
デフォルトの名無しさん [sage] 2011/03/03(木) 13:09:47.63
CellLeaveイベントじゃだめ?
デフォルトの名無しさん [sage] 2011/03/03(木) 16:40:00.85

論点はエンターをタブ化する部分ではないんだが。

編集中の内容を確定するときはエンター押すだろ?
C1の編集が終わって、そのエンターでB2にしたいだけよ
デフォルトの名無しさん [sage] 2011/03/03(木) 16:40:41.92

カーソルキーが使えなくならないか
デフォルトの名無しさん [sage] 2011/03/03(木) 23:16:40.03
MSDNにはこう書いてあるけど、関係あるだろうか?

Control.KeyDown イベント
Tab キー、Enter キー、Esc キー、方向キーなどは、コントロールによって自動処理されます。
これらのキーで KeyDown イベントを発生させるには、フォーム上の各コントロールで
IsInputKey メソッドをオーバーライドする必要があります。
デフォルトの名無しさん [sage] 2011/03/03(木) 23:22:52.84
datagridviewってソートすると選択していたレコードがどっかいっちゃうけど、
Excelみたいに選択レコードそのままにソートってできないの?

デフォルトの名無しさん [sage] 2011/03/04(金) 04:36:24.52

お前の家ぐらい覚えとけ。
とっとと家に帰れ。
デフォルトの名無しさん [sage] 2011/03/04(金) 05:54:40.14

シネ
デフォルトの名無しさん [sage] 2011/03/04(金) 16:05:35.83
のせいですっかり場が寒くなってしまいました
デフォルトの名無しさん [sage] 2011/03/06(日) 12:27:29.81
Excelと同じ事したいなら最初からExcelでいいじゃん。
わざわざVB.NetでExcel紛い作る意味あるの?
デフォルトの名無しさん [sage] 2011/03/06(日) 12:57:21.09
何言ってんだお前
デフォルトの名無しさん [] 2011/03/06(日) 18:05:02.27
.txtで2011-03-04と2011/3/4が混在してるデータで20110304(数値)に変換して読み込む場合

Dim MyDate1 As DateTime = DateTime.Parse("2011/3/4")
Dim MyDate2 As Integer = Integer.Parse(MyDate1.ToString("yyyyMMdd"))

これでいいの?もっとスマートな方法ある?
デフォルトの名無しさん [sage] 2011/03/06(日) 18:47:49.19
Dim MyDate1 As Integer = Integer.Parse(DateTime.Parse("2011/3/4").ToString("yyyyMMdd"))
デフォルトの名無しさん [sage] 2011/03/06(日) 18:47:59.85
正規表現で "-" と "/" をブランクに置換する
801 [sage] 2011/03/06(日) 18:49:02.72
"/"の方は頭0無しだったか、忘れてくれ
デフォルトの名無しさん [sage] 2011/03/06(日) 18:52:16.39
のコードを見ると、なんか「スマート」の定義が俺と違う気がするんだよね。
デフォルトの名無しさん [sage] 2011/03/06(日) 19:29:25.31
何故に日付を数値にしたいんだ?
その後何したいのか気になるんだけど
デフォルトの名無しさん [sage] 2011/03/06(日) 20:39:48.17
DBに格納するとか?
文字型でやってる所もあれば数値型でやってる所もあるだろう
デフォルトの名無しさん [sage] 2011/03/06(日) 20:43:55.44
Dim dt = DateTime.Parse("2011/3/4")
Dim idt = dt.Year * 10000 + dt.Month * 100 + dt.Day

スピードはこっちのほうが速そうだけど、コードのスッキリさでは
かな。
デフォルトの名無しさん [sage] 2011/03/06(日) 20:57:44.89
スッキリも糞もParseの例外を考えていない糞コードだろ
デフォルトの名無しさん [sage] 2011/03/07(月) 01:51:34.54
単にParseをTryParseに変えればええだけやん
デフォルトの名無しさん [sage] 2011/03/07(月) 13:08:56.36
例外が出てくれた方が良い場合もあるよね
デフォルトの名無しさん [sage] 2011/03/07(月) 14:33:13.98
来る文字列が
DateTime.ToString("yyyyMMdd")なりでやってればその例外は無視するほうがきれいだろ
それ失敗するとかあくまでもホントの例外になるんだから

やり方次第だから反射レスで
例外考えない糞コードてのは言いすぎじゃないか?
デフォルトの名無しさん [sage] 2011/03/07(月) 14:48:48.04
Integer.Parseの例外はまだしも、
DateTime.Parseの方は考えるべきだろ。
デフォルトの名無しさん [sage] 2011/03/07(月) 18:19:31.05
例外処理なんて、プログラム全体で考えるべきで
単体の命令とってみて例外処理してないからどうこうって言えるわけがない

子の場合はデータ読み込みなんだから、不正なデータがあったときに
どうするのかっていうプログラム仕様を考えた上で例外処理すればいいだけ
デフォルトの名無しさん [sage] 2011/03/07(月) 18:33:08.35

当たり前のことをドヤ顔で言うな
お前はすっ込んでロリ
デフォルトの名無しさん [sage] 2011/03/07(月) 18:59:47.09
Try Cach EndTry
しかつかったことないけどFinalyってなに?
デフォルトの名無しさん [sage] 2011/03/07(月) 19:03:36.63
ggrsk
デフォルトの名無しさん [sage] 2011/03/07(月) 19:50:02.06
例外が発生しようが発生しまいが行いたい処理を書く場所
主にファイルを閉じたりDispose呼んだりするのに使う
でも上の場合はUsing使ったほうがいい
デフォルトの名無しさん [sage] 2011/03/07(月) 22:25:56.47
VBでコンストラクタから、ほかのコンストラクタを呼ぶのはどうするの?
C#の
public void Hoge(int n) : this(n, 0) {・・・}
みたいなやつ。
デフォルトの名無しさん [sage] 2011/03/07(月) 22:45:10.00
Access <-> .netで通信する事になりました
コマンドライン引数 or プロセス間通信(Accessにできるの?)以外に良い接続方法が思い浮かびません
何方かヒントをよろしくお願いします
デフォルトの名無しさん [sage] 2011/03/07(月) 22:54:42.64

Newすりゃそのクラスのコンストラクタが呼ばれる
継承元のコンストラクタを呼ぶならMyBase.New
デフォルトの名無しさん [sage] 2011/03/07(月) 23:02:04.09

C#みたいにオーバーロードされたコンストラクタの呼び出し専用の構文はない。
あたかもNewっていう名前のメソッドがあるかのように書くだけ。

ただもちろん、別のコンストラクタ呼び出しの前に他の処理を書けない点はC#と同じ。
っていうか、MSDNライブラリに普通に解説があるんじゃないかと...
デフォルトの名無しさん [sage] 2011/03/07(月) 23:15:48.86

MyBase.New()の継承元を呼び出す説明はそこかしこに書いてあるけど、
自分のコンストラクタを呼ぶ方法が書いてあるところは見つけられない。

ttp://msdn.microsoft.com/ja-jp/library/2z08e49e(v=VS.90).aspx

ためしにideoneで、コンストラクタの一行目でNew(…)とか書いて
自分以外のコンストラクタを呼ぶコードを試してみたけど、やっぱり
コンパイルエラー。
書き方が悪いからか、monoだからなのかよくわからない。
デフォルトの名無しさん [sage] 2011/03/08(火) 00:37:50.20
共通部分をカプセル化して呼び出しゃいいんじゃないの
まぁReadOnly付いてるのは無理だったりするけど
デフォルトの名無しさん [sage] 2011/03/08(火) 02:14:08.41
Try Cach EndTry
しかつかったことないけどFinalyってなに?
デフォルトの名無しさん [sage] 2011/03/08(火) 02:25:54.54
ggrks
デフォルトの名無しさん [sage] 2011/03/08(火) 05:09:40.41

Try Catch抜ける前に必ずとおる処理を書く
デフォルトの名無しさん [sage] 2011/03/08(火) 20:02:35.81
ぐたいれいもあげてくれないとしょうがくせいにわはかんない
デフォルトの名無しさん [sage] 2011/03/08(火) 20:52:12.65

不正解だ
よく見るんだ
デフォルトの名無しさん [sage] 2011/03/08(火) 22:34:37.67

いちいちタイポ指摘すんのめんどくせ
デフォルトの名無しさん [sage] 2011/03/13(日) 11:42:24.44
質問させてください。
文字列として"82A083A282A482A682A8"と格納されている値を
"あいうえお"と変換したいのですが方法がよく分かりません…
いい方法ございますでしょうか。
デフォルトの名無しさん [sage] 2011/03/13(日) 13:12:21.43
"82A0"を"あ"と察するにS-JISなんだと思うが他が分からん
2文字目と思われる"83A2"は"82A2"の間違い?
デフォルトの名無しさん [sage] 2011/03/13(日) 13:17:53.17

返答ありがとうございます。
すみません…"82A2"の間違いです。
デフォルトの名無しさん [sage] 2011/03/13(日) 13:27:54.14
4文字ずつ区切って
DirectCast(Int32.Parse("82A2", NumberStyles.AllowHexSpecifier), Char)
でいけるかな
デフォルトの名無しさん [sage] 2011/03/13(日) 13:34:36.54
駄目に決まってるだろwChar/StringはUTF-16だぜ
普通に2文字ずつByte.Parseしてって配列化して最後にEncodingでGetString
デフォルトの名無しさん [sage] 2011/03/15(火) 10:02:22.57
その前に仕様かなんかがあるんだろ?
確認してきたらどうなのよ?
デフォルトの名無しさん [sage] 2011/03/15(火) 22:24:51.79
技術検証のためにspreadのトライアル版をインストールしようと思ったが、
地震の影響か、grapecityのサイトに繋がらん・・・
オフィシャル以外で配布されてたりするんだっけ?
知ってる方いたら教えてください><
デフォルトの名無しさん [sage] 2011/03/15(火) 23:30:48.98

グレープシティのサービスは全て停止している
ttp://codezine.jp/article/detail/5838
デフォルトの名無しさん [sage] 2011/03/16(水) 09:03:50.31
こういうとき
アクティベーションを要求されるソフトは最悪だな
デフォルトの名無しさん [sage] 2011/03/17(木) 04:04:53.97
このスレであってるかどうか解らないんですが・・・、
VisualBasic 2010 Expressでフォームmainformの背景色を変更したくてmainformと言うフォーム上で

mainform.BackColor = Color.Purple

と言う命令を使いましたが、

'WindowsApplication1.mainform'は 規定のインスタンスからそれ自体を参照できません。'Me'を使用してください。
とのエラーメッセージが出ました。そこで、

Me.BackColor = Color.Purple

と言う命令を使うとエラーが出なくなりましたが、mainformの背景色が変わりません。

どのようなコードを書けば背景色が変わるのか教えてください。
デフォルトの名無しさん [sage] 2011/03/17(木) 10:13:17.67

どこでそのコードを記述してるのか
デフォルトの名無しさん [sage] 2011/03/17(木) 10:54:52.63

プロジェクトの中で、フォームはmainformだけであります。
デフォルトの名無しさん [sage] 2011/03/17(木) 12:09:15.92
フォームのどのタイミングなのかじゃないかな?
hogehoge_Load
とか
InitializeComponent() とか書かれた部分の前だとか
ソースコピペで晒してみれば?
デフォルトの名無しさん [] 2011/03/18(金) 09:48:24.43
プロジェクトのフォルダで
bin/Releaseと、
obj/x86/Release
は何が違うのでしょうか?
デフォルトの名無しさん [sage] 2011/03/18(金) 10:27:33.36
ページネーション処理が出来ないって本当?

よくあるページ移動をこういうリンクにしたいのが

<<最初 <前 1  2 3 次> 最後>>

これしか出来ないと。(涙
1  2 3 

実装段階になって先方にコントロールが無いから出来ないって言われた。
信じられん。
デフォルトの名無しさん [sage] 2011/03/18(金) 10:35:22.67
obj binは全く違う

binはコンパイルされた結果が入るんで開発者側でも使うけどobjはVSがコンパイルしたりいろいろやってるときの作業用に使うんだったはず

ふつうobjは意識しないだろ・・・とおもうんだけど俺だけ?
デフォルトの名無しさん [sage] 2011/03/18(金) 10:36:29.03

ページング位自前で実装させろ
やったことないとか言ったらその会社経験なさすぎ
デフォルトの名無しさん [sage] 2011/03/18(金) 11:34:59.54

ですよね。
自分で他言語では、やってるので泣きそうになった。
これから交渉してきます。
ありがとう。
デフォルトの名無しさん [sage] 2011/03/20(日) 08:15:15.43
例外が起きるまえに例外をcatchできないかな?

URLをもとに某SNSサイトから動画みたいなのをダウンロードするプログラムを作ってる。
このプログラムはそのページでないとArgumentExceptionを吐いてくるから、それを阻止したいなー って思って。
一応、

try

ダウンロード処理

catch ex as ArgumentException

Exit sub

end try

みたいな感じで纏めてるけど…
もっとスマートな方法を知りたいです。
よろしくお願いします。
デフォルトの名無しさん [sage] 2011/03/20(日) 09:42:36.33
> そのページでないとArgumentExceptionを吐いてくる
そのページってのを事前にチェックすればいいだけじゃないの
例外は言葉通り、事前に対処できるなら出来る限り発生させない設計のほうがいい
デフォルトの名無しさん [] 2011/03/20(日) 15:44:01.07
textboxに入っている文字列をHTMLで表示したいのですが、どうしたらいいでしょうか。
デフォルトの名無しさん [sage] 2011/03/20(日) 16:31:09.89

ttp://msdn.microsoft.com/ja-jp/library/system.web.ui.htmltextwriter.aspx
デフォルトの名無しさん [] 2011/03/20(日) 16:46:51.07

すいません、WebじゃなくてWindowsformです
デフォルトの名無しさん [sage] 2011/03/20(日) 16:53:21.11

じゃあこっち
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.aspx
あと無暗に上げなさんな
デフォルトの名無しさん [sage] 2011/03/20(日) 17:07:46.27

有難うございます。
こいつを使用してWebBrowserコントロールに表示する感じであっていますでしょうか
デフォルトの名無しさん [sage] 2011/03/25(金) 21:14:25.43
DataGridviewのとある列だけ太字にしたいんだけど、どうすればいいの?
BoldプロパティがReadonlyでいじれません
デフォルトの名無しさん [sage] 2011/03/25(金) 22:36:52.50
"2000/02/01"など文字列型のデータが変数Aに入っていて、それをDateAddを使用し+3ヶ月するよう、以下のようにしてみたした

A = DateAdd("M",3,CDate(A))

なぜか、Aの値が「#05/01/2000#」と返ってきます
一体なぜなのかわかりません…Aに"2000/05/01"と設定する上手い方法がありませんでしょうか?
デフォルトの名無しさん [] 2011/03/25(金) 22:53:50.19
間違えました

B = DateAdd〜

でした
BはDate型です
変な値が返ってくるのも、上手く設定したいのもBです
507 [sage] 2011/03/25(金) 23:00:08.23
Date型が#mm/dd/yyyy#という形になってるからそれであってるよ
Format関数で適当に整形すれ
デフォルトの名無しさん [sage] 2011/03/25(金) 23:19:49.65

!!
ありがとうございます
デフォルトの名無しさん [sage] 2011/03/25(金) 23:56:37.07

Font自体をBoldで作って割り当てたらいいんじゃないの。
デフォルトの名無しさん [sage] 2011/03/26(土) 00:13:15.00

columnsコレクションのdefaulecellstyleが?
デフォルトの名無しさん [sage] 2011/03/26(土) 00:17:00.26
テキストボックスをクリックしたとき、テキストボックス内のクリックした場所にカーソルを出すのでなく、
テキストボックスの中を選択状態にしたいのですが、これはプロパティで設定するものなのでしょうか?
(わかりにくくてすみません…)
デフォルトの名無しさん [sage] 2011/03/26(土) 03:18:27.99
ヘルプによると
MyString = String(10, "ABC") ' "AAAAAAAAAA" を返します。
というのがString関数の仕様だけど
これをABCABCABCABCABCABCABCABCABCABC
のようにABCを10回書きたい場合はどうすれば
デフォルトの名無しさん [sage] 2011/03/26(土) 07:34:07.06
そりゃVB6のString関数だろ
デフォルトの名無しさん [sage] 2011/03/26(土) 07:51:16.16
ついでに文字列を繰り返すメソッドはなかったと思うから適当に次のような
拡張メソッドでも定義すりゃいい

<System.Runtime.CompilerServices.Extension()>
Public Function Repeat(ByVal s As String, ByVal count As Integer) As String
Dim buff As New System.Text.StringBuilder
For i = 0 To count - 1
buff.Append(s)
Next
Return buff.ToString
End Function
デフォルトの名無しさん [sage] 2011/03/26(土) 08:11:35.46
一行で目的を果たせる便利さが関数どすえ?
デフォルトの名無しさん [sage] 2011/03/26(土) 08:12:39.62
関数とか言ってる馬鹿はVB6でも使ってろよ
デフォルトの名無しさん [sage] 2011/03/26(土) 11:21:45.46
マスクが99/99と設定したテキストボックスに以下のように入れても、実際のテキストに入る文字列が" /"になって、最後の二桁がなぜか取得できません

テキストボックス = " / "

なにか設定が足りないのでしょうか?
デフォルトの名無しさん [sage] 2011/03/26(土) 12:03:01.87
テキストボックスのマスクってのは何?
PasswordCharプロパティのこと?
デフォルトの名無しさん [sage] 2011/03/26(土) 12:18:05.85

いえ、MaskedTextBoxのMaskプロパティです
867 [sage] 2011/03/26(土) 12:44:33.38
すみません!

テキストボックスには" / "と表示されていました
ただ、以下のようにした場合、IF文が真になりません

テキストボックス.text = " / "

IF テキストボックス.text = " / " Then
Exit Sub

Else

処理

End If
デフォルトの名無しさん [sage] 2011/03/26(土) 12:56:25.99
Maskの9は数字または空白を許可する要素
せっかくMaskしてんのに" / "を代入する意味が分からんが
99/99でMaskした場合は" /"になる
" /"で比較すりゃTrueになんだろ
デフォルトの名無しさん [sage] 2011/03/26(土) 12:58:01.10
ああそうだった
連続した半角スペースは2chだと潰れるんだった
半角スペースの代わりにアンダーバーで表すと"__/"
デフォルトの名無しさん [sage] 2011/03/26(土) 13:03:02.08

出来ました…ありがとうございます

ちなみになぜ" /"になるのでしょう?
違ってたら申し訳ないんですが、確か.net化する前は" / "の比較がいけたと思うのですが
デフォルトの名無しさん [sage] 2011/03/26(土) 13:21:20.26
後ろが切り詰められるのはMaskedTextBoxの仕様だと思う
例えばMaskを9999にして"123 "をセットした場合は、"123 "ではなく"123"と
後ろが切り詰められる
厳密には切り詰められる訳じゃなく、後方の任意数のスペースは
無かったものと見なされてるっぽい

.NET可する前ってのはVB6だと思うが、そもそも標準でMaskedTextBoxみたいな
コントロールがあったか覚えていない
デフォルトの名無しさん [sage] 2011/03/26(土) 15:02:42.97
866
ショボスギ
デフォルトの名無しさん [sage] 2011/03/26(土) 16:31:48.03
gridviewのcellのvalueをrowindexとcolの名前で取得することは出来ますでしょうか?
デフォルトの名無しさん [sage] 2011/03/26(土) 17:33:54.28
visualstudioでソフトを作ったんですが、これをデバッグ以外で起動するにはどうしたらいいでしょうか
binの中のexeとexe.configを別フォルダに移して実行してもconfigで設定した内容が反映されません
デフォルトの名無しさん [sage] 2011/03/26(土) 17:53:45.34
リリースビルドしろ
デフォルトの名無しさん [sage] 2011/03/26(土) 18:07:31.22
そういう問題じゃないでしょw


とりあえず@itのアプリケーション設定関係の記事を一通り読めと。
話はそれから。
【東電 92.8 %】 [sage] 2011/03/26(土) 19:57:45.72

DataGridView.Rows(rowindex).Cells("colの名前").Value
ってことかえ
デフォルトの名無しさん [sage] 2011/03/26(土) 20:09:53.59
そういやMaskedTextBoxだとSelectAllやSelectionStartが
効かないのは何故?
デフォルトの名無しさん [sage] 2011/03/26(土) 20:38:00.79

一応読んでみましたが、特にそれっぽい情報がなかったです。
シャットダウン時にMy.Settingを保存する。にチェックが入っているのに保存されないとはどのようなことでしょうか。
configファイルに保存されるってことはconfigファイルとexeファイルのみがあれば正常に動作するはずなんですけどね・・・
デフォルトの名無しさん [sage] 2011/03/26(土) 20:49:01.67
データテーブルのあるセルを選択するときは
なぜ
Dt.Rows(i)("フィールド名")
であって
Dt.Rows("フィールド名")(i)
でわないの?
だれが
まず行indexを指定して
それからフィールドを指定する
という順番にしたはったん?
デフォルトの名無しさん [sage] 2011/03/26(土) 20:54:11.97

頭大丈夫か?
rowsつーたらまず行選ばんとフィールドもへったくれも無いだろうが
デフォルトの名無しさん [sage] 2011/03/26(土) 20:56:40.39
構うなよ。うつるぞ
デフォルトの名無しさん [sage] 2011/03/26(土) 20:58:53.34
Dt.Rows("フィールド名")(i)のほうが感覚的には自然
デフォルトの名無しさん [sage] 2011/03/26(土) 21:03:08.51
その感覚がおかしい
構造体の配列として捉えれば行が先の方が自然
デフォルトの名無しさん [sage] 2011/03/26(土) 21:07:15.40
感覚的には自然<キリッ
デフォルトの名無しさん [sage] 2011/03/26(土) 21:41:59.61
Dt.Rows(i)=Dt.Rows.Item(i)のItemが省略されたもの
フィールドはItemに含まれてるのだから、Itemなしに指定することはできない
デフォルトの名無しさん [sage] 2011/03/26(土) 22:22:15.97

(1)アプリ起動→(2)アプリ内で設定変更→(3)アプリ終了→(4)再度アプリ起動、で変更が保存されていないってことか?

とりあえず、上の流れを試してみて保存されていれば正常(で、に戻ると)
ああ、当たり前だけど3、4の間に移動/コピーやリビルドなんかするなよ
デフォルトの名無しさん [sage] 2011/03/26(土) 23:00:26.83

デバッグフォルダ内で起動した場合は普通に保存されます。
exeとconfigファイルのみ別のフォルダに移動して上記の流れで操作した場合のみ、保存されません
デフォルトの名無しさん [sage] 2011/03/26(土) 23:06:53.25


だから、こんなところでグダグダ言ってる暇に@ITの記事をちゃんと読めって。
アプリケーション設定がどこに保存されるとか、configの意味とかちゃんと書いてあるから。
デフォルトの名無しさん [] 2011/03/26(土) 23:34:46.07
テキストボックスに
A222BあああA555BえええAおおおB55A454B
と入っていたとします。
この文字列の
AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する

このようなロジックをつくっていただけないでしょうか?
デフォルトの名無しさん [sage] 2011/03/26(土) 23:38:24.82

宿題スレでどうぞ
デフォルトの名無しさん [sage] 2011/03/26(土) 23:46:35.81

つまり、

デバッグフォルダで起動して設定した内容は、デバッグフォルダでもう一度起動すると保存されている
移動先のフォルダで起動して設定した内容は、移動先のフォルダでもう一度起動すると保存されていない

ということか?
デフォルトの名無しさん [sage] 2011/03/26(土) 23:53:05.32

そういうことです。
exeとconfig以外に必要なファイルがあるか探してみます
デフォルトの名無しさん [] 2011/03/27(日) 01:16:07.10

ヒント
Contains IndexOf Remove
デフォルトの名無しさん [sage] 2011/03/27(日) 01:27:54.00
たぶん1文字ずつ舐めたほうが簡単
デフォルトの名無しさん [sage] 2011/03/27(日) 02:01:13.75
Windowsアプリを作成し、インストーラを作成しました。
インストーラ自体は作成されるのですが、いざsetup.exeを実行すると
インストール中にエラーが発生し、デバッグすると
パス 'C:\Users\○○\AppData\Local\Apps\2.0\D4T01EYC.LQB\ico\ico1.ico' の一部が見つかりませんでした。
と例外が発生します。

同様の現象が出たことある方がいらっしゃいましたら、どうか解決方法をご教示くださいませ。

VS2010でOSはVISTA SP2です。
デフォルトの名無しさん [sage] 2011/03/27(日) 06:09:24.12
iの初期化はi=0
Sの初期化はS=""
でわ
日付変数の初期化は?
デフォルトの名無しさん [sage] 2011/03/27(日) 08:33:35.29

その通りなんだろ
大体アイコンとか埋め込みリソースにするもんじゃね?
デフォルトの名無しさん [sage] 2011/03/27(日) 11:35:54.79

変数の初期化を定義しろ
デフォルトの名無しさん [sage] 2011/03/27(日) 11:45:12.35

もし定義しただけで自動的に初期化されてると思うなら
定義しただけの変数参照してみろよw
デフォルトの名無しさん [sage] 2011/03/27(日) 11:48:31.67
型のデフォルト値のことなら、
Int32は0
Stringは参照型だからnull
DateTimeは西暦0年1月1日0時0分0秒
デフォルトの名無しさん [sage] 2011/03/27(日) 11:58:31.01

Dim dt As New DateTime
とか
Dim dt = DateTime.Now
とか
Dim dt = DateTime.MinValue
お好きなように。
デフォルトの名無しさん [sage] 2011/03/27(日) 12:07:18.42

A〜Bの〜を消すなら(?<=A)[^B]+5[^B]+(?=B)
A〜BのA、Bだけを消すならA(?=[^B]+5[^B])|(?<=[^A]+5[^A])B
まぁ試してないから間違っているかも
デフォルトの名無しさん [sage] 2011/03/27(日) 12:11:56.03
ああ2番目のは確実におかしいね
正規表現より文字列舐めたほうが楽かな
デフォルトの名無しさん [sage] 2011/03/27(日) 12:15:15.61
一応2番目のはA(?=[^B]*5[^B]*B)|(?<=A[^A]*5[^A]*)Bかな
906の1番目も+は*じゃないと漏れちゃうね
デフォルトの名無しさん [sage] 2011/03/27(日) 17:45:14.21
Dim S as string
は=nothingも=""もTrueになる不思議!
デフォルトの名無しさん [sage] 2011/03/27(日) 17:55:02.82
VBの仕様です。
不思議でも何でもない
デフォルトの名無しさん [sage] 2011/03/27(日) 17:57:11.26
泥棒したら逮捕される不思議
と同じ
デフォルトの名無しさん [sage] 2011/03/27(日) 18:30:11.92
頭悪いたとえだな。
デフォルトの名無しさん [sage] 2011/03/27(日) 18:36:20.84
どこが?
デフォルトの名無しさん [sage] 2011/03/27(日) 18:39:10.92

ちゃんとMSDNでも説明されているだろ
ttp://msdn.microsoft.com/ja-jp/library/ms233957.aspx

ここら辺ちゃんと読んどけ
ttp://msdn.microsoft.com/ja-jp/library/hzcd8ze0.aspx
デフォルトの名無しさん [sage] 2011/03/27(日) 19:00:42.36
enputyとnoghingとnullと""の4つは同値
デフォルトの名無しさん [sage] 2011/03/27(日) 19:18:00.86

そんな力んでいうような事か?
カルシウム足りないんじゃないの?
まあちゃんとMSDNライブラリの参照先を貼ってる点は買うけどさ。


それは違うよ。
Nothingは空文字として扱うが、逆は成立しない。
デフォルトの名無しさん [sage] 2011/03/27(日) 19:30:32.95
Visual Basic.NETが
Visual Basic
という名前に戻っちゃったから
ヘルプ見てもわからないんだよ!
デフォルトの名無しさん [sage] 2011/03/27(日) 19:31:41.78

どこが力んでんだよw
突っ込むにしてもここは初めてか?力抜けよくらいのネタで返しとけよ
デフォルトの名無しさん [sage] 2011/03/27(日) 19:39:19.47

俺はそういう気色の悪いノリは大嫌いなんだよ君と違って
デフォルトの名無しさん [sage] 2011/03/27(日) 19:41:14.95

あらあら^^
デフォルトの名無しさん [sage] 2011/03/27(日) 20:50:31.65

exeとconfigのみを移動させれば大丈夫ということがわかりました。
移動先でも保存されました、でもその2ファイルを別のとこに移動するとsettingが初期化されてしまいます。
あと保存後でもconfigの内容に一切変化がないんですが、基本的にどこのファイルに保存されるのでしょうか?
どこかの隠しファイルとかでしょうか?
デフォルトの名無しさん [sage] 2011/03/27(日) 20:58:46.69
だから機能から@ITの記事読めと何度も言ってるだろうに.....
アンタが知りたいことは全部書いてある。
必用なのは記事を読む時間と少しの根気だけだ。

しかしどっか足りない奴に限って妙に頑固だな。
デフォルトの名無しさん [sage] 2011/03/27(日) 21:18:31.44

一通り読めで用が足りるなら粘着はしないとw
つーか怒る位ならアドレス全部書いとけよ
それで読まないならいくら怒ってもいいから
デフォルトの名無しさん [sage] 2011/03/27(日) 21:23:04.96
デフォルトの名無しさん [sage] 2011/03/27(日) 21:25:02.58

読みましたが、よくわかりませんでした。
ので訊きに来ました
デフォルトの名無しさん [sage] 2011/03/27(日) 21:28:04.59

OK.
とりあえず↓から芋づる式に関連する記事を一通り読めばいいと思う。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/558appsettings/appsettings.html


そんな難しい話じゃないから読めば分かるはず。
デフォルトの名無しさん [sage] 2011/03/27(日) 21:54:10.92

有難うございます
読んでみましたが、結局のところexe.configには初期設定のみが記載してあり、
settingを保存するところはuser.configということは理解できました。
使い勝手があんまりよくないので、同一フォルダの別ファイルに設定を保存したいのですが、
それにはiniファイルなどを使用するしかないのですか?
初期値を設定するためだけにexe.configを使うんならexeに組み込んじゃったほうがいいと思うのですが、気のせいでしょうか。
デフォルトの名無しさん [sage] 2011/03/27(日) 22:04:16.94
My.Settingsを使って実行ファイルと同じディレクトリに
設定値を保存することはできません。
自前で実装してください。
デフォルトの名無しさん [sage] 2011/03/27(日) 22:20:15.26
今更iniファイルとか、それこそ使い勝手がよくないだろ
.NETはXMLを簡単に操作できるクラスやLINQとかの機能まで用意してんだから
xml形式のconfigファイルで十分だと思うんだけどなぁ
iniファイル使うくらいならRegistryKeyクラスがある分レジストリいじるほうが
まだマシなもんだろ
デフォルトの名無しさん [sage] 2011/03/27(日) 22:22:25.66

論点ずれてますよ
デフォルトの名無しさん [sage] 2011/03/28(月) 06:12:47.99
rs.movenext
のメソッドが無くなったので助けてくだしぃ
デフォルトの名無しさん [sage] 2011/03/28(月) 12:00:31.81

DataTable.CreateDataReader() はどう?
デフォルトの名無しさん [sage] 2011/03/28(月) 17:21:18.19
おk
507 [sage] 2011/03/28(月) 18:53:26.17
XAML(WPF)慣れない

検索してもC#ばっか出てくるから
C#勉強したほうが良いかなあ?
デフォルトの名無しさん [sage] 2011/03/28(月) 18:55:48.70
C#のコードも大体読めるようになっておくとたまに便利
デフォルトの名無しさん [sage] 2011/03/28(月) 20:01:47.06
初心者すぎて申し訳ないですが、質問です…

レコードの中に数値項目がいくつかあっていて、それらをCSVに落としたのですが、負数だけなぜかCSVに出力すると空になってしまいます
(値は.textで取得してます)
これは一体なぜなのでしょうか?
※ちなみにvalueで取得してもだめでした
デフォルトの名無しさん [sage] 2011/03/28(月) 20:15:32.69
1回tostringして取得したら?
デフォルトの名無しさん [sage] 2011/03/28(月) 20:48:17.67
警察が郵便局長を牢屋にぶちこんだ
ファイル作成日を変更するプログラムはどうかけば
デフォルトの名無しさん [sage] 2011/03/28(月) 22:11:27.69

ttp://msdn.microsoft.com/ja-jp/library/system.io.file.setcreationtime.aspx
デフォルトの名無しさん [sage] 2011/03/28(月) 22:35:32.32
パソコンの日付変更してコピーしたら良いんじゃないか?
デフォルトの名無しさん [sage] 2011/03/29(火) 04:19:28.23

了解
デフォルトの名無しさん [sage] 2011/03/29(火) 19:47:16.09
NullってのはDB.Nullしかないんだよね?
デフォルトの名無しさん [sage] 2011/03/29(火) 20:27:10.79

どこでNullって出てきたのか解らんから、それだけではなんとも
VBではNothingってのもあるからな
デフォルトの名無しさん [sage] 2011/03/29(火) 20:32:12.19

C#→NullはNull
VB.NET→NullはNothing

DBNullは別の物
DBNull≠Null
デフォルトの名無しさん [sage] 2011/03/30(水) 03:02:48.01
なるほろ
デフォルトの名無しさん [sage] 2011/03/30(水) 22:34:41.00
この直線をx軸に4並行移動すると
っていう表現変だと思うんだけど
この直線をx軸に4並行移動させると

ただしくないかぃ?
デフォルトの名無しさん [sage] 2011/03/30(水) 23:35:19.85
質問です

画面にテキストボックスが10個ありまして、そのテキストボックスすべてクリックした時のイベントを統一しています
クリックしたときセルの中身を選択状態にするという統一されたイベントを、一つのプロシージャでなんとか処理できないでしょうか?
今のところ各テキストボックスのクリックイベントが一つずつ存在してますが、長いし同じ処理なのにすごく効率悪く感じます

クリックしたテキストボックスの名前を取得する方法などがあればいいのですが…
効率化するにはどうすればよいでしょうか?
デフォルトの名無しさん [sage] 2011/03/30(水) 23:46:36.14
DirectCast(sender, TextBox)
947 [sage] 2011/03/30(水) 23:46:39.50
あああああああ…
自分で書き込んでおいてアレですが、senderの存在を忘れてました
すみませんでした
デフォルトの名無しさん [sage] 2011/03/31(木) 00:05:40.89
例えば

abc ; xyz ; あいう

というデータがあるとします。
このうち;毎にデータを区切ってそれぞれコレクションに追加する、のようなプログラムはどのように書けばいいなでしょうか。
デフォルトの名無しさん [sage] 2011/03/31(木) 00:08:15.51
Dim collection As List(Of T) = New List(Of T)()
collection.AddRange(str.Split(";"))
951 [sage] 2011/03/31(木) 00:09:39.18
別に関係ないけどTではなくStringの間違い
デフォルトの名無しさん [sage] 2011/03/31(木) 00:12:06.02

サンクス
デフォルトの名無しさん [sage] 2011/03/31(木) 00:17:51.73
設定保存手法として
My.Settings(内部ファイル)
ini
レジストリ
xml(外部ファイル)
とかあるけどどれが一番いいの?

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

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

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

区切り文字が2文字の場合はどうすればいいでしょうか
[]毎に区切りたいです
デフォルトの名無しさん [sage] 2011/03/31(木) 14:21:45.09

ttp://msdn.microsoft.com/ja-jp/library/system.string.split(v=VS.100).aspx
デフォルトの名無しさん [sage] 2011/03/31(木) 22:34:41.92

Dim hoge As String = "abc[]xyz[]あいう"
Dim fuga = Strings.Split(hoge, "[]")

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

それとも[]ってのは"[abc][xyz][あいう]"こういうの言ってる?
デフォルトの名無しさん [sage] 2011/04/02(土) 14:56:47.91

俺は.NETではXML(ユーザー別に設定を保存したい時はMy.Settings)、WIN32APIではINIを使ってる
レジストリはなるべく使わない
デフォルトの名無しさん [sage] 2011/04/02(土) 19:33:05.51
iniはMSが使うなって言ってるから使わないほうがいい。
レジストリのほうが楽だし。
デフォルトの名無しさん [sage] 2011/04/02(土) 21:34:44.78
MSの話は信じないほうがいい。
裏切られた事しかないだろう?
デフォルトの名無しさん [sage] 2011/04/02(土) 21:51:44.20
そろそろソフトバンク携帯などのアプリをVB.NETでつくれるようにしてもらわないと
デフォルトの名無しさん [sage] 2011/04/02(土) 22:46:08.71
WP7はVBサポートしてるけど
XNAやMFのように、新しいプラットフォームのVB対応にMSは消極的で切り捨てられつつあるので
そういうのに興味があるならC#に移行するべき
デフォルトの名無しさん [sage] 2011/04/02(土) 23:19:53.81

VBもC#も同じ.NET Frameworkっていうプラットフォームで動作していると思ってんだが
WindowsPhone7上では違うんか?
デフォルトの名無しさん [sage] 2011/04/02(土) 23:28:01.16
同じだけど開発環境(Visual Studio)が対応してないと作るの難しいでしょ
基本的にC#優先でVBは遅れて対応するかそのまま放置
デフォルトの名無しさん [sage] 2011/04/02(土) 23:30:37.39

レジストリかiniかって行ったらiniが危ないだろ。ダントツで。
デフォルトの名無しさん [sage] 2011/04/02(土) 23:34:40.63
理由は?
デフォルトの名無しさん [sage] 2011/04/02(土) 23:41:37.32

16bitの互換性のために残してあるから使うなって書いてある。
デフォルトの名無しさん [sage] 2011/04/02(土) 23:46:14.18
vistaのときに動かなくなったソフトが続出したときも、
msが悪いみたいな感じで、作り方が悪いって言ってるやつは少なかったから
ini使ってて動かなくなっても「まーたmsに裏切られたw」とか言ってれば
まあ体面はたもてるな。
デフォルトの名無しさん [sage] 2011/04/02(土) 23:57:14.26
普通に考えればファイルの形式なんか問題じゃない。
MSもそんなことに口ばしを挟んでいた記憶はないけどね。

MSが問題にしてたのは設定値の保存先だけじゃなかったのかな。
バイナリと同じディレクトリとか、下手するとシステムフォルダとか、
もっと最悪なのはCドライブの決め打ちのパスとかに、しかもマルチユーザーを
意識せずに保存する悪い習慣は止めてねって言ってただけでしょ。
デフォルトの名無しさん [sage] 2011/04/02(土) 23:59:07.48

C#が優先されているわけじゃなくて、もともとMSの.NET戦略として新規に作られた言語がC#な訳で
新しい機能を試験的にも組み込みやすいからVBよりも先に対応されてんだよ
だから後続のVSバージョンでVBにも機能が追加されてる(ジェネリック、ラムダ式、LINQ、自動プロパティとか)
VB6から無理して.NET対応したくらいだし、急にMSがVBを見捨てるとは思えんけどな
デフォルトの名無しさん [sage] 2011/04/03(日) 00:02:50.67

くちばしを挟むっていうか、iniじゃなくてレジストリ使えって書いてある。
デフォルトの名無しさん [sage] 2011/04/03(日) 00:06:11.34
iniファイルの読み書きルーチン自作して、マルチユーザー対応も
しっかりしてればiniでも独自形式もなんでも問題ないわな。
まあ、おれは使わないけど。
デフォルトの名無しさん [sage] 2011/04/03(日) 00:13:45.33
XMLやレジストリよりINIファイルを好むってのはエンドユーザとかSEが簡単に設定の追加・変更・確認が
しやすいからだと思ってるんだが、まぁ設定管理画面くらい別に実装しろって言うとそれまでだけど
デフォルトの名無しさん [sage] 2011/04/03(日) 00:26:59.27

むしろ.NET立ち上がり時にレジストリはもう使うな、という話はあった。
ファイルの形式については問題にする意味がわからない。
常識的に言って大きなお世話だろう。

せっかくあるシリアル化等の機能を使った方が生産性が高いですよ、というのなら話はわかる。
デフォルトの名無しさん [sage] 2011/04/03(日) 00:47:44.44

XNAのVB切捨てとか明らかにサポートコスト削りだよ
デフォルトの名無しさん [sage] 2011/04/03(日) 01:16:20.45

対応するみたいだけど
ttp://blogs.msdn.com/b/lisa/archive/2011/03/28/xna-is-coming-to-visual-basic.aspx

そもそもXNAってVB対応してたっけ?
デフォルトの名無しさん [sage] 2011/04/03(日) 01:31:16.05

問題にする意味って、APIは使うなってアナウンスがあるし、
iniの読み書きルーチンでも独自に作ればいいけどそんなことを
するほうが意味が分からない。

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

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

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

デフォルトの名無しさん [sage] 2011/04/03(日) 12:10:51.86
文字列の最大値 の意味がわからない
Char型の値はUnicodeの文字コードの数値で、Char.MaxValueはその最大値
文字数は全く関係ない
デフォルトの名無しさん [sage] 2011/04/03(日) 12:13:34.26
先進機能をC#で実験的に実装、安定化・普及後にVBにも実装
やっぱVBでいいや
デフォルトの名無しさん [sage] 2011/04/03(日) 13:30:19.72

文字列の最大長のことかね。
2Gとか4Gとかそのあたりだろうけど、そんな限界まで使わないから分からないな。
デフォルトの名無しさん [sage] 2011/04/03(日) 13:33:27.40
何の話をしてるんだよ...
985 [sage] 2011/04/03(日) 15:46:39.66
色々検索してみたけど

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

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

で最大値って何よ
デフォルトの名無しさん [sage] 2011/04/03(日) 16:06:13.75

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

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


まさに私が質問したかったことです。
私の表現と知識が足りずにうまく伝わらなかったようですが。
デフォルトの名無しさん [sage] 2011/04/03(日) 16:34:16.22

文字列の最大値は、Char.MaxValueのCharが、文字列の最大長まで
入ってる文字列だよ。

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

みたいなやつ。
(実際にInt32.MaxValueの長さの文字列を作れるかどうかは知らんけど)
デフォルトの名無しさん [sage] 2011/04/03(日) 19:21:34.37
Char同士の比較は文字コードの数値比較だけど
文字列の比較は通常カルチャ依存だから絶対的な最大値はないよ
デフォルトの名無しさん [sage] 2011/04/03(日) 19:46:29.60
まあ、Char.MaxValueを使ってる文字列なんてなさそうだから、
実用上は new string(Char.MaxValue)でよさそうな感じだけど > どの文字列より大きい文字列
デフォルトの名無しさん [sage] 2011/04/03(日) 19:53:54.14
何の実用だよ
デフォルトの名無しさん [sage] 2011/04/03(日) 19:59:00.14

番兵とかHIGH_VALUE的な使い方とか。
1001 [] Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

2ch勢いランキング アーカイブ プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら