VB.NET質問スレ(Part35)at TECH
VB.NET質問スレ(Part35) - 暇つぶし2ch1:デフォルトの名無しさん
10/09/14 09:20:53
前スレ

VB.NET質問スレ(Part34)
スレリンク(tech板)

テンプレは >>2-4 あたり

2:デフォルトの名無しさん
10/09/14 09:21:33
MSDN
  URLリンク(msdn.microsoft.com)
どぼん!のVB道のトップページとTipsページ
  URLリンク(dobon.net)
  URLリンク(dobon.net)
Insider.NET
  URLリンク(www.atmarkit.co.jp)
宇宙仮面の C# プログラミング
  URLリンク(uchukamen.com)
.NET TIPS
  URLリンク(www.atmarkit.co.jp)
緑のバイク ★ 初めてのC# プログラム全般
  URLリンク(homepage3.nifty.com)
VB.NETとC#でデザインパターン
  URLリンク(hccweb1.bai.ne.jp)
匣の向こう側
  URLリンク(www.ne.jp)
WisdomSoft
  URLリンク(wisdom.sakura.ne.jp)
じゃんぬねっと
  URLリンク(jeanne.wankuma.com)
どっとねっとふぁん - C# Tips And Samples -
  URLリンク(homepage3.nifty.com)
  URLリンク(dotnetfan.org)
C#プログラミングTips
  URLリンク(www.atmarkit.co.jp)

3:デフォルトの名無しさん
10/09/14 09:22:13
CodeProject
  URLリンク(www.codeproject.com)
the GotDotNet Home Page
  URLリンク(www.gotdotnet.com)
KEN's .NET
  URLリンク(www5b.biglobe.ne.jp)
Cetus Links: 19,498 Links on Objects and Components / .NET
  URLリンク(www.cetus-links.org)
HIRO's.NET
  URLリンク(vbdotnet.fc2web.com)
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
  URLリンク(www.atmarkit.co.jp)
.NETでいきまっしょい!
  URLリンク(santamartadotnet.hp.infoseek.co.jp)
これがほしかった!厳選サンプルツール集
  URLリンク(anetm.com)
ぬーやんのdotNET講座
  URLリンク(www.geocities.jp)
PINVOKE.NET
  URLリンク(www.pinvoke.net)
WinAPI Database for VB Programmer
  URLリンク(www.winapi-database.com)

4:デフォルトの名無しさん
10/09/14 09:22:54
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
  URLリンク(custom.programming-in.net)
CodeZine
  URLリンク(codezine.jp)
ConvertCSharp2VB
  URLリンク(www.kamalpatel.net)
@IT:.NET Tools
  URLリンク(www.atmarkit.co.jp)
SharpLibrary Redirector
  URLリンク(www.sharplibrary.com)
MSDN アカデミック アライアンス 技術資料
  URLリンク(www.microsoft.com)
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
  (VS2005) URLリンク(www.microsoft.com)
  (VS.NET 2003) URLリンク(www.microsoft.com)
PAPA'n VB
  URLリンク(papanvb.i-love-vb.net)
  (旧コンテンツ) URLリンク(www.mitene.or.jp)
VB レスキュー花ちゃん
  URLリンク(www.bcap.co.jp)
VB中学校
  URLリンク(homepage1.nifty.com)
初心者から中級者のためのVB
  URLリンク(www7b.biglobe.ne.jp)

テンプレここまで

5:デフォルトの名無しさん
10/09/14 09:50:29
誘導されました。

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




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

…sourceって予約語じゃない気もするけどね

7:デフォルトの名無しさん
10/09/14 10:18:12
例だから
好きな変数に書き換えて使ってください

8:デフォルトの名無しさん
10/09/14 12:00:27
なるほど
予約語ですか。
ありがとうございました。

9:デフォルトの名無しさん
10/09/14 16:01:18
インターネットでサンプルをみながらVB.NETを勉強しています。
継承(inherits)していないクラスのコンストラクタに
MyBase.New()
と書かれているのですが、これはなんのためにあるのでしょうか。

対象のサンプルコードが書かれているページ
URLリンク(park5.wakwak.com)

10:デフォルトの名無しさん
10/09/14 18:04:35
Sub Newの扱いは他のメソッドと比べると少し特殊です
MyBaseのNew()を呼ぶことで、System.Object クラスの新しいインスタンスを初期化します
この作業を行うことで、始めてコンパイラは基底クラスをインスタンス化できるようになります

11:デフォルトの名無しさん
10/09/14 18:21:08
呼ばなくても引数なしのコンストラクタが勝手に呼ばれるから>>9の場合は省略していい
というか普通は省略する

12:デフォルトの名無しさん
10/09/14 19:01:46
.net初心者です。
ライフゲームをつくっているのですが、For文と配列をつかって、PictureBoxを並べて表示させることはできました。
これでは決まりきった形(正方形や長方形)の背景しか表示できず、ライフゲームとして面白みがありません。
そこで、たとえば猫の写真をもってきて、猫の形の背景をつくりたい(つまり猫の形上でライフゲームが展開したい)とき、
どういう関数を使えばいいでしょうか?

13:デフォルトの名無しさん
10/09/15 13:35:04
四角や長方形を組み立ててドット絵風に猫の絵にする
猫の絵のjpgやbmp読み込んでDraw関数で書き込む
PictureBoxの背景画像を猫にする

14:デフォルトの名無しさん
10/09/16 19:20:52
「ライフゲームとして面白みがない」というのがよくわからん。外観だけの話じゃないのか?
もし猫の写真を認識してライフゲームの初期状態やフィールドの形状を生成するってことだったら
写真をBitmapオブジェクトに読み込む→画像を方眼状に仮想的に分割
→一つのセルに含まれるすべてのピクセルの色の平均を求める→明度かなんかを閾値として生か死か決める
→これを全てのセルに対して繰り返す
一番シンプルな形としてはこんな感じだろうけど、いきなりこれだけ組み立てるのはたぶん君にはまだ難しい。

15:デフォルトの名無しさん
10/09/17 19:09:03
webbrowser1でリンクをクリックしたとき、それをwebbrowser2で開きたいと思っています。
BeforeNavigateという機能を使えばできそうな感じではあるのですが、初心者向けの解説がなく、さっぱり使い方がわかりません・・・
どういったプログラムを書けばいいのでしょうか・・・

16:デフォルトの名無しさん
10/09/18 23:16:46
VB.netとはあまり関係無いかもしれませんが、
ファイルの作成日時と更新日時の関係がどうも納得行かないので質問です。


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

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

ここで疑問なのはなぜ【更新日時】が【作成日時】よりも過去になっているのでしょうか?
ファイルの 作成 > 更新 という流れなので【更新日付】が
一番直近の日時になっていなくてはならないと思うのですが。


17:デフォルトの名無しさん
10/09/18 23:26:28
自由にいじれるもんにそんな文句付けても仕方ないが
例えばファイルコピーしたら作成はされるが更新はされない

18:デフォルトの名無しさん
10/09/18 23:55:06
>>17
ありがとうございます。そーいえばコピーしましたw

19:デフォルトの名無しさん
10/09/19 23:49:28
別のフォームにあるテキストボックス(TextBox1)の内容を取得したいのですが、
(そのフォームも自作アプリなのですが)
GetWindowTextで取得すると、TextBox1という文字列が取得されてしまいます。
起動後に手入力で内容を書き換えても、FormLoad時に書き換えても
フォームデザイナに初期に定義されていたTextBox1という文字が返ってきてしまいます。
フォームデザイナであらかじめ変更しておくとその通り返ってくるのですが
実際のそのときのテキストボックスの内容を取得する方法を教えて頂きたいです

20:デフォルトの名無しさん
10/09/20 00:08:30
別のフォームって別のアプリケーション?
WM_GETTEXT使う

21:デフォルトの名無しさん
10/09/20 02:56:17
ありがとうございます。
SendMessageを調べてみます。

22:デフォルトの名無しさん
10/09/20 07:41:24
>>19
そのアプリケーションは何で作ったのだろうか?

実はGetWindowTextに渡すウィンドウハンドルが間違っているだけの予感がする。

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

>>22
GetWindowTextでTextBox1という文字が返ってくるのでハンドルは間違って
いないのではないかと思います。
その後検索してみたのですがGetWindowTextは他のアプリケーションに対しては使用できないみたいでした。

24:デフォルトの名無しさん
10/09/20 22:55:19
コモンコントロールのボタンならBM_CLICK

25:デフォルトの名無しさん
10/09/20 23:24:07
BM_CLICKで出来ました。
どうもありがとー

26:デフォルトの名無しさん
10/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

27:デフォルトの名無しさん
10/09/21 18:16:19
あらかじめフォーム上にある一つのボタンのクローンを50個ロード時に動的に増やすサンプルコード書いてくれませんか?

28:デフォルトの名無しさん
10/09/21 18:20:54
糞UI乙
それ余計に難しいから最初の一個のプロパティやイベントハンドラもコードから設定した方が早い

29:デフォルトの名無しさん
10/09/22 11:55:47
>>26
2バイト文字を扱うのなら---Aではなく---Wをつかうべきでは?

30:デフォルトの名無しさん
10/09/22 11:58:30
>>26
それと、両方の文字セットが使われる可能性があるのなら、DeclareじゃなくDllImport属性つけてCharSetをAutoにしたほうがいい。

31:デフォルトの名無しさん
10/09/22 15:30:05
DeclareでもAuto修飾子があるよ

32:デフォルトの名無しさん
10/09/25 21:23:52
Open FileName For Binary Access Write As #1はVB.netでは使えないのかな。
VB.netでこのユーザ定義型で読み書きするには、どうしたらいいですか?
URLリンク(www.mb.ccnw.ne.jp)

33:デフォルトの名無しさん
10/09/26 14:51:25
ちょっと素朴な疑問なんだけど
ClientRectangle.Locationプロパティでコントロールの原点を取得するのって何か意味あるの?常にx=0 y=0だから、もし座標変換や座標計算で使用する場合
いちいち取得しなくても直接 x=0 y=0 でやったらだめなんかなぁ?
それとも何か特別な時に変化とかするの?わかる人教えてください

長文すんません

34:デフォルトの名無しさん
10/09/26 15:17:34
>>33
素朴に質問する前に、MSDNライブラリのControl.ClientRectangleの項は読んだの?
読んでないでしょ?

MSDNライブラリも読まずに質問するって面の皮厚過ぎないか

35:デフォルトの名無しさん
10/09/26 18:54:28
>>34

回答もできないやつに限ってOO読みましたかとか?いう
クソだねカスだねさらにうなら病院行った方がいいね

36:デフォルトの名無しさん
10/09/26 19:05:40
呼んだからしてんじゃねーの?

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


37:デフォルトの名無しさん
10/09/26 19:07:02
>>36
呼んだから=x 読んだから=○

38:デフォルトの名無しさん
10/09/26 19:12:45
>>34
お前が読め

39:デフォルトの名無しさん
10/09/26 19:16:11
>>36 
>コーンとロール

新しいスイーツ?

40:デフォルトの名無しさん
10/09/26 19:20:29
>>34
なんか偉そうだな

41:デフォルトの名無しさん
10/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をフックし、有効/無効を切り替える方法を教えて頂けないでしょうか。

よろしくお願いします。


42:デフォルトの名無しさん
10/09/27 00:31:30
>>41
メソッド呼び出しのフックなんて危険なことがそう簡単にできると思えないなあ。

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

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

何か勘違いがあるんじゃないの?

43:デフォルトの名無しさん
10/09/27 02:39:10
確かに、非同期といってもよっぽど頻繁にDoEventsが動いてないと
変な状況が目立って出るはずありませんね。

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

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



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

しかし通信中に迂闊にDoEvetnsなんて呼んだら、まともに通信できなくなるだろうに。


45:デフォルトの名無しさん
10/09/27 08:45:05
というか、DoEventsなんか使うあなたの同僚もおかしいけど、

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



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

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

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

お騒がせしました&ありがとうございました。


47:デフォルトの名無しさん
10/09/27 18:50:33
クラスライブラリ(プロジェクト名:xlsworks、クラス名:xlsjobs)を作成してm
COMオブジェクトの「Microsoft Excel 11.0 Object Library」を参照しました。

で、そのクラスを別のWindowsApricationからプロジェクト参照で呼び出して使用してるんですが、
そのクラス内で所得できる、
Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter
のような、列挙体で設定されてる数値は、
WindowsAprication側からは参照できないんでしょうか?

48:デフォルトの名無しさん
10/09/27 19:45:00
スレッドを立ち上げて待機状態にしてメイン側から必要な時だけ
動かしたいのだけどそういうスレッド間の同期とる場合もセマフォとか
使うのでしょうか

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

50:デフォルトの名無しさん
10/09/27 20:18:28
>>48
AutoResetEventでも使えば

51:デフォルトの名無しさん
10/09/28 08:13:52
byval/byrefについて、stringの場合はbyvalで渡す方が一般的でしょうか?

52:デフォルトの名無しさん
10/09/28 09:00:32
引数全般ByValが基本だよ

53:デフォルトの名無しさん
10/09/28 09:34:08
ありがとうございます!

54:デフォルトの名無しさん
10/09/28 15:56:47
URLリンク(support.microsoft.com)
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を使うべき?

55:デフォルトの名無しさん
10/09/28 16:17:10
C#だと最適化されて同じになるんだけどな
ちゃんと型指定されてるからVBだから最適化できないってことはないはず
コンパイラが馬鹿なんだろ

56:デフォルトの名無しさん
10/09/28 17:57:57
うちの環境だと差は出ないな。
VSのデバッグモードで動かしたりしてない?

XPSP3, .NET4.0でコマンドラインからoptimizeコンパイル、実行。
最初のループだけ早くなる傾向があるから、
foreachとforを3セット繰り返して、後ろ2セットで測定した。


57:デフォルトの名無しさん
10/09/28 18:24:12
for eachのnextは列挙の次の要素の取得だけど、
普通のforのnextはintegerのインクリメントだからなぁ
列挙よりインクリメントが早いって話なんじゃないだろうか

58:デフォルトの名無しさん
10/09/28 18:24:42
csvの1行目を除外してA列で昇順で並び替えるには、どうしたらいいですか?

59:デフォルトの名無しさん
10/09/28 19:04:36
>>56 デバッグモードで試してた。それをきいて一安心

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

>>57 csvを1行目を除外して読み込んでorder byとかでやればいいんじゃない?
しかしVB.netよりもVBAのほうがいいように思うけど
もしその作業が単発ならExcelのオートフィルタ

60:デフォルトの名無しさん
10/09/28 19:05:26
ずれた。後半は>>58

61:デフォルトの名無しさん
10/09/28 19:32:30
このサンプル・プログラムで最後の行から最初の行に読み込むようにするには?
URLリンク(www.atmarkit.co.jp)

62:デフォルトの名無しさん
10/09/28 19:49:01
どこまで出来て、どこが出来ないの

63:デフォルトの名無しさん
10/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


64:デフォルトの名無しさん
10/09/28 22:41:49
無理
全部List(Of String)にでも読み込んでからReverseしてFor Each

65:デフォルトの名無しさん
10/09/29 03:10:38
複数列あるcsvをList(Of String)とか配列に読み込む方法がわからない。

66:デフォルトの名無しさん
10/09/29 03:35:20
古本屋に行って投売りされてる初心者本片手にMSDNとにらめっこ一ヶ月ぐらいした方がいいぞそのレベルは

一行ずつ読み込んでも、全部いっぺんに読み込んで改行コードで分割するんでもいいだろ。

67:デフォルトの名無しさん
10/09/29 07:31:10
>>66
>>35

68:デフォルトの名無しさん
10/09/29 12:23:20
まとめて読み込むなら、これだな。
URLリンク(msdn.microsoft.com)


69:デフォルトの名無しさん
10/09/29 18:38:14
>>57
やってることは一緒なんだからコンパイラが最適化できる。バカ正直にIEnumerator操作する必要はない。
むしろ、for eachの列挙の方が形が決まってる(自由度が低い)分最適化の余地が大きい。

70:デフォルトの名無しさん
10/09/30 09:08:23
日付を2001001から2001/10/01へ変換するにはFormatはどうすれば?

71:デフォルトの名無しさん
10/09/30 10:39:35
2001年0月1日?

72:デフォルトの名無しさん
10/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でフォーマット使って文字列にした方が応用が利く

73:デフォルトの名無しさん
10/09/30 11:46:17
>>61
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

74:デフォルトの名無しさん
10/09/30 12:44:52
そこもわかってないんだろうけど問題はそこじゃないだろ
結論から言うと>>61の方法は使えない
自分でTextReaderの派生クラス作ってうまく辻褄合わせしてやればできなくはないけど>>61には絶対無理
一行ごとにTextFieldParserを作るとか強引な方法は考えられるけど
ある程度フォーマットの決まったファイルを読むならTextFieldParserなんて使わずに自分で書くのも難しくない

75:デフォルトの名無しさん
10/09/30 13:04:49
>>73で出来たけど?

76:74
10/09/30 13:29:28
考えたら>>73はどうせメモリに全部読み込むの前提なんだから
全ての行を逆に結合して一つの文字列にしてしまえばTextFieldParser使えるね

77:デフォルトの名無しさん
10/09/30 14:10:24
サンプル・プログラムでTextFieldParser使ってるのに意味不明。

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

つか>>54の二つのループって同じ処理結果じゃないだろ、これ

79:デフォルトの名無しさん
10/09/30 15:56:17
C#ではfor (int i = 0; i < array.Length; i++) hoge(array[i]);
のような典型的な形の配列アクセスは最適化されるよ
配列専用の特別なIL命令が使われるらしい
VBはどうか知らないけどたぶん一緒

80:デフォルトの名無しさん
10/09/30 20:05:02
>>47
質問だけしてトンヅラって感じの悪い野郎だな

81:デフォルトの名無しさん
10/09/30 20:51:29
文字か数値か判別するのにChar.IsNumberとかInteger.TryParseだとうまくいかない。
「String "--" から型 'Double' への変換は無効です。」とエラーが出る

他に文字か数値か判別する方法はないのかな?

82:デフォルトの名無しさん
10/09/30 21:06:27
それ、IsNumberやTryParse以外の所でミスってないか?

どの行でエラー出してるか確認してみろ

83:デフォルトの名無しさん
10/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

84:デフォルトの名無しさん
10/09/30 22:27:35
「正常系の処理に例外を使うな」

85:デフォルトの名無しさん
10/09/30 22:29:19
うっせーよ

86:デフォルトの名無しさん
10/10/01 01:22:19
>>78
だよな。
列挙の方は要素からの読み取りで間接的な参照が挟まるlことになる。


87:デフォルトの名無しさん
10/10/01 08:56:41
VB2008使用です。
チェックボックスを出しているDateTimePickerで、
Checkedの変更タイミングで行いたい処理があります。

ValueChangedで実装してみたのですが、
DateTimePicker.Value=Today
DateTimePicker.Checked=True
とした後にチェックボックスを画面上で外すと
ValueChangedが行われません。
Checkedの変更タイミングはValueChangedではないのでしょうか?

88:デフォルトの名無しさん
10/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; とやりたいところですが・・・。
よろしくお願いいたします。

89:デフォルトの名無しさん
10/10/01 14:07:01
非同期なら
GCHandle.AllocでGCHandleType.PinnedしておいてAddrOfPinnedObject
その配列がアンマネージで使われなくなったらFreeを忘れずに
あとポインタとかハンドルはInt32じゃなくてIntPtrな

90:デフォルトの名無しさん
10/10/01 14:17:29
書き戻しがないなら単純にコレでいけると思う。
<StructLayout(LayoutKind.Sequential)> Structure WAVEHDR 
 Dim waveBuffer As Byte(BUFFER_SIZE) 
 Dim dwBufferLength As Int32 
   :
どうしてもリアルにアドレスを数値化したいなら
固定化なりマーシャリングを自前でやる必要がある。

91:デフォルトの名無しさん
10/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

92:デフォルトの名無しさん
10/10/02 15:48:30
1.0000000015にたいして
00000000がとれれば良いの?

93:デフォルトの名無しさん
10/10/02 15:55:13
1.0000000015の場合は
1.00000000が取りたいです。
実際には1.・・・・という値が対象になることはないです。いつも0.・・・・・nn・・・
0.00・・・・・nnnで0以外の数字が出るまでの0.000000の部分を取りたいです。


94:デフォルトの名無しさん
10/10/02 16:02:35
nをそのまま文字列にすると1.5E-09になるぞ。

nをはじめから文字列にしたらどうなる?
Dim n As String = "0.0000000015"


95:デフォルトの名無しさん
10/10/02 16:02:40
[1-9]\.0+
あとそういうのに浮動小数点使うな
Decimal使う

96:デフォルトの名無しさん
10/10/02 16:04:31
94みたいなことをしてないか気づけるので
Option Strict Onおすすめ

97:デフォルトの名無しさん
10/10/02 16:06:20
誤解されそうな表現だった。別に94に何か言いたいことがあるわけじゃなくて
勝手に暗黙的な変換がなされるのを防ぐって意味ね

98:デフォルトの名無しさん
10/10/02 16:09:42
レスありがとうございます。
Decimalでできました!正規表現もありがとうございます。
String変数に入れると"9E+15"みたいになってしまいました。
Option Strict Onをやったら何箇所か~~~が出ました;
どうもありがと!

99:デフォルトの名無しさん
10/10/02 16:13:02
>Option Strict Onをやったら何箇所か~~~が出ました
それは同様のバグがある可能性が極めて高い場所だから修正することをお勧めする

100:デフォルトの名無しさん
10/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

101:デフォルトの名無しさん
10/10/02 16:32:36
>>98
誰の言うことが正しいのかの判断は君に任せるが、
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

102:デフォルトの名無しさん
10/10/02 16:41:48
それ正規表現間違ってます
何も考えたくないならDecimalの方がいいよ
浮動小数点はちゃんと理解して使わないと結構普通に予期しない動作するよ

103:デフォルトの名無しさん
10/10/02 16:46:49
WindowsフォームにWebBrowserがあります。
WebBrowser上のActiveXのコントロール(テキストボックスなど)にアクセス
できるでしょうか?



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

105:デフォルトの名無しさん
10/10/02 17:08:02
>>101
Dim m As Match = regex.Match(value.ToString("G"))

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

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

>浮動小数点はちゃんと理解して使わないと
むしろちゃんと理解してない奴がやたらとDecimalなぞを使いたがる印象

106:デフォルトの名無しさん
10/10/02 17:24:08
[.]+はおかしい
?の間違い?

107:デフォルトの名無しさん
10/10/02 17:25:59
>>106
よくそんな知識で人にケチ付けられるな....

108:デフォルトの名無しさん
10/10/02 17:32:52
>>106
確かにその量指定子は不適切だったありがと

109:デフォルトの名無しさん
10/10/02 18:28:24
VBまともなの買うなら。
URLリンク(profiles.yahoo.co.jp)

110:デフォルトの名無しさん
10/10/02 18:43:23
GUIアプリを適当に作るとソースコードとGUI部品が密着してしまって再利用しにくくなりますよね。
特にマルチスレッドアプリを作ってると、自分の知識が足りない事もあって、改良しようとすると全面作り直しなど泥沼にはまってきます。
こういうのを解決する手法があると思いますが、教えてもらえますか。

111:デフォルトの名無しさん
10/10/02 18:47:32
他の言語やってみたら見方が変わるよ
VBできるならC#→Java→他がおすすめ

112:デフォルトの名無しさん
10/10/02 19:25:03
とにかくクラスを作るようにしてたらそのうち慣れるよ

113:デフォルトの名無しさん
10/10/02 19:33:12
やっぱ仕事単位でクラスにまとめるんですね。以前やってみたけどそれほど旨くいかなかったのはスキル不足のせいかあ。
オッサンなので他言語に移るのはつらいけど、C#はやってみる価値があるのかな・・・。

114:デフォルトの名無しさん
10/10/02 19:46:12
VBできるならC#は簡単
C#やればVBで「やるべきでないこと」がわかってくる

115:88
10/10/02 21:10:29
>>88です。

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

まずは>>89の方法でうまく行きました。
次は>>90の方法で試してみたいと思います。


116:デフォルトの名無しさん
10/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的なことがかいてあるのでしょうか?

117:デフォルトの名無しさん
10/10/02 23:27:50
.NET2.0上で.NET1.1アセンブリの扱いのポリシーは「取り敢えず2.0で動かしてみる」だったはず
.NET4だとapp.configに記述されてない限り起動させないだったはずだけど

.NET1.0/1.1の記述だけどこの辺参考に
URLリンク(www.atmarkit.co.jp)

118:デフォルトの名無しさん
10/10/03 09:39:17
.NET4でポリシーが変わったのは、100%の互換性は保証できないから必ずテストしろという意味
1.1→2.0時の問題を踏まえての変更だからその意味を考えて慎重に
ほかの会社なら100%の互換性と言い切っちゃうところだけどそこはMSらしいというか

119:デフォルトの名無しさん
10/10/03 10:31:09
.NET4でコードセキュリティモデルから透過セキュリティモデルに変わったのがでかい。


120:デフォルトの名無しさん
10/10/03 16:41:55
CASがなくなったわけじゃないよ。軒並みObsoleteになっただけ。
どっかの公式ドキュメントで読んだけど、.NET Frameworkのコンポーネントの
インストールパスが変わったら問題が出るアプリケーションが存在する可能性は0ではないとかそんなレベルの話らしい

121:デフォルトの名無しさん
10/10/04 11:35:15
質問させてください。

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

何かよい対処がわかる方がおられましたら、アドバイスいただけると助かります。

122:デフォルトの名無しさん
10/10/04 11:40:47
>>121
WPFで作れば拡大縮小が自由自在なはず
知らないけど

123:デフォルトの名無しさん
10/10/04 11:45:15
>>122
つまりFormだと絶望的だと・・・?

124:デフォルトの名無しさん
10/10/04 12:02:58
折角でかい画面使ってるのにそれに合わせて文字が大きくなるとか超がっかり
そんなのOSのDPI設定でするもんだろ

125:デフォルトの名無しさん
10/10/04 12:26:06
解像度取得して
それにあわせて描画すればいいだけちゃうんけ?


126:デフォルトの名無しさん
10/10/04 12:28:38
常に最大で使うっていうのが
そのPCでは、そのアプリしか動かさないってことなら

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



127:121
10/10/04 12:51:19
>>124
そんなもんですか
どんな画面でも表示できるのを目指しているんですが

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

>>126
やっぱりそれがいいんですかね。
ワイド画面で設定しているから4:3の画面で少しおかしくなるのは目を瞑りますかね

128:デフォルトの名無しさん
10/10/04 13:01:09
Direct3Dで作るのもいいかも
解像度なんて関係なく作れるし

129:デフォルトの名無しさん
10/10/04 13:14:35
>>128
WPFとかDirect3Dとか根本的に修正しないと無理っぽいみたいですね

130:デフォルトの名無しさん
10/10/04 13:49:58
>>127
>>いろんな設定に対して行うのは結構作業工数がバカみたいになるので・・・

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

anchorで文字のサイズ以外がうまく言ってるなら
文字サイズだけ自力で変えてやれないの?、それなら工数いらなくない?


131:デフォルトの名無しさん
10/10/04 14:05:37
>>130
レスありがとうございます。
元が800x480でアプリ開発してて、それを最大化等で拡大したときに文字を含めた全てを均等に大きくしたいのです。
anchorで大きくできると言っても均等ではなく、とりあえず端からの距離を保ったまま大きくなってる状態で、やりたいこととは違うのです。

それにどんな解像度のマシンで使われるか不明なので、どのくらいのフォントサイズで、どの位置~というのが明確に決めづらいです。

132:デフォルトの名無しさん
10/10/04 14:14:17
まあ比率で計算するしかないわな
Direct3Dも座標は絶対値じゃなくて比率で指定するし


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

134:デフォルトの名無しさん
10/10/04 14:18:28
>>132
まぁ自動計算はしてくれないと・・・
.Netと言えどもなんでもあるわけじゃないんですねw

135:デフォルトの名無しさん
10/10/04 14:22:52
macなら自由に拡大できるのにね

136:デフォルトの名無しさん
10/10/04 14:24:23
>>133
アンカーって余白の設定ですよね?
相対的に大きくしたいので、余白が絶対的に設定されるだけなので今回やりたいこととは違うんですよ。

要はフォームサイズが大きくなった分、全てのコントロールを相対的に大きくしたいのです。

137:デフォルトの名無しさん
10/10/04 14:27:07
エロいな

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

139:デフォルトの名無しさん
10/10/04 14:32:53
>>136
だから両アンカーにすればいいと言ってるのだが…
アンカー勘違いしてないか?
余白はpaddingだぞ?

140:デフォルトの名無しさん
10/10/04 14:42:12
それとラベルのautosizeがtrueだったってオチじゃないよね?

141:デフォルトの名無しさん
10/10/04 14:47:33
>>139
いやいやいや、ちゃんと読めよ。どう見てもそれじゃ不足でしょうに
クライアント領域の幅をW、コントロールの幅をwとすると、136がやりたいのは W/w=const で、139だと W-w=const

で、答えはテーブルレイアウト。フォントは知らん

142:デフォルトの名無しさん
10/10/04 14:51:16
>>139
両アンカーにしても画像部分しか拡大されないんですが・・・もちろんラベルはautosizeをfalseにしてます

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

>>141
テーブルレイアウト・・・ググってみます!

143:デフォルトの名無しさん
10/10/04 14:51:47
>>141
アホか
両アンカーと何度も書いとろうが

144:デフォルトの名無しさん
10/10/04 14:58:31
>>142
だからラベルサイズは自動可変するから後はsizechangegedイベントで
フォントを変更すればいいという話

もちろんコントロールによってはアンカーだけではうまくサイズ変更
されないものもあるけど(CheckBoxとかRadioButtonとか)

145:デフォルトの名無しさん
10/10/04 14:59:39
SizeChangedね

146:デフォルトの名無しさん
10/10/04 15:00:19
anchorすげー
初めて知った

147:デフォルトの名無しさん
10/10/04 15:11:09
一枚絵を画面サイズにストレッチしたみたいな表示にしたいってことだよね

画面全部まとめて1枚絵にしちゃえば?w


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

149:デフォルトの名無しさん
10/10/04 15:13:40
>>147
textboxどーすんの?って話になるw

150:デフォルトの名無しさん
10/10/04 15:14:16
前後逆になった

>>144
それならいけるかもしれませんね。
ちょっと試してみます

151:デフォルトの名無しさん
10/10/04 15:14:56
>>149
今回に関してもラベルとグラフコントロールとピクチャボックスくらいなんで大丈夫ですw

152:デフォルトの名無しさん
10/10/04 15:18:09
>>149
それも絵として描画するんだよ、縦横比も自由自在だぜ

153:デフォルトの名無しさん
10/10/04 15:19:37
>>152
あ、すまん、textboxは、たしかに面倒だw

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

2chに来る割合をもう少し減らして、開発に時間割けば?

155:デフォルトの名無しさん
10/10/04 18:03:40
154は忘れて

156:デフォルトの名無しさん
10/10/04 18:03:56
また訳分からん因縁つける奴が
少なくとも言われたことは試してると思うが?

157:デフォルトの名無しさん
10/10/04 18:04:46
156も忘れて(^^;

158:デフォルトの名無しさん
10/10/04 20:15:26
既に誰か指摘してると思うけど、そもそもウィンドウの全ての要素の大きさを
クライアント領域のサイズに比例させる必然性が何もないし、苦労してやっても
気持ちの悪いUIになるだけだよなあ。

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

VS2010のエディタ部分なんかデバッグ時微妙にフォントサイズが変わるけど、
あれってちょっと気持ち悪いでしょ?

159:デフォルトの名無しさん
10/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("おわったで")

160:159
10/10/04 21:45:33
自己解決。ウィンドウが更新されてなかっただけでした
別プロジェクトでコードを作り直しても同じ結果になり悩んでたんですが
ウィンドウを閉じて再度表示させると治りました

エクスプローラのwindowが更新されないとか、
今まで経験したことがなかったのでちょっと驚き
ウィンドウを再表示後は、上の減少は再現しなくなりました・・

161:デフォルトの名無しさん
10/10/05 14:10:02
URLリンク(ideone.com)

のようなコードで
1秒間にどれだけ処理(ループ)できるか書いているのですが
妥当ですかね?

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

163:デフォルトの名無しさん
10/10/05 15:26:36
>>162
そのものズバリ Stopwatch クラスですかありがとうございます。

何を計りたいかですが…
1~15桁の文字列(パス)の生成に掛かる時間を、
調べたいと思っています。

164:デフォルトの名無しさん
10/10/05 21:26:04
一文字づつ文字列を連結するのは典型的な非効率糞コード
StringBuilderを使う

165:デフォルトの名無しさん
10/10/05 23:58:01
HttpWebRequestとHttpWebResponseで末尾が.のURLリクエストしてるのに
実際は末尾の.がないURLに代わってリクエストされるんだけど
対処法おしえてください

166:デフォルトの名無しさん
10/10/06 00:40:09
URLリンク(connect.microsoft.com)
現状、TcpClientとかSocketとか使うしかないんじゃないかな

167:デフォルトの名無しさん
10/10/06 22:22:47
CrLf区切りのテキストファイルから
何行目と指定してテキストを取り出したり、
同じように指定してその部分を置き換えたりしたいのですが、
できるとしたらどんな方法で出来るでしょうか?

168:デフォルトの名無しさん
10/10/06 22:32:28
簡単なのはFile.ReadAllLines
ファイルの行を置き換えたかったら全部消して書き直せばいい

169:デフォルトの名無しさん
10/10/06 23:03:49
レスありがとうございます。
行数が多くて一行あたりの処理が簡単なため一気に何千行の処理を行うことになるのですが
そうなると1行ごとに全部を書き換えるというのは避けた方が良いですよね?
変数に読み込んで処理すれば良いのですが、メモリの占有が大きくなるのと
プログラムが予期しない終了の仕方をした時にせっかく途中まで処理したものが
どこにも記録が残っていないという状態になってしまうので、
ファイルをピンポイントで修正していきたいと思ったのですがそういうアクセスはあまり一般的ではないでしょうか?

170:デフォルトの名無しさん
10/10/06 23:12:24
>行数が多くて一行あたりの処理が簡単なため一気に何千行の処理を行うことになるのですが
これ、他人が読んで意味が通じると思う?

171:デフォルトの名無しさん
10/10/06 23:26:35
高々何千行程度のテキスト読み込んでおくのにどんぐらいのメモリ食うと思ってんだ?

172:デフォルトの名無しさん
10/10/07 04:43:55
9Gくらい?

173:デフォルトの名無しさん
10/10/07 04:49:23
1 行につき 1 MB 使えば 1000 行で 1 GB だから、だいたいそのくらい・・・
ってばかあっー!


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

一気に何千行も書きかえるなら、一行ずつランダムアクセスするとかえって遅くなるかもよ。


175:デフォルトの名無しさん
10/10/07 15:16:12
いったん別の一時ファイルに書き出せばいいんじゃね
StreamReaderで一行ずつ読みながらStreamWriterで平行して書き出せばいい

176:デフォルトの名無しさん
10/10/07 15:53:02
本当に困っています。
OKWaveのほうにも質問していますが、TransparencyKeyでフォーム中身を透過させて、そのフォームを最大化、そしてまた元のサイズに戻すなど、
一定のサイズ変更操作をすると、フォームのタイトルバーなどがつかめなくなってしまいます。
サイズ変更もできなくなります。
本当に困っています。何か回避方法などをご存じの方がいましたら教えてください。お願いします。
URLリンク(okwave.jp)

(マルチみたいで申し訳ないです)

177:デフォルトの名無しさん
10/10/07 17:59:50
とりあえずそのソースうpして

178:デフォルトの名無しさん
10/10/07 18:06:11
みたいってマルチそのものでしょw

179:176
10/10/07 18:24:20
>>177
ソースも何も、フォームデザイナで、BackColoerとTransparencyKeyを同一にしただけです。
他の設定は一切いじらずとも、百発百中でなります、
VS2008でも、VB2010 Expressでも。

180:176
10/10/07 19:03:33
URLリンク(www.youtube.com)
こんな感じです。
最大化したっきり、上にあるフォームのタイトルバーがつかめない・・・。

181:デフォルトの名無しさん
10/10/07 20:04:57
うちは問題ないなー

182:デフォルトの名無しさん
10/10/07 20:19:18
自分で使うわけじゃないので、環境依存ならいいんですけどね。。。
ちなみにWinXPじゃ問題は起きません。Vista以降で、aero有効時にのみ起きるようです。

183:デフォルトの名無しさん
10/10/07 20:21:50
うちはVistaSP2だけど問題ないなー

184:デフォルトの名無しさん
10/10/07 20:58:57
ディスプレイドライバの相性とか

185:デフォルトの名無しさん
10/10/07 21:12:23
自分のフォームだけaeroオフで起動とかできないですか?
aeroがなければ上手くいくのになぁ。。。

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


187:デフォルトの名無しさん
10/10/07 21:28:25
>>186
そのチェック外しても、なんにも変わりませんでした。。。

188:デフォルトの名無しさん
10/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;

}


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

190:デフォルトの名無しさん
10/10/07 21:57:55
>>189
タイトルバーも境界もどっちも掴めません。。。

>>188
つまり画像を挟むってことですかね?
いまdsiから書き込んでるので、明日VB的文法に翻訳してみたいとおもいます。

191:デフォルトの名無しさん
10/10/07 22:58:27
得意気にC#でw

192:デフォルトの名無しさん
10/10/07 23:30:45
C#にコンプレックス持ってんのかw
仕事はVB.NETで趣味アプリはC#でやってて
今、家だからPCにはC#しか入ってないんだよw

193:デフォルトの名無しさん
10/10/08 05:47:58
バカ?
ここは何スレだっつの

194:デフォルトの名無しさん
10/10/08 11:59:10
じゃあ、わざわざC#スレでレスしろってかw
めんどいだろJK


195:デフォルトの名無しさん
10/10/08 13:45:25
質問です。
VB2010でVBの勉強をしているのですが、
ボタンを押すことによってテキストボックスに入力されている文字をテキストファイルに出力したいのですが
以下のコードではうまくいきません

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

Writer.Close()

デバッグしてもエラーは出ないし、ボタンを押しても何も起きない状況です
どなたかご教示お願いします


196:デフォルトの名無しさん
10/10/08 14:02:16
2010は知らないけど
URLリンク(dobon.net)
じゃだめなの?

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

198:デフォルトの名無しさん
10/10/08 14:29:13
>>197
>>189じゃダメ?

199:デフォルトの名無しさん
10/10/08 14:41:21
>>198
>>189をやると、正常になりますが、最大化したときだけじゃなく、
普通にサイズ変更しただけでもなる場合があるので、いくらかは問題は軽減しますが、全解決とはなりません・・・。

200:デフォルトの名無しさん
10/10/08 14:43:48
resizeendイベントでもやればいいんじゃないの?

201:デフォルトの名無しさん
10/10/08 14:44:46
なるほど。。。
瞬間にチカチカするのは代償と考えてあきらめるしかないですかね。

202:デフォルトの名無しさん
10/10/08 14:46:51
フォームが透明になるだけでもありがたく思わないと

203:デフォルトの名無しさん
10/10/08 14:49:13
でもまぁ、そうですけど、何も問題がない人との違いは何なのかと・・・。
まぁ、設定で、おかしくなる人ようの設定かなんかをもうけてもいいですし、その辺は臨機応変にやろうと思います。

204:デフォルトの名無しさん
10/10/08 14:50:17
問題ないって書いたのは全部俺だけど
全部うそだよw

205:デフォルトの名無しさん
10/10/08 14:50:35
>>195
ファイル名にコロンや垂直タブって無理じゃね?

206:デフォルトの名無しさん
10/10/08 14:51:31
>>196さん
これでできました。ありがとうございました!

207:デフォルトの名無しさん
10/10/08 14:57:08
>>204も嘘かもしれないので、信じないとしても、
何とか例の現象は解決(?)いたしました。
リサイズができなくなったときのために一応つけておいたステータスバーも取り払うことができ、
当初意図していたとおりのソフトができそうです。
皆様、アドバイス等ありがとうございました。

208:デフォルトの名無しさん
10/10/09 23:22:31
For i As Integer = 1 To 100
Next

の中でiを1から100の間で戻したり進めたりするのは何も問題ないでしょうか?

209:デフォルトの名無しさん
10/10/09 23:25:12
気になるんだったら別の書き方すればいいのに

210:デフォルトの名無しさん
10/10/09 23:49:26
問題ないけどそういう使いかたするならあえてfor nextを
使わないのがいいと思う

211:デフォルトの名無しさん
10/10/10 22:41:57
>>209-210
トンクス

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

なんか、こう、イメージの掴める解説ってないのかね

213:デフォルトの名無しさん
10/10/14 12:34:30
マルチ乙

214:デフォルトの名無しさん
10/10/14 13:07:36
異常系世界へgotoするってこと
その際のスペースカプセルが例外

215:デフォルトの名無しさん
10/10/14 15:43:35
linux上でunixを使いCUIの環境で、日の丸の国旗の画像を作るプログラミング、教えてください

216:デフォルトの名無しさん
10/10/14 16:20:31
スレチ

217:デフォルトの名無しさん
10/10/14 22:36:51
URLリンク(www.mediafire.com)

↑こんな感じでどう?
即席で作ってみたけど

218:デフォルトの名無しさん
10/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

219:デフォルトの名無しさん
10/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

220:デフォルトの名無しさん
10/10/17 00:05:45
あげとく

221:デフォルトの名無しさん
10/10/20 16:20:40
じゃ、俺は下げとく。

222:デフォルトの名無しさん
10/10/21 01:16:55
C#だと拡張メソッドでenumを拡張できるけど、VBはできるん?

223:デフォルトの名無しさん
10/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でも出来るはず、やってみて。

224:デフォルトの名無しさん
10/10/21 23:34:28
>>223
なるほど、試してみる

225:デフォルトの名無しさん
10/10/26 20:28:20
DLL改ざん出来ないように厳密名付けたんだけど、
この場合バージョン管理ももれなく付いてくるの?
アセンブリバージョン上げたら呼び出し側でエラーが出るんだけど…
対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?

226:デフォルトの名無しさん
10/10/26 21:57:25
基本的には厳密名つける=バージョン管理を行う。

>対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?
もしくはconfigファイルでバージョンリダイレクト。
もしくは全ビルド。


227:デフォルトの名無しさん
10/10/26 21:58:25
>DLL改ざん出来ないように厳密名付けたんだけど、
実はあんまり意味ないよね。


228:デフォルトの名無しさん
10/10/27 00:18:19
>もしくはconfigファイルでバージョンリダイレクト。
これは"呼び出し側exe.config"にバージョンポリシーを記述して配置するイメージですよね?

>実はあんまり意味ないよね。
えw

229:デフォルトの名無しさん
10/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

230:デフォルトの名無しさん
10/10/27 18:25:30
field-A(X,0)の行でどうもエラーが出るようです。

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

上記2点、わかる方いらっしゃいますでしょうか?
宜しくお願いします。

231:デフォルトの名無しさん
10/10/27 19:05:03
>>230
>field-A(X,0)の行でどうもエラーが出るようです。
field-Aを使用する前(Do Loopの前)にあらかじめ2次元配列を作成する
field-A = New String(2, 1) {}

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

>変数Xのuntil内での使い方がおかしいorスコープがおかしい
どうおかしいのか分からない

232:デフォルトの名無しさん
10/10/27 19:10:21
>>231
オブジェクト参照がオブジェクト インスタンスに設定されていません。

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

そこまでしか情報がわかりませんでした。
Nothingで解決かと思ったら解決せず。

233:デフォルトの名無しさん
10/10/27 20:33:20
配列っていうのは事前にメモリを確保してから使うんだよ?
確保するコードを追加しよう。

だけど、行数わかる?ファイル読み込まないと分からないよな?
つまりこの処理に配列は合わない。
随時メモリを拡張してくれるListの方が適切

234:デフォルトの名無しさん
10/10/27 21:14:07
太古の時代では一行目にデータ数書いたりしてたな

235:デフォルトの名無しさん
10/10/27 21:22:19
>>実はあんまり意味ないよね。
>えw
あんまり役に立つ場面てないよね、に言いかえよう。


236:デフォルトの名無しさん
10/10/27 21:43:46
>>233
ありがとうございます!
配列の最大数を宣言しないとだめなんですね。

Dim field-A(10,2) As String

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

全て解決です。皆さんありがとうございました。

237:デフォルトの名無しさん
10/10/28 01:54:46
>>233-234
配列が向かないのはまあ同意するが
たまには ReDim Preserve の事も...いや、思い出さなくてもいいか

238:デフォルトの名無しさん
10/10/28 08:22:50
>>237
msdnによると
URLリンク(msdn.microsoft.com)(VS.80).aspx
>Preserve を使った初期化。Preserve 修飾子を指定した場合、Visual Basic では、
>既存の配列から新しい配列に要素がコピーされます。
とあるから、結局はコピー、つまり遅いんでしょ?


239:デフォルトの名無しさん
10/10/28 10:38:43
一要素ずつ拡張してたら糞遅いわな
List(Of T)は容量があふれるたびに内部の配列のサイズが2倍になる
同じことを自分でやってもいいけど時間の無駄

240:デフォルトの名無しさん
10/10/28 12:49:22
拡張と見せかけた再割り当てってのが嫌なんだよ。
VB6では桁違いに速い。

241:デフォルトの名無しさん
10/10/28 19:46:52
いや再割り当てはどっちみち必要だろ
VB6は内部でListみたいなことをやってるだけ

242:デフォルトの名無しさん
10/10/28 20:48:49
そうなの?
実はその辺自信無くて試したんだけど、10倍ぐらい違ったからそうだろって…


243:デフォルトの名無しさん
10/10/28 20:52:08
>>239-240
なんか物凄く馬鹿っぽいご意見ですいこと....

244:デフォルトの名無しさん
10/10/28 21:09:43
>>239は間違ってないよ
List(Of T)は再割り当て時には現在の倍の容量を確保して新しい領域に現在の要素をすべてコピーする
要素が追加されるたびに再割り当てというような馬鹿なことはしない

245:デフォルトの名無しさん
10/10/28 22:17:26
一般的なListの伝統ですな

246:242
10/10/28 23:27:06
もう一度やってみたら、
確かに要素数の増加に伴って拡張に必要な時間が増えますね・・・

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

コード間違えたかなぁ・・・

247:デフォルトの名無しさん
10/10/28 23:45:54
.NETでは確実に額面通りの動作をするから不自然なのはVBAの方だろう
ループの中でRedim Preserveしたりするバカが多いから変な最適化してるんじゃないの

248:デフォルトの名無しさん
10/10/30 00:48:22
たまたま空きが後ろにあればそのまま拡張できる実装になってるんじゃない?
.NETの場合はメモリ管理上確実に再確保とコピーが必要。


249:デフォルトの名無しさん
10/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バイトのバイト列とかにしないとダメなのでしょうか?

250:デフォルトの名無しさん
10/10/31 01:38:32
>>249
III=BBB

251:デフォルトの名無しさん
10/10/31 01:46:55
>>250
それは何度も試しててムリぽ…と思ってもう一度やってみたら、できました…

ありがとうございました

何でできないって思ったんだろ?
もう寝ます…

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

253:デフォルトの名無しさん
10/10/31 10:49:33
>>249
>10進数に変換し
人間が見えるように出力するときにやるもんだろ

>BBBに「10」と入っている時に
まずここは何進数で「10」のつもりなんだ?
BBBに値を代入したコードはどうなってるんだ

254:デフォルトの名無しさん
10/10/31 14:57:34
>>251で解決したって言ってるんだから
単にバイト変数の中身を整数変数に代入したかっただけの話だろ?



255:デフォルトの名無しさん
10/10/31 20:24:40
どうして、VB.NET ってあまり流行らないんですか?
どの案件みても、C++とかJavaとかC#とかPHPとか

256:デフォルトの名無しさん
10/10/31 20:28:42
C#でいいならVBをわざわざ選ぶ意味はないよ
どっちかというとVB6上がりでC触れないとかネガティブな理由で使う言語だからね

257:デフォルトの名無しさん
10/10/31 21:36:47
VB.netも楽しいけど、C#の方が強力だし、VBの文法って汚いし…
やたら融通の効く所はいいと思うんだけど。

258:デフォルトの名無しさん
10/10/31 22:45:44
>>255
Microsoft的には非IT系のGeekなプロフェッショナル向けの言語。
要は会計士とか医師でプログラミングもしちゃうぜ的な人向け。

259:デフォルトの名無しさん
10/10/31 22:52:28
いつの時代のVBのコンセプトだよそれ。

260:デフォルトの名無しさん
10/10/31 22:57:06
システム部門が独立してできたようなところだとVBが主戦力多いよ
往々に.net移行が遅れてたりする

261:デフォルトの名無しさん
10/10/31 23:08:41
非情報系の人にはC系は難しいからVBっていうのはもう古いよ。
実際JavaやC#ならVBと変わらん。MSの囲い込みイメージ戦略に騙されてるだけ。

262:デフォルトの名無しさん
10/11/03 17:01:16
ASP.NETを使うことになったのですが、おすすめの本などありましたら教えてください

263:デフォルトの名無しさん
10/11/04 00:28:54
>>262
スレリンク(tech板:137番)

264:デフォルトの名無しさん
10/11/04 03:23:01
マルチごめんなさい。
急にプログラマーに仕事が決まり、ASP.NETが必要になったのですが、
適当なスレがなかったようなのでマルチになってしまいました。
謝罪をさせていただいた上でまた質問させてください。
みなさんはASP.NETの勉強はどうしてるんですか?
おしえてください。使ってない人もいるかもしれませんが・・

265:デフォルトの名無しさん
10/11/04 11:05:31
ASP.NETなんて勉強しなくても使えるからなぁ。

266:デフォルトの名無しさん
10/11/04 11:06:54
RequestオブジェクトとResponseオブジェクトがあれば
なんでもできるし。

267:デフォルトの名無しさん
10/11/04 13:30:28
プログラムできない奴はプログラマとしての仕事をするな
時間と金の無駄だ

268:デフォルトの名無しさん
10/11/04 13:56:28
誰にでもできる簡単な仕事です。

269:デフォルトの名無しさん
10/11/04 16:22:03
文系理系関係ありません
ただ学歴高い方が発注元に単金を高く請求できるので

270:デフォルトの名無しさん
10/11/04 16:48:57
高卒でプログラマやってます

271:デフォルトの名無しさん
10/11/04 17:20:45
その場合は資格をいっぱい取ればおk

272:デフォルトの名無しさん
10/11/04 18:17:44
オラクルマスターを取りなさい

273:デフォルトの名無しさん
10/11/04 18:27:34
テクデとテクネなら持ってます。

274:デフォルトの名無しさん
10/11/04 20:51:45
知恵袋でも質問したけど回答がつかなのでここでも聞かせてください


自分のサイトを読み込んでリンクさせるてリンクをクリックすると規定のブラウザで開く方法ってありますか?
要はリファラを残したい。。。

275:デフォルトの名無しさん
10/11/04 21:00:44
日本語でおk

276:デフォルトの名無しさん
10/11/04 21:04:49
リファラを残す方法はありますか?

277:デフォルトの名無しさん
10/11/04 21:10:54
リファラが何かわかっているのかい?
HTTPヘッダだよ
それがわかればどうとでもできることがわかるよ

278:デフォルトの名無しさん
10/11/04 21:32:25
リンク元のページのことじゃないの??





279:デフォルトの名無しさん
10/11/05 11:19:49
環境はVB.NET 2008 Express Edition + Windows XPです。
Visual Studioエディタ内で子ウインドウをキーボードで切り替えるとき、
Ctrl+Tabキーで一覧が表示されますが、ここで
Enterキーまたはマウスでクリックしなくても切り替えられますか?

280:デフォルトの名無しさん
10/11/05 19:45:34
スペースキーでもOK(たぶん)
念力でもOK(エスパーなら)
っていうか、何が聞きたいんだ

281:デフォルトの名無しさん
10/11/05 20:50:48
質問です。
VisualStudio2003proとSqlserver2005developerを持っているのですが、
この組み合わせではADO.NET2.0の機能を使うことはできませんか?

282:test.vb
10/11/05 21:44:14
>>274

意味わからないけど
既定のブラウザでURLを開くだけなら
Process.Start("URLリンク(example.com)")

283:デフォルトの名無しさん
10/11/05 23:39:21
私はJAVAしかやったことなくて今度VBもやらないといけないことになったのですが、
今までは、オブジェクトというのは変数とメソッドが一緒になった固まりだと思ってました。
しかし、VBのサンプルコードを読むと、

Dim fm As Object

fm = 2.73

という構文が出てきたんですが、どうやらこれはVBでは間違っていないようなんです
fmをオブジェクト宣言したのなら、まずはそこからインスタンスを作って、さらに
インスタンスの変数。つまりfm.hensuu =2.73 みたいな形ならわかるのですが、
いきなりオブジェクトとして数値が宣言されて、いきなり数字が代入されるなんて・・
VBではオブジェクトの意味がJAVAと違うんでしょうか・・おしえてください

284:デフォルトの名無しさん
10/11/05 23:45:07
ほんとにJavaやってんの?
それJavaでもできるよ(Java5以降)。オートボクシングという。
.NETではボクシングは実行エンジン自体に組み込まれてて、Javaのオートボクシングよりももっと柔軟。

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

286:デフォルトの名無しさん
10/11/06 00:12:25
>>283
VB(というか.net)にはobject型という型があるんだよもん

つーか入門書ぐらいけちらず買えよ
それかMSDN読むか
Javaと違ってMSDNの日本語化はわりと深い所までちゃんとされてるからいいぞ

287:デフォルトの名無しさん
10/11/06 00:13:58
Javaでもこう書ける
Object fm;
fm = 2.73;
2行目は省略形で書かれていて、省略せずに書けば次のようになる。
fm = Double.valueOf(2.73);
Double.valueOf(2.73)の処理はボクシングと呼ばれる。
.NETでもこれと同じような処理が自動的に行われている。
これでわかんないならVBと比べる以前にJavaを入門書からやり直すべき。

288:デフォルトの名無しさん
10/11/06 00:15:33
何が言いたいのかよーわからんけど、
Object型のインスタンスなんて、スレッドの同期オブジェクトが欲しいときぐらいしか作らないよw

289:デフォルトの名無しさん
10/11/06 00:31:43
普通は、intやdoubleなどの単一の値も、
全てオブジェクトとして扱うのがオブジェクト指向的には自然なんだよ
Javaは設計が古いのでそうなってないが.NETは実際に全部オブジェクトとして扱えるということ

290:デフォルトの名無しさん
10/11/06 00:36:52
javaもまともにできてたとは思えんな。

291:デフォルトの名無しさん
10/11/06 13:37:13
.net前のMSDNとかは、変な翻訳とかも混ざって非常に分かり難かったが
最近のは割とまともにローカライズされて見やすくなったよな
新しく使うクラスとかはとりあえずF1押して概要とかメンバーとか見るのが癖になってる

292:デフォルトの名無しさん
10/11/06 15:26:46
>>286
>>287
>>288
>>291
ありがご当皆さん・・勉強してみます・・・

293:デフォルトの名無しさん
10/11/07 01:58:54
・注文テーブル
注文番号(PK) 都道府県コード 市区町村コード 以下、注文日時とか商品IDとか諸々

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

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

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





294:デフォルトの名無しさん
10/11/09 00:22:51
javascriptを含むhtmlのソースをダウンロードして表示したいです。
URLリンク(dobon.net)
ここの方法でダウンロードは出来たのですが、javascriptがソースコードのままになってしまいます。
javascriptによってhtmlが生成された後のhtmlをダウンロードするにはどうすればいいでしょうか?

295:デフォルトの名無しさん
10/11/09 01:57:19
またドボン!か・・・。
いい加減、ドボンはもういいよ。

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

ドボンはアーカイブ(過去ログ)だけ残して、
後は若い奴らに譲ろうぜ?
若い奴らに新しいVBサイトを構築させていこうぜ。


296:デフォルトの名無しさん
10/11/09 07:15:46
そうは言っても若い奴らが好き好んでVBなんか使うと思うか?

297:デフォルトの名無しさん
10/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

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

何かよい方法はないでしょうか??


298:デフォルトの名無しさん
10/11/09 10:30:53
MonitorFromPointの引数は2つになってるね。
URLリンク(msdn.microsoft.com)


299:デフォルトの名無しさん
10/11/09 11:40:35
>>294
そんなの無理じゃね?

300:デフォルトの名無しさん
10/11/09 11:54:15
>>294
javascriptのdocument.writeなどで書き出すhtmlを展開したいと言ってるの?
WebBrowserコントロールにいったん読み込んで、
それのdomから取得すればできるかもしれないな。

301:デフォルトの名無しさん
10/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;



302:301
10/11/11 10:31:21
>>301 なぜこんな質問したかというと、
efreedom.com/Question/1-442465/InvalidOperationException-Executing-SqlCommand-Transaction
にスレッド処理でエラーが発生したんだよって報告があったので。


303:デフォルトの名無しさん
10/11/11 11:50:46
同じです。

304:デフォルトの名無しさん
10/11/13 09:22:42
しょぼいPCで開発してる奴は死ね

305:デフォルトの名無しさん
10/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を拡張するにはどうしたら良いのでしょうか?


306:デフォルトの名無しさん
10/11/13 22:46:29
BorderStyleをNoneにする

307:デフォルトの名無しさん
10/11/13 23:38:53
NoneにしてPaddingを全部1とかにするのがやっぱり簡単ですかね

308:デフォルトの名無しさん
10/11/13 23:44:18
「本来のBorderStyleを拡張」ってどういう意味なんだ。

小学生じゃないんだから相手にエスパー能力を期待しているとしか思えないような
質問するなよと。

309:デフォルトの名無しさん
10/11/14 00:13:24
>>305
ControlPaint.DrawBorder/DrawBorder3D

310:デフォルトの名無しさん
10/11/15 01:35:26
Part20にあった質問なんだけど、この答えを知りたいです。

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

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

よろしくお願いします。

311:デフォルトの名無しさん
10/11/15 13:19:24
ハゲ以外で。

312:デフォルトの名無しさん
10/11/15 22:51:39
>入力のキャンセルや、レコード移動のキャンセル

意味が分からん


313:デフォルトの名無しさん
10/11/15 23:13:58
Gridのセル編集を開始したら保存ボタンを押すまで他の行の編集が出来ないようにしたいって話なんだけど…

314:デフォルトの名無しさん
10/11/16 00:25:02
自己解決しました
URLリンク(www.eggheadcafe.com)

315:デフォルトの名無しさん
10/11/17 02:34:48
ユーザコントロールをコンボボックス風にドロップダウンで表示させたいんですが、やり方が全く分かりません。
どなたか参考になりそうな日本語サイトをご存じないですか?

316:デフォルトの名無しさん
10/11/17 09:06:22
そういうのはWPFだろ
WPFで作ったコンボをVBに読み込むとか。
正攻法は大変だと思う

317:デフォルトの名無しさん
10/11/17 09:07:20
もうどうでもいいからリストボックスでも表示してやれよ


318:デフォルトの名無しさん
10/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晩悩んで試行して解決できず、エロい人知識を貸してください


319:デフォルトの名無しさん
10/11/17 22:00:14
そのDeclare宣言は変えられんの?
ByRef As TUSBAI1616Config
って定義するだけなんだけど

320:デフォルトの名無しさん
10/11/17 22:23:02
>>319
Declareの宣言は勝手に変えるな馬鹿と言われて来たせいもあってか、その発想には至りませんでした。
明日試してみます。

オンラインマニュアル無いと思ってたらありましたので一応
URLリンク(accesio.com)


※サンプルプログラム(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向けに>>318のように私が構造体を定義しなおしました。

321:デフォルトの名無しさん
10/11/17 22:49:57
VB6サンプルじゃなぁ…

322:デフォルトの名無しさん
10/11/19 01:09:46
テーブルの数だけテーブルアダプタが作成されてコーディングが非常に面倒なんですけど、
テーブルアダプタの共通化についてサンプルがあるWebサイトかなんかありますか?

323:デフォルトの名無しさん
10/11/19 20:41:50
俺はデザイナーからコードを引っこ抜いて、簡易的な汎用テーブルアダプタを作った
どうせUpdateメソッドしか使わないからねぇ

324:デフォルトの名無しさん
10/11/21 21:31:09
VB.netでコマンドライン引数を扱いたいのですが
取得する方法がいまいち分りません
どのようにすれば良いのでしょうか?

325:デフォルトの名無しさん
10/11/21 21:35:41
Environment.GetCommandLineArgsとか、My.Application.Startupイベントの引数とか

326:デフォルトの名無しさん
10/11/21 21:48:11
自己解決しました
以下の方法で取得できました
お騒がせしました

Dim returnValue As String()

returnValue = Environment.GetCommandLineArgs

327:デフォルトの名無しさん
10/11/21 21:50:47
skshggrksg

起動時のコマンドライン引数を取得する
URLリンク(dobon.net)

@IT:.NET TIPS コマンドライン引数を取得するには?
URLリンク(www.atmarkit.co.jp)

【VB.NET】外部から引数を受け取るプログラムを作成する
URLリンク(blog.livedoor.jp)

コマンドライン引数の取得
URLリンク(go2vb.cocolog-nifty.com)

.NET 入門 VB.NET - コマンドライン引数を扱うには... (2)
URLリンク(itnandemolab.blog70.fc2.com)

328:デフォルトの名無しさん
10/11/21 23:22:35
もう解決してるのに嬉しそうに貼らなくていいです

329:デフォルトの名無しさん
10/11/21 23:38:35
なにそれひどい。

330:デフォルトの名無しさん
10/11/22 09:43:01
vb.net コマンドライン
でぐぐれば出てくるのにマジでぐぐる前にここで
質問してるのか
いい加減にしとけよ

331:デフォルトの名無しさん
10/11/22 12:43:48
加減は見たつもり

332:デフォルトの名無しさん
10/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


333:デフォルトの名無しさん
10/11/23 18:00:05
ins.ShowDialog(Me)

334:デフォルトの名無しさん
10/11/23 18:00:25
ハライテw

335:デフォルトの名無しさん
10/11/23 18:24:41
RitchTextboxの内容を印刷したいんだけど
VB2010でもまだそのまま印刷ってのは実装されてないんだっけ?
サンプル探してもシルバーライトの物しか出てこないから
なにか良いサンプル有ったら教えて欲しい

336:デフォルトの名無しさん
10/11/23 18:33:20
開発環境のバージョンとは何の関係もない話だと思うが
WinFormの話ならEM_FORMATRANGEとか使えば

337:デフォルトの名無しさん
10/11/23 18:45:54
>>333
ありがとうございます!!解決しました!!

338:デフォルトの名無しさん
10/11/23 19:11:24
>>336
ありがとう
調べてみます

339:デフォルトの名無しさん
10/11/23 19:35:12
>>335
Visual Basic .NET または Visual Basic 2005 を使用して RichTextBox コントロールの内容を印刷する方法
URLリンク(support.microsoft.com)

340:デフォルトの名無しさん
10/11/23 20:10:27
>>339
ありがとう
まるまるコピペしてつかってみます

341:デフォルトの名無しさん
10/11/25 12:43:06
VB2010expressでTextboxを配列化して順に配列の文字を入れたいが
どうやってもできない。
NULL扱いされる。

誰か助けて。

342:デフォルトの名無しさん
10/11/25 13:00:22
エスパーすると、配列をNewした後、TextBoxをNewしてないから。

343:デフォルトの名無しさん
10/11/25 14:13:11
Controls.OfType(Of TextBox)().ToArray()
とかでいいよ

344:デフォルトの名無しさん
10/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

簡単に配列にできないものでしょうか?
ネットで色々見ましたが、なぜかうまくできません。
初心者だから・・・?


345:デフォルトの名無しさん
10/11/25 15:15:02
テキストボックスの名前をTextBox1, TextBox2, …と連番にしておいて
Controls("TextBox" & i).Text = R.ToString()
のようにすれば配列にしなくても同じことができる
配列にするには一つずつ配列の要素に自分で代入する必要がある
あとArrayListなんか捨ててList(Of T)使いましょう

346:デフォルトの名無しさん
10/11/25 15:22:38
どうせ R が Nothing なんだろ

347:デフォルトの名無しさん
10/11/25 15:24:04
>>345
それやるくらいなら

Dim TextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3 ...} だろ

348:デフォルトの名無しさん
10/11/25 15:28:37
どうでもいいよ
パフォーマンス的にはTextプロパティの設定に比べれば誤差だしVBでコードの良し悪し議論しても仕方ない

349:デフォルトの名無しさん
10/11/25 15:33:17
おいおい、職業プログラマで >>345 を許しちゃダメだろ
パフォーマンスの問題じゃなくてバグの出やすさ

>>345 は「"TextBox" & i)」が実在するかどうか実行時にしか評価されない最悪なコーディングだ。

350:デフォルトの名無しさん
10/11/25 15:36:17
なあに、その行が 「"TextBox" & i)」が実在するかどうか チェックするIfブロックの中に入っていれば問題ない

351:デフォルトの名無しさん
10/11/25 15:39:30
>>349
そんなこと言い出したらArrayList使うのも間違いだし4決め打ちもまずいし
ToStringの()省略も気になる

352:デフォルトの名無しさん
10/11/25 15:43:13
>>350
「チェックするIfブロック」も実行時にしか通らないだろ
この手のものは、コーディングミスってもコンパイルで引っかけるように考えてコーディングしないと


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch