07/03/05 11:19:36
前スレVB.NET質問スレ (Part19)
スレリンク(tech板)
2:デフォルトの名無しさん
07/03/05 11:23:22
ここは、質問者に説教するスレではありません。
ここは、質問者のプログラミングセンスを測るスレではありません。
ここは、質問者のプログラマ適性を診断するスレではありません。
ここは、質問者の精神病・神経症を診断するスレではありません。
3:デフォルトの名無しさん
07/03/05 11:24:50
MSDN
URLリンク(msdn2.microsoft.com)
どぼん!のVB道のトップページとTipsページ
URLリンク(dobon.net)
URLリンク(dobon.net)
Microsoftクイック スタート チュートリアル
URLリンク(ja.gotdotnet.com)
Insider.NET
URLリンク(www.atmarkit.co.jp)
宇宙仮面の C# プログラミング
URLリンク(ukamen.hp.infoseek.co.jp)
.NET のつぼ
URLリンク(park16.wakwak.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)
C#プログラミングTips
URLリンク(www.atmarkit.co.jp)
4:デフォルトの名無しさん
07/03/05 11:25:39
ここは、質問者が質問をするスレです
ここは、質問者が質問をROM者に見せるためだけのスレです
ここは、VB.NETプログラミング言語のためのスレです
ここにはVB.NETの質問以外載せてはなりません
(回答や誘導、その他質問ではないものも禁止です)
5:デフォルトの名無しさん
07/03/05 11:25:59
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.geocities.co.jp)
6:デフォルトの名無しさん
07/03/05 11:26:29
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 行でズバリ !!」シリーズ
URLリンク(www.microsoft.com)
PAPA'n VB
URLリンク(www.mitene.or.jp)
VB レスキュー花ちゃん
URLリンク(www.bcap.co.jp)
(Java覚え書き)デザインパターンあれこれ
URLリンク(www.dmz.hitachi-sk.co.jp)
algorithm
URLリンク(www.mnet.ne.jp)
ラムダ計算入門
URLリンク(www.kb.ecei.tohoku.ac.jp)
数値計算の基礎
URLリンク(www7.ocn.ne.jp)
7:デフォルトの名無しさん
07/03/05 12:48:01
テンプレ乙
質問だがKeyDuplication(キー重複)エラーの時
ある程度ピンポイントでキャッチできる奴ない?
例えば同時実行エラーならDBConcurrencyException
って感じで
8:デフォルトの名無しさん
07/03/05 13:46:21
残りのテンプレ
,===,====、
_.||___|_____||_
.. ∧_∧ /||___|^ ∧_∧
.. (・ω・`)//|| |口| |ω・` )
. ./(^(^ .//||...|| |口| |c )
..... ∧_∧/ // ||...|| |口| ||し
....... (・ω・`) //.... ||...|| |口| || 楽しく使ってね
/(^(^ // .... .||...|| |口| || 仲良く使ってね
"" :::'' |/ |/ '' " ::: ⌒ :: ⌒⌒⌒ :: "" `
:: ,, ::::: ,, ; ̄ ̄ ̄ "、 :::: " ,, , ::: " :: " ::::
9:デフォルトの名無しさん
07/03/05 19:17:10
むしろこういうスレは殺伐としているべきだと思うんだ
10:デフォルトの名無しさん
07/03/05 19:24:54
ボコボコボコボコボコボコボコボコボコボコボコボコボコボコ
コボコボコボコボコボコボコボコボコボコボコボコボコボコボコ
ボコボコボコボコ∧_∧ ∧_∧∧_∧ボコボコボコボコ
ボコボコ∧_∧´・ω・)(´・ω・`)・ω・`∧_∧ボコボコ
ホコボコ(´・ω・)∧_,∧lll ∪)∧_∧・ω・`)ボコボコ
ボコボコ∧_∧ ´・ω∧∪∧(・ω・∧_∧⊂)ボコボコ
コボコ(´・ω・)≡つ);;)ω(;;(⊂≡(・ω・`)___\ボコボコ
ボコボ(っ つ=つ(っ ⊂)⊂=⊂≡ ⊂) \ )ボコボコ
ボコボコ/∧_∧∧ ↑質問者 ∧∧_∧\ボコボコ
ボコボ( ( ´・ω)( ´・)( )` )(ω・` ) )ボコボコ
コボコ(っ つ/ )( ) \ ⊂)ボコボコ
ボコボ/ )`u-u'. バ∪ ̄∪バ`u-u' \ボコボコ 楽しく使ってね
ボコ( / ̄∪ボコボコボコボコボコボコボコ∪ ̄\ )ボコボコ 仲良く使ってね
ボコボコボコボコボコボコボコボコボコボコボコボコボコボコ
コボコボコボコボコボコボコボコボコボコボコボコボコボコボコ
こうか?
11:デフォルトの名無しさん
07/03/05 20:13:34
そうそう、そんな感じで
12:デフォルトの名無しさん
07/03/05 20:36:30
なるほど。ずれたらいいわけですね
13:デフォルトの名無しさん
07/03/05 20:41:49
マイクロソフトが出してるVB.NET本(黄色いやつで上級とか初級とか中級とかとにかくたくさんあるやつ)で、
ウラにかかれてる項目の中の「ネットワーク」の項がアクティブになってる本がほしいんだけど
一度もみたことありません。持ってる人、タイトルおしえてくださいませ
>>8
某さいたまなところで滑り降りるところだけが盗まれまくったらしいね
盗んだ奴の顔がみてみたい
14:デフォルトの名無しさん
07/03/05 22:23:31
str.replace("a","b")
とするとすべてのaがbに置き換わりますが
最初のaだけがbに置き換わるreplaceはないでしょうか?
15:デフォルトの名無しさん
07/03/05 22:30:26
Regex で "^a" を "b"に置換
16:デフォルトの名無しさん
07/03/05 22:31:18
>>14
ないので作れ
17:デフォルトの名無しさん
07/03/05 22:31:58
Regex.Replace なら最大回数を指定できるオーバーロードがあるな
18:デフォルトの名無しさん
07/03/05 22:35:30
そういやregexってのがあったな
19:デフォルトの名無しさん
07/03/05 22:51:33
VB.NET から C#.NET への移行はさほど難しい話ではないようですが、
前スレではちらほら、「C# は Java に近い ・ むしろ C++ にも見える」という書き込みを見かけました
これは C#.NET から Java もしくは C++ をあくまでも文法的に習得するのが容易だという意味でとらえてもよろしいでしょうか
よっちゃんいか
20:デフォルトの名無しさん
07/03/05 22:59:11
文法なんて習得する程も無いよ(C++はともかく)
一番の違いはライブラリで、そして C# と VB.NET/VB2005 はそれが共通。
21:デフォルトの名無しさん
07/03/05 23:06:33
よっちゃんいかに釣られていいか?
22:デフォルトの名無しさん
07/03/06 06:54:32
XMLDataSourceを使ってGridViewにバインドしたいと考えており
以下の単純なXMLファイルを作成したところ問題なくGridViewにバインドされます。
<ファイル管理>
<ファイル ID="A" ファイル名="AAAファイル" />
<ファイル ID="B" ファイル名="BBBファイル" />
<ファイル ID="C" ファイル名="CCCファイル" />
</ファイル管理>
このXMLファイルには他の定義も必要になるため、もう1階層要素を追加しました。
<どっとねっと>
<ファイル管理>
<ファイル ID="A" ファイル名="AAAファイル" />
<ファイル ID="B" ファイル名="BBBファイル" />
<ファイル ID="C" ファイル名="CCCファイル" />
</ファイル管理>
<別の階層>
<システム ID="AAA" />
<システム ID="BBB" />
<システム ID="CCC" />
</別の階層>
今回必要なのはファイル管理以下の一覧なのでXPath式を
/どっとねっと/ファイル管理
としたところ画面には何も表示されなくなりました。
どのようにしてファイル管理以下の一覧を取得するのでしょうか?
プログラムでDataGridにバインドする前にXMLデータの加工をしてしまえば
できると思うのですが、デザイナ画面で実装イメージが確認したいので
そのようにしたくはありません。
23:デフォルトの名無しさん
07/03/06 14:12:25
tga扱えるようになるライブラリありませんか?
ネット探しても有料のしか見つかりませんでした。
24:デフォルトの名無しさん
07/03/06 21:31:47
ちょっと質問!
プライマリディスプレイのデスクトップに置かれたショートカットからプログラムを起動させる時
サブディスプレイを検出したらサブディスプレイのほうに最大化させてプログラムを表示させたいのですが・・・・
ディスプレイの数や、サイズは取得可能なようですが、そこから2代目のモニタに表示させて最大化
という部分が今一歩思いつかない状態です。
なにかいい案とかないですか?
あくまでサブディスプレイはミラーリングのタイプは使用しない という縛りは可能です。
もう、メインディスプレイの右側の領域にくっつくという考え方でいいんでしょうか?
例えば800X600のメインディスプレイに1024X768のサブディスプレイがくっついてたとして
800より大きい値であればサブディスプレイという考え方です。
なんとなくスマートじゃねぇ・・・・orz
25:デフォルトの名無しさん
07/03/06 22:22:48
>>24 かなり冗長でテストもしてないけどこんなのは?
Private Sub VewSubDisplay()
Dim monitor() As System.Windows.Forms.Screen
monitor = System.Windows.Forms.Screen.AllScreens()
Dim length As Integer = monitor.Length
If length > 0 Then
For i As Integer = 0 To monitor.Length
If monitor(i).Equals(System.Windows.Forms.Screen.PrimaryScreen) = False Then
Dim rect As Rectangle = monitor(i).WorkingArea
Me.Bounds = rect
End If
Next
End If
End Sub
26:25
07/03/06 22:24:23
とりあえずコメントぐらいつけろよな俺・・・
27:デフォルトの名無しさん
07/03/06 22:42:59
>>25
レストンクス!
コメントなくても無問題
みっけたモニタの中で最大の添え字のディスプレイの作業領域で表示させるって事ですね
最大化は必須なのでこれちょこっといじって、まんま使わせてもらうことにしました。
PS.
For i As Integer = 0 To monitor.Length - 1
じゃないと範囲超えちゃいます。
28:デフォルトの名無しさん
07/03/06 22:49:05
最後にはちゃんと御礼書けよ 俺orz
>>25-26
すません、ちょっと色々テンパってたので助かりました。
29:デフォルトの名無しさん
07/03/06 22:51:40
>>28
しかもしっかり間違いも指摘している
これは間違いなく…感じ悪い
( ゚д゚ )
30:デフォルトの名無しさん
07/03/06 22:55:06
> Dim rect As Rectangle = monitor(i).WorkingArea
> Me.Bounds = rect
これでさぶスクリーンに表示できるんだ。
外野だけど勉強になったよ。
31:デフォルトの名無しさん
07/03/06 22:58:10
>>29
orz
ごめんよ・・・ごめんよ
>>25
でも、マジでいいアイデアだとオモタ
32:デフォルトの名無しさん
07/03/06 23:02:13
>>10 がテンプレAAを乗っ取る日も近そうだ
33:デフォルトの名無しさん
07/03/06 23:03:25
.Net Framework 1.1、VB2003で
VisibleがfalseのControlを画像にキャプチャする方法ってありませんか?
知ってるかたいましたらお願いします。
34:25
07/03/06 23:03:29
>>27-29
> 最大の添え字のディスプレイ
というかメインディスプレイかどうかチェックかけて
メインディスプレイじゃない場合、そこに書けという処理。
というわけでモニタが二つ以上のときは
上のだと条件追加してやらいないといけない予感。
あと指摘のミス
実務のほうで・・やべ・・変な汗出てきた
35:デフォルトの名無しさん
07/03/06 23:05:05
撮影直前に表示じゃダメなん?
36:デフォルトの名無しさん
07/03/06 23:11:05
>>35
キャプチャするためだけに一瞬表示するのはダメっすね
37:デフォルトの名無しさん
07/03/06 23:14:49
そのコントロールのコードいじれるならいくらでも
じゃなきゃVista以外はむりぽ
38:デフォルトの名無しさん
07/03/06 23:23:09
>>37
コードはいじれます
.Net2.0のControl.DrawToBitmapの動きを.NET1.1でさせたいんです。
39:デフォルトの名無しさん
07/03/06 23:43:24
んじゃ、
GraphicsオブジェクトつくってOnPaintに食わせれば描いてくれるよ
40:デフォルトの名無しさん
07/03/06 23:52:01
>>39
マジすか、やってみます。ありがとう
41:デフォルトの名無しさん
07/03/07 10:30:49
DrawToBitmapの実装を真似すればいいと思うんだが
42:デフォルトの名無しさん
07/03/07 16:41:50
.net2.0なんですが
Webbrowserでページを読み込んで
その中のHtmlElementをInvokeMember("Click")でクリックできることはわかったのですが
objectタグで埋め込まれているFlashをクリックできないのでしょうか?
特に複雑なことをしたいのではなくて、yahooのトップにあるようなバナーをクリックしたいだけなんですけど
objectのelementから辿ってクリックとかしたいんですけど
43:デフォルトの名無しさん
07/03/08 15:16:55
すいません、質問させてください。
例えば「AAA BBB」という値が入ったテキストボックスがあるとして、
この時デフォルトではBBB付近でダブルクリックするとBBBのみが選択状態になります。
これを全選択にしたいと思い、ダブルクリックのイベントにSelectAllを書いたのですが、一度BBBが選択されたあと、全体が選択状態になる、といった動きになりました。
ダブルクリックのイベントを無効にしたのち、SelectAllすればいいのかな・・・?と思うのですが、無効の仕方がわかりません。
どなたか、方法を伝授していただけたら幸いです。
宜しくお願いします。
44:デフォルトの名無しさん
07/03/08 15:50:08
ダブルクリックのイベントを無効にしたら
SelectAllすらできないんじゃ…
45:デフォルトの名無しさん
07/03/08 15:51:23
時間測ってクリック2回を捕まえてみるとか
46:デフォルトの名無しさん
07/03/08 16:06:44
>>44
言葉足らずでした。
例えばKeyDownなら、e.Handled = trueでイベントが処理された、とみなされますが、
そんな感じでダブルクリックの時も出来ないかな~、というわけです。
47:デフォルトの名無しさん
07/03/08 16:37:16
>>46
TextBox継承して
こんな感じじゃダメ?
Public Class hoge
Inherits TextBox
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case &H203
Me.SelectAll()
Case Else
MyBase.WndProc(m)
End Select
End Sub
End Class
48:デフォルトの名無しさん
07/03/08 17:58:05
>>47
継承というのをはじめてやったのでてこずりましたが、無事できました。
ありがとうございました。
49:デフォルトの名無しさん
07/03/08 19:01:17
>>47
ドトネトはフック簡単で便利だよなw
50:デフォルトの名無しさん
07/03/08 20:02:51
VB.NETでフォームアプリケーション作ってて
継承が初めてってことはありえない
51:デフォルトの名無しさん
07/03/08 20:05:27
>>50
そりゃそうだw
既にフォームが(ry
52:デフォルトの名無しさん
07/03/08 21:55:59
スポーツ少女に処女膜が無いようなもんだな
53:デフォルトの名無しさん
07/03/08 21:59:35
それ違う。とても違う。
54:デフォルトの名無しさん
07/03/08 23:35:50
へやにいるからいおまぃらこいよwwwwww
55:デフォルトの名無しさん
07/03/09 13:35:30
クラスを自分で一つも定義せずにフォームアプリケーションを作るのは
一応可能みたいだな
56:デフォルトの名無しさん
07/03/09 14:35:01
ADO.NETの話です。
ExecuteNonQuery メソッドを用いてUPDATE文を実行して、その返り値が0
だった時は、それが他ユーザによる更新が原因であるのか、
ネットワークやハードウェアの障害によるエラーであるのかのチェックは
出来ない。ということなのでしょうか。
あえてチェックをする場合は、再度SELECT文を使って接続してみるしか
ないのでしょうか。
57:デフォルトの名無しさん
07/03/09 15:35:15
>>56
そういう場合は0ではなくて例外が起きる。
58:デフォルトの名無しさん
07/03/09 15:45:16
>>57
質問前に、msdnを読んだつもりだったのですが、例外の欄に書いてありましたね。
すみません。
InvalidOperationException(接続が存在しません。 または、接続が開いていません)
となると、以下のような解釈でいいということですよね?
例外が戻ってきた:ネットなど接続のエラー
0が戻ってきた:開いている間に他のユーザがデータを書き換えるなどしたため、
updateで更新されなかった。
59:デフォルトの名無しさん
07/03/09 16:50:22
P2Pのshareの逃げるバージョン情報のウィンドウを作りたい。
MouseEnterイベントでやるのかな?
意外と難しい。
60:デフォルトの名無しさん
07/03/09 17:27:17
Point lastPos;
private void timer1_Tick(object sender, EventArgs e){
Point current = System.Windows.Forms.Cursor.Position;
if (this.Bounds.Contains(p)){
int dx = current.X - lastPos.X; int dy = current.Y - lastPos.Y;
Point loc = this.Location;
loc.Offset((int)((float)dx * 1.0f), (int)((float)dy * 1.0f));
this.Location = loc;
}
lastPos = current; this.Refresh();
}
こんな感じ?C#だけど
61:60
07/03/09 17:28:57
ゴミが残ってた
7行目はloc.Offset(dx , dy);でいい
62:デフォルトの名無しさん
07/03/09 17:44:03
>>60
ほほう。どうもありがとうございます。
参考にさせてもらいます。
63:デフォルトの名無しさん
07/03/09 19:43:07
チラウラなんだが、Vistaに標準で.NET3.0&コンソールコンパイラが入っているね。
某家電屋の店頭のVistaPCでHello,Worldを実行できたよ。
64:デフォルトの名無しさん
07/03/09 21:51:56
だんだんMSもOSを触る環境から使う環境へと意識転換してきてるんだな
65:デフォルトの名無しさん
07/03/09 23:18:25
使う環境にコンパイラいらんだろ
66:デフォルトの名無しさん
07/03/09 23:25:17
.NET のクラスライブラリには CodeDOM 関連のものも含まれていてだな
67:デフォルトの名無しさん
07/03/10 13:33:41
実行時にソースコードをコンパイルしてスクリプトみたいに実行できたりしてだな
68:デフォルトの名無しさん
07/03/10 14:02:29
Hello Worldとかありきたりだな
もっと個性ある今風の言葉にしようぜ。
69:デフォルトの名無しさん
07/03/10 14:04:02
こんにちは、世界
70:デフォルトの名無しさん
07/03/10 14:05:52
WellCome DeathMarch
71:デフォルトの名無しさん
07/03/10 14:51:48
Goodbye World
72:デフォルトの名無しさん
07/03/10 14:54:02
うわっつまんねー^^
73:デフォルトの名無しさん
07/03/10 15:58:38
自演乙
74:デフォルトの名無しさん
07/03/10 16:30:02
>>73
かわいそうに。
VB厨はipdわからないから、ID丸見えなのに
誰が自演かわからないんだろうねw
75:デフォルトの名無しさん
07/03/10 17:22:33
>>74
しーっ
76:デフォルトの名無しさん
07/03/10 21:11:40
すいません
文字列のピクセル長を知るためにはどうすればよいのでしょうか?
よろしくお願いします。
77:デフォルトの名無しさん
07/03/10 21:16:19
Graphicsのメンバをよく眺めてみ
78:デフォルトの名無しさん
07/03/10 21:19:15
>>76
その質問では意味がわからんが、漏れがエスパーするに、文字列を描画するのに必要な領域の幅を知りたいというんだな?
TextRenderer.MeasureText() か Graphics.MeasureString() を使え。
79:76
07/03/10 21:21:07
>>77 >>78
ありがとうございました
80:デフォルトの名無しさん
07/03/11 08:57:05
Visual Studioのツールボックスみたいなコントロールは標準であるのでしょうか?
TreeViewコントロールのプロパティをいじって似たものを作ってみたのですが、
動作的にはOKでも、ノード別に見た目の文字位置とか色とかの調整ができない?ので
今ひとつでした。
よろしくお願いします。
81:デフォルトの名無しさん
07/03/11 23:32:35
>>80
ピンポイントでは、そのようなコントロールはないと思う
CodeProjectで>>80が求めるものを見た記憶があるなぁ・・・
日本のサイトではあの手のサンプルないんじゃないかな?
あそこで多分検索したらあると思うよ
C#かVBかは忘れちゃったけどw
82:80
07/03/12 08:19:57
>81
標準ではないですか。。。
codeproject探してみます。
もしくはやったことないけどオーナードローを検討してみます。
ありがとうございました。
83:デフォルトの名無しさん
07/03/12 22:25:02
DataGridでマウスでドラッグして行を選択するのだけど、mousemoveイベントの
間隔が遅すぎてまだらにしか選択されないんです(ゆっくりなら全部選択される)
この間隔ってどこかで設定とか出来る?
84:デフォルトの名無しさん
07/03/12 22:29:50
もう一つDataGrid
そうやってドラッグして選択していった時に、ドラッグしたまま下にはみ出すと
スクロールしながら次々選択されてくってのは何イベント使えばいい?
mouseleaveだと上に抜けたか下に抜けたか分からないし…
85:デフォルトの名無しさん
07/03/12 22:30:58
それ本当にDataGridか?
86:デフォルトの名無しさん
07/03/12 22:44:34
どぼん参考にアクセスのlistboxみたいな動作するようにしてるけど
(rowheader無しで1行全部選択される)それ以外は普通のdatagridだけど
87:デフォルトの名無しさん
07/03/12 23:12:09
小出しにされてもなあ・・なぞなぞじゃないんだし
とりあえず手元に現物が無いから、そっちで原因を洗うしかないんじゃないか?
88:デフォルトの名無しさん
07/03/13 09:05:33
>>86
DataGridViewをフォームに貼り付けて
こんな感じはダメ?
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As New DataTable("test")
a.Columns.Add(New DataColumn("1"))
a.Columns.Add(New DataColumn("2"))
a.Columns.Add(New DataColumn("3"))
a.Columns.Add(New DataColumn("4"))
For i As Integer = 0 To 49
Dim r1 As DataRow = a.NewRow
r1(0) = "a"
r1(1) = "b"
r1(2) = "c"
r1(3) = "d"
a.Rows.Add(r1)
Next
DataGridView1.DataSource = a
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End Sub
89:デフォルトの名無しさん
07/03/13 10:58:06
質問があります。
ActiveXのレジストリ登録についてなのですが、
ActiveXを使うには、DLLをレジストリ登録すると思います。
そのとき、
C:\test01\hoge.dll
C:\test02\hoge.dll
とテストバージョンを2つ作ったとして、両方ともレジストリ登録したとしたら、
どちらが適用されるのでしょうか?
regsvr32 /s C:\test01\hoge.dll
regsvr32 /s C:\test02\hoge.dll
↓
piyo.exe
また、regeditでいちいち検索せずに、hoge.dllが今どういう登録がされているのか
を調べるとしたら、どうすれば良いのでしょうか?
90:デフォルトの名無しさん
07/03/13 11:09:51
>>89
VB.NETで作ったCOMならregsvr32ではなく、regasmを使え。
普通のActiveXの話ならすれ違いっぽいが一応答えておこう。
基本は後勝ち。OleView.exeで調べる。
91:デフォルトの名無しさん
07/03/13 11:48:22
>>90
「後勝ち」
確認しました。ありがとうございます。
regsvr32 /s C:\test01\hoge.dll
↓
regsvr32 /s C:\test02\hoge.dll
とやったら、C:\test01\hoge.dll が C:\test02\hoge.dll で上書きされる
ようですね。
92:デフォルトの名無しさん
07/03/13 19:35:29
確か1とか2とか憑かなかったっけ?
93:デフォルトの名無しさん
07/03/13 19:50:03
COMはGUIDとか使ってそれなりに複雑な固体識別してたはずだよね。
っていうか、上書きって意味わからんw
94:デフォルトの名無しさん
07/03/13 20:43:29
全く同じCLSID, ProgID持ってるんだろ
95:デフォルトの名無しさん
07/03/14 11:00:29
質問です!
下のようなCSVファイルがあるとします。だいたい1000行くらいのログです。
aaa,a,aaa,01,01
bbb,b,bbb,01,02
ccc,c,ccc,02,01
ccc,c,ccc,02,02
・・・・・
このCSVにおいて例えば左から4番目のカラムが04のレコードのレコード数を取得したいのです。
既存アプリが吐くログなのでカラム名もないしSQLが使えるかも不明です。
VBSかVB.net2003で上記プログラムを作成したいのですが適切なロジックが浮かびません。
Do~Loopで一行ずつ読み込んでカンマでセパレートして配列変数に代入し、
検索条件にヒットしたらカウンタを1UPしていく方法くらいしか思い浮かばないのですが、
ほかにもっとシンプルな方法をご存知の方は教えてください。
96:デフォルトの名無しさん
07/03/14 11:03:25
>>95
その方法でいいじゃん。正規表現とか覚えてる間に作れちゃうよ。
97:デフォルトの名無しさん
07/03/14 12:59:59
DataSetに展開してSELECTする手もあるな
98:デフォルトの名無しさん
07/03/14 13:00:32
連投スマン
>>97
DataTableだわw
99:デフォルトの名無しさん
07/03/14 13:08:22
>>95
ADO.NETでCSV読ませれば?
そんでSQLでやるべし
100:デフォルトの名無しさん
07/03/14 13:16:17
ODBC Text DriverはMDACにまだ入ってるのかな?そろそろレガシーな気もする。
ReadLineしてString.Splitで十分な気もするが、
VB.NET的にはMicrosoft.VisualBasic.FileIO.TextFieldParserを使うのが推奨だろう。
101:デフォルトの名無しさん
07/03/14 14:34:24
VB.NETの型付データセットでデータ取得する時にNULLを扱いたいがエラーにはしたくない
Nothing返すようにしてるけど・・・なんとなく外道なのかな?
2005ならNullable.型 で返すんだけど2003だと如何するのがオヌヌメなんだろう・・・
102:デフォルトの名無しさん
07/03/14 16:07:32
1000行程度なら、オレならエクセルで読み込んで処理するが…どうしてもVBなの?
103:デフォルトの名無しさん
07/03/14 16:11:53
すみませんが、こちらでもよろしければ教えてください。よろしくです。
Windows.Form上で使うControlクラスを継承して新しいコントロールを作成し、
そのBaseクラスのプロパティすべてを、一回の属性設定だけでプロパティウインドウに
表示されなくすることは可能でしょうか。
目的はアプリケーションに関係のない項目はプロパティウインドウに表示させず、
関係のあるごく少わずかの項目だけを表示させたいからですが、このためには
一つ一つのプロパティを継承作成して全部そこにAttribuetes設定しないといけないでしょうか?
できれば、既存の項目は全部まとめて表示させないようにしてから、自分で追加した
プロパティだけを表示させるようにしたいのですが、こうしたことは可能でしょうか?
(本件はC#スレッドでもお聞きしていましたがお答えがほしくこちらでも質問させて
戴きました、すみませんよろしくお願いします)
104:95
07/03/14 16:50:45
>>96-100
皆さん、様々なアドバイスありがとうございます。
皆さんのヒントを元にヘルプやwebページを漁ってみましたが、大変参考になりました。
まずは
URLリンク(dobon.net)
あたりのページを参考に、やったことのない方法でやってみようと思います。
>>102
オフィス製品を導入していないサーバーで動かすため、アプリかスクリプトを作るしかありません。
バッチファイルかなにかで済ませられればそれに越したことはないのですが・・・
105:デフォルトの名無しさん
07/03/14 18:00:33
VB.NETをまだ勉強していないのですが、よろしければ質問させてください
現在C、C++、WIN32APIを用いてウィンドウアプリを作成しているのですが
VB.NETでUIを作成し、Cでイベントハンドラのソースを書くことは可能なのでしょうか?
また、その場合CとWIN32のみで作成した場合と処理速度に差がでるのでしょうか?
(現在作っているプログラムはリアルタイム処理なため、処理速度が重要)
理由はデータベース関連の書籍やサイトがほとんどVB、C#、perl、JAVAなどのため
MFCでUIとデータベースを実装するよりも、VB.NETに移行した方がいいのかと思ったからです
C++/CLIなるものがあるようなのですが、何分C以外の言語はほとんど無知なため
よろしければご教授願います
106:デフォルトの名無しさん
07/03/14 18:07:23
>>95
set n=0
for /f "delims=, tokens=4" %%0 in (hoge.csv) do if %%0=04 set /a n+=1
echo %n%
107:デフォルトの名無しさん
07/03/14 18:33:18
>>105
結局ナニが知りたいのかよく読み取れないが、
とりあえずPInvokeでググってみたらどうかな
cで作ったdll内の関数を呼び出せるか、という意味ならそれは可能。
108:105
07/03/14 19:31:17
>>107
わかりにくい文章ですいません
VBを使ってウィンドウを作成し、自分でCで作った関数を呼び出して使えるのか
ということが知りたかったんです
どうやら可能なようですね
PInvokeもかなり参考になりました
ありがとうございました
よろしければ、VBでCを呼び出した場合と、WIN32+Cの場合で処理速度に
差がでるか教えていただければ幸いです
wikipediaのVBの概要に
「ただし、実行速度はC/C++で記述したネイティブプログラムに比べ
10倍から20倍遅いと言われている。」
と書いてあったもので、あまりにも処理速度に差がでるならば使えないので・・・
これはCで書いた関数をVBで書き直した場合、これほどの差がでるということなのでしょうか?
109:デフォルトの名無しさん
07/03/14 19:55:57
>>106
if %%0=04
↓
if %%0==04
110:デフォルトの名無しさん
07/03/14 20:31:54
>>108
日本のwikipediaなんか話半分に聞いとかなきゃダメでしょw
それたぶんVB6以前の話だと思うし。
VB6だってメモリを直接操作できないことによるオーバーラップがネックになるような
ごく一部の処理(特定の文字列操作)以外はそんな遅くなる理由がないし。
っていうか、あんたの用途に適合的かどうかはあんた自身で試すしかないでしょ。
111:105
07/03/14 20:39:37
>>108
wikipediaを信頼しすぎたようですね
大丈夫なようで安心しました
時間はかかると思いますが、自分で試して頑張ってみることにします
ありがとうございました
112:デフォルトの名無しさん
07/03/14 20:41:20
アンカーミス・・・>>110でした
スレ汚し失礼
113:デフォルトの名無しさん
07/03/14 21:47:44
10万行くらいあるテキストファイル(1行100文字前後)の最後の100行を
読みたいのだけれどもっとも高速な方法を教えてくれ。
114:デフォルトの名無しさん
07/03/14 22:01:17
頭から読むしかない。
文字列配列を要素100個分用意して放り込んでいき、
最後まで埋まったら頭から上書きしていく。
115:デフォルトの名無しさん
07/03/14 22:07:49
>114
>頭から読むしかない。
げげ、ほんまかいな。困った。
じゃあ、逆にファイルを書き出すときに末尾に追加するのではなくて、
先頭に行を追加することはできるかい?それが出来れば
読むときは頭から100行読めばいいので。どう?
116:デフォルトの名無しさん
07/03/14 22:12:02
そんな馬鹿なw
天然無脳(つまり114のことだが)だって1万ページある本の最後の1000行を
書き出すのに巻頭から全部目を通さないだろう
117:デフォルトの名無しさん
07/03/14 22:21:19
>116
その方法を教えてくれ。たのむ。
118:デフォルトの名無しさん
07/03/14 22:25:14
ケツからファイルポインタをデクリメントしていって1000個目の改行コード探すだけじゃん。
そこから先は普通にテキストとして読めばいい。
119:デフォルトの名無しさん
07/03/14 22:32:41
>118
サンプルコードを教えてくれ。たのむ。俺は、ファイルポインタなんて
使った経験がない。
StreamReaderでファイルを開いてReadLine() で一行ずつなら読める。
120:デフォルトの名無しさん
07/03/14 22:35:27
氏ねよ
121:デフォルトの名無しさん
07/03/14 22:39:37
>>119
FileStreamクラスを使うんじゃよ
122:デフォルトの名無しさん
07/03/14 22:43:56
>>113
>>119ってもしかしてテキストファイルなら、TextBox系でLoadFileしておいてTextを
String変数に代入してLength目から逆追いするってのと同じじゃないだろうか。
それなら直ぐ書けるのじゃないだろうか。
って俺はとてもヒマないからやってはあげはしないがw
123:デフォルトの名無しさん
07/03/14 22:45:37
あ、ただTextBoxBaseは最大文字数に制限あったっけ??
124:デフォルトの名無しさん
07/03/14 22:49:38
>>122,123は論外
125:デフォルトの名無しさん
07/03/14 23:18:39
プログラム始めてから数ヶ月の俺にも出来たぜw
126:デフォルトの名無しさん
07/03/14 23:24:16
>125
それを俺に教えてくれ。たのむ。
127:デフォルトの名無しさん
07/03/14 23:36:37
>>126
Dim a As New IO.FileStream("C:\a.txt", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
Dim count As Integer
Dim Bytes(a.Length - 1) As Byte
For I As Integer = a.Length - 2 To 0 Step -1
a.Position = I
If a.ReadByte() = 13 And a.ReadByte() = 10 Then
count += 1
If count = 1000 Then
a.Read(Bytes, 0, a.Length - I)
TextBox1.Text = System.Text.Encoding.GetEncoding("Shift-jis").GetString(Bytes)
Exit For
End If
End If
Next
a.Close()
エンコードはシフトJIS
勘で作ったから保障はしないよ
128:デフォルトの名無しさん
07/03/14 23:44:13
色んな物がメチャクチャだなぁ
129:デフォルトの名無しさん
07/03/14 23:50:53
>Dim Bytes(a.Length - 1) As Byte
これで台無しだな
130:デフォルトの名無しさん
07/03/14 23:58:43
>>126
だからFileStreamクラスを調べろっつってんだろがボケ!!!
でもSeekとかPositionの性能が本当に良いかどうかは知らんよ。
131:デフォルトの名無しさん
07/03/15 00:01:41
>127
おおーーー、超サンキュウ!
さっそく試してみるわ。
>130
>ボケ
だから質問してるんだよ。俺に優しく教えろ!
132:デフォルトの名無しさん
07/03/15 00:06:09
だから悩んだり試したりする前にMSDNに目を通せと(ry
133:デフォルトの名無しさん
07/03/15 01:02:05
>>130はツンデレ
134:デフォルトの名無しさん
07/03/15 05:04:45
フォーム上にお絵かきするソフトで下記の例外がまれに発生するんだけど、
なんのことやらさっぱり分からん。
「InvalidOperationException:バッファ操作が現在進行中であるため、BufferedGraphicsContext を消去できません」
作り方が悪いのか?
どういう場合に発生する例外なのか、VBプロフェッショナル達よ、教えてくれ。
135:デフォルトの名無しさん
07/03/15 08:09:55
頭が悪いんだよ、きっと。
いや、確実に。
作り方が悪いのか?、だと?
お前さん以外にそういうトラブルを申し立てている人間がいるのかよw
136:デフォルトの名無しさん
07/03/15 08:15:47
>>127
そいつのベンチマークが見たいな。
137:デフォルトの名無しさん
07/03/15 09:51:10
>>125 こんなのでどうか
Public Function ReadTailLines(ByVal filename As String, ByVal lineCount As Integer)
Dim sep() As String = {vbCrLf}
Using ifs As IO.FileStream = IO.File.OpenRead(filename)
Dim allBuf As New List(Of Byte)
Dim len As Integer = lineCount * 100
Dim pos As Long = ifs.Length
Dim lines() As String
Do
pos -= len
If pos < 0 Then
len += pos
pos = 0
End If
Dim tmpBuf(len) As Byte
ifs.Seek(pos, IO.SeekOrigin.Begin)
ifs.Read(tmpBuf, 0, len)
allBuf.InsertRange(0, tmpBuf)
lines = Text.Encoding.Default.GetString(allBuf.ToArray(), 0, allBuf.Count).Split(sep, StringSplitOptions.None)
Loop While pos > 0 And lines.Length < lineCount
(続く)
138:デフォルトの名無しさん
07/03/15 09:52:07
If lines.Length <= lineCount Then
Return lines
Else
Dim ret(lineCount - 1) As String
Array.Copy(lines, lines.Length - lineCount, ret, 0, lineCount)
Return ret
End If
End Using
End Function
初めてVB.NETでプログラム組んだのでちょいと汚いがな
139:137
07/03/15 09:52:57
>>113 の間違いだ。すまん
140:デフォルトの名無しさん
07/03/15 12:22:10
>>134
どんな時にその例外が投げられるかはMSDN見れ。
なんで、もしくはどこで、出てるのかは
お前さんにしかわからない。
とりあえずコード上での発生箇所を探るしかないとおもう
141:デフォルトの名無しさん
07/03/15 12:26:42
例外発生ネタは発生個所を晒してもらわないことには回答のしようがないんだよな
142:デフォルトの名無しさん
07/03/15 12:50:39
134だけど、例外の発生箇所は下記のとおりだよ。
場所 System.Drawing.BufferedGraphicsContext.Dispose(Boolean disposing)
場所 System.Drawing.BufferedGraphicsContext.Dispose()
場所 System.Drawing.BufferedGraphicsContext.AllocBufferInTempManager(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle)
場所 System.Drawing.BufferedGraphicsContext.AllocBuffer(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle)
場所 System.Drawing.BufferedGraphicsContext.Allocate(IntPtr targetDC, Rectangle targetRectangle)
場所 System.Windows.Forms.Control.WmPaint(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
場所 System.Windows.Forms.Button.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
自分の作ったコード内ではないので、困ってるんだよ。
143:デフォルトの名無しさん
07/03/15 12:54:43
そんな内部のことはどうでもいいから最後に実行された自分のコードを確認してくれ
144:デフォルトの名無しさん
07/03/15 13:56:01
>>142
> 自分の作ったコード内ではないので、困ってるんだよ。
俺たちも自分の作ったコード内じゃないことの上にソースすらないからどうしようもないんよ(・ω・)
145:デフォルトの名無しさん
07/03/15 14:14:50
>>144
ソースがないと直しようがないじゃないか・・・
なんか ちらつき防止のダブルバッファの使い方を
間違えたんじゃないかと思うんだが?
どうなの、詳しい人?
それと、思い出したんだが.VisualStudioに逆アセンブラがついてた気がする。
難読化されていなかったらソース解析できる可能性があるよ。
146:デフォルトの名無しさん
07/03/15 14:16:38
ごめん>>144と>>142が同一人物だと勘違いした。OTZ
147:デフォルトの名無しさん
07/03/15 14:49:56
>137
誰かこれをVB.NET2003に翻訳してくれ。たのむ。
148:デフォルトの名無しさん
07/03/15 16:47:19
VB.netを使って、サーバーやサイト上のデータ(htmlとかtxtとか)をダウンロードし、
PC内にためこんでデータベース化するソフトを作りたいんですが、
どういう機能を使えばいいのかわかりません。
どういう機能を使えばweb上のデータをDLできるのでしょうか?ADO?ASP?
また、それを学ぶのにお勧めの本などありましたら教えていただけると幸いです<(_ _)>
149:デフォルトの名無しさん
07/03/15 18:12:11
>>148
MSDN
150:デフォルトの名無しさん
07/03/15 18:43:47
VB.NETで作成したEXEファイルを自動的に配布するツールとかないですかね?
クライアントはIEが前提で
ノータッチデプロイメントでいいやって思ってたら、社外からのインターネットアクセスはTAMってやつが邪魔するのよ
151:デフォルトの名無しさん
07/03/15 19:00:29
んーーーーーいろいろ考えたけど
IISにローカルのEXEファイルとサーバサイドのファイル更新日時比較するスクリプト仕込んだポータルサイトを置いといて
そのスクリプトでFTPダウンロードする方式しか思いつかんな
でもかっこ悪いよなこんなやり方
セキュリティ警告のダイアログがウザそうだし
152:デフォルトの名無しさん
07/03/15 19:11:05
フロッピーで郵送
153:デフォルトの名無しさん
07/03/16 00:00:19
if x < 1e10 then
って書いたら、勝手に
if x < 10000000000 then
ってなるのだが、ゼロが並んでいると分かりにくいので、1e10のまま
にしたいのだが、方法はあるか?
154:デフォルトの名無しさん
07/03/16 00:22:53
VBって16進も勝手に整形するよね。もうアホかと。
Const tenBillion as Integer = 1000000000
とか、
if x < 10^10 then
ぐらいか、手の打ち所は?
155:デフォルトの名無しさん
07/03/16 00:31:47
>>153自動整形機能を切るのはダメ?
156:デフォルトの名無しさん
07/03/16 00:40:54
Int64.Parse( "1e+10", NumberStyles.AllowExponent )
ww
157:デフォルトの名無しさん
07/03/16 00:49:55
>>137
それだと、lines.Length=lineCountのとき、戻り値の最初の行が途中からにならないか。
158:デフォルトの名無しさん
07/03/16 04:51:37
134だよ。
ソースを提示したいけど、サイズがでか過ぎてムリだよ。
ミニマムコードを示せればいいんだけど。。。
とりあえず、情報を探してみたけど、
URLリンク(forums.microsoft.com)
URLリンク(www.codeproject.com)
似た現象はあるようだけど、解決策はかいてなかった。
下のは、Graphics.Flushを呼べと書いてあるけど、効果は不明。
う~ん、はまった。。。
159:デフォルトの名無しさん
07/03/16 10:09:26
VB.NET2003でソフトを動作させていると
IOExceptionが発生し、内容は
このコマンドを処理するのに必要な記憶域をサーバーで確保できません
こんなエラーが時々出る様子
やっている処理は以下のようなもの(普通にありえないんだが別会社のソフトの関係で仕方なくこうなっている)
OSはすべてXPのSP2
ウィルスバスターインスコ済み
一定間隔(処理完了から次の処理開始までが10秒ほど)
PC2~10からPC1にある大量のファイル(10000ほどある時もある)を全てなめて計算しているんだが
このときに出ている模様
で、検索してみるとサービスで使用しているスタック領域が不足しているので(XPのデフォは15)、これを現在の値から引き上げてやる模様
これが不足する理由ってのがよくわからないけど、他の人は単純に20とか30にまで引き上げてやれば解決しているみたい
外部から共有フォルダに接続してガリガリ読み込むと単純にネットワークサービスが使うメモリが不足するって事なのかな?
あと、これは・・・PC1に対して行うのかPC2~10に対して行うんだろうか・・・
PC1だとは思うけどレジストリなのでおいそれと変えたくない予感
もし、何か知ってる人居たら教えてくれないか?
160:デフォルトの名無しさん
07/03/16 10:42:42
>>159
その質問に答えられるのはエスパーかペテン師ぐらいだろう。
VB.NET2003でどんなソフトを作ってんのよ。WinFormアプリかサービスか、
通信は共有フォルダなのか独自にやってるのかはっきりしろ。
161:デフォルトの名無しさん
07/03/16 10:54:54
>>160
ごめ、説明不足
WinFormアプリで
PC1の共有フォルダを介してPC1のファイルを
PC2~10のWinFormアプリ各々がチェックしに行ってる状態
PC1のレジストリにはIRPStackSizeの項目は設定されていない
また、パフォーマンスの詳細設定で
パフォーマンスの優先はプログラム
メモリ使用量はプログラム
なぜか仮想メモリは370~700固定
IRPStackSizeの変更後の値をネットで調べると15が多いようだが
マージンとってそれよりも大きな値(20~30とか)に設定しても大丈夫なのかな?
出来れば設定値の基準値が知りたいところではあるけれど・・・
また、PC1では基本的に操作しないのでパフォーマンス設定も
サーバOSのデフォのように変えてやったほうがいいんだろうか?
PC1の大まかなスペックはP4 2.8Gでメモリ512M
ん~・・・説明へたでゴメ
162:デフォルトの名無しさん
07/03/16 11:00:38
>>148
Webサービスでがんばれ
163:デフォルトの名無しさん
07/03/16 12:45:40
TextBoxのMaxLengthプロパティってディフォルトで32767文字もあるけれど、
10文字で十分なのだけれど、この値が大きくても小さくても、プログラム
起動してタスクマネジャでメモリ使用量比べても、余り違わないのだけれど、
これはどういうこと?1000個のTextBoxでテストしてみたが良く分からない。
164:デフォルトの名無しさん
07/03/16 12:48:18
入力を制限しているだけでそれ以上の意味はない
165:デフォルトの名無しさん
07/03/16 12:55:23
>164
知らんかった。39!
166:デフォルトの名無しさん
07/03/16 13:41:02
馬鹿のイメージでは、メモリアロケーションしてるんかい?
きょうびの高級言語、そんなにせこせこしてねーよ。
167:デフォルトの名無しさん
07/03/16 15:04:28
意味が分からない
168:デフォルトの名無しさん
07/03/16 19:06:31
質問、Excelなんかが公開してるCOMオートメーションをVB.NETから使う時なんですが。
Excel側のイベントでチェックボックスのチェック状態を変更すると、以下の例外が出ます。
System.Reflection.TargetInvocationException' の初回例外が mscorlib.dll で発生しました。
COMのイベント内で自アプリのフォーム上のコントロールなんかを操作ってどうやったらいいでしょう。
とりあえずExcel側で新しいブックが作成された時のイベント(NewWorkbook)を使ってみたサンプルが
以下です。
Public Class Form1
Private WithEvents m_objExcel As Excel.Application
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
m_objExcel = New Excel.Application
m_objExcel.Visible = True
CheckBox1.Checked = False
End Sub
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
m_objExcel = Nothing
End Sub
Private Sub m_objExcel_NewWorkbook(ByVal Wb As Excel.Workbook) Handles m_objExcel.NewWorkbook
CheckBox1.Focus()
CheckBox1.Checked = True
End Sub
End Class
VB6だと動きますが、やっぱりVB.NETだとお作法が違いますよね
169:デフォルトの名無しさん
07/03/16 20:19:54
ワロタ
170:デフォルトの名無しさん
07/03/17 21:18:29
おまえらって賢いな
171:168
07/03/18 01:11:07
解決しました
.NET Fremawork1.1のC#しか扱ったことなかったのですが、2.0以降ではサブスレッドから
Windowのコントロールにアクセスすると例外が起こるんですね。
1.1の時はたまたま動いていたと。 orz
ちなみにInvoke()呼び出しと、m_objExcelの操作をサブスレッドで実行するように変更したら
動くようになりました。
めったに.NETのC#もVBも使わないんで結構忘れますね。
あと書き忘れてましたが VisualStudio2005使ってます。(最近買いました)
172:デフォルトの名無しさん
07/03/18 01:19:03
>>171
ついでにCOM相互運用とかも見とくといいんでない?
173:デフォルトの名無しさん
07/03/18 01:22:41
URLリンク(jeanne.wankuma.com)
こんな開放ってやっぱり必要なの?
174:デフォルトの名無しさん
07/03/18 01:25:39
自分しか使わないもんなら不要。
それで困らなければ不要。
立ち上げてすぐ落とすようなもんなら大抵不要。
そうでなければ必須。
175:デフォルトの名無しさん
07/03/18 01:26:36
>>174 thx
176:デフォルトの名無しさん
07/03/18 01:28:38
>>172
ちょうどHELPでそこ読みながらやってました
でも.NETメインじゃないんで熟読するの辛いですね
>>173
やらないとアプリ終了時に例外が出ますね
でも、やらなくてもCOMのローカルサーバーはちゃんと終了するんで
参照カウントはデクリメント(Release)されてるのかも
177:デフォルトの名無しさん
07/03/18 12:09:49
>>173
やっとかないアンマネージドリソースはフレームワークが勝手に開放するような仕組みもって無いんで解放できないんじゃ・・・?
というわけで仕方なくCOM使う場合は必ず使ってる
ただ、ラッパクラスAをさらにラップしたクラスB作ったら、Bの解放のタイミングでフレームワークがCOMオブジェクトリリースしてくれないかな?
とか淡い期待抱いてるけど
178:デフォルトの名無しさん
07/03/18 12:21:01
>>173
使うことが推奨だが、
>COM オブジェクトを扱う場合は、参照の解放を常に意識する必要があります。
>使用した COM オブジェクトの参照カウントが、正しくデクリメントされていないと「メモリ リーク」を起こします。
は明らかな間違い。いい加減なおして欲しいよ。
179:デフォルトの名無しさん
07/03/18 12:35:03
>>178
何が間違ってんだ、とぼけたこと抜かしてんなよボケ
180:デフォルトの名無しさん
07/03/18 12:36:46
>>178
”メモリリーク”を何に直せばいいの?
181:デフォルトの名無しさん
07/03/18 13:03:03
微妙な問題ではあるが、MSDNフォーラムのこの話題が参考になりそう。
URLリンク(forums.microsoft.com)
COMの参照カウンタはRCWが管理している。
ReleaseComObjectはCOMの参照カウンタそのものではなくRCWの参照カウンタを管理するもの。
RCWの参照ポインタがゼロのなるかGCされればCOMの参照カウンタはデクリメントされる。
RCWはReleaseComObjectで開放すべきであり、GCによる開放はフェイルセーフ的なものと考えるべき。
182:デフォルトの名無しさん
07/03/18 13:30:27
>>180
>COM オブジェクトを扱う場合は、参照の解放を常に意識する必要があります。
COM オブジェクトを扱う場合は、参照の解放を意識する必要があります。
>使用した COM オブジェクトの参照カウントが、正しくデクリメントされていないと「メモリ リーク」を起こします。
使用したRCWの参照カウントが正しくデクリメントされていないと期待するタイミングでCOM オブジェクトが開放されません。
183:デフォルトの名無しさん
07/03/18 13:32:24
>>182
あらゆる意味で不完全燃焼だ
184:デフォルトの名無しさん
07/03/18 13:34:37
そんな文章の校正屋みたいなことして楽しいのかね。奇特な奴。
どうせ何か書くなら物事自分の頭でまとめた結果をアウトプットしろよ
185:デフォルトの名無しさん
07/03/18 13:49:41
そりゃま、「全部GCでOKww手動でやる奴は馬鹿!」とか書いたら爆釣りで完全燃焼だろうけどさw
186:デフォルトの名無しさん
07/03/18 14:21:11
>>184
校正って、間違ってんだろ
187:デフォルトの名無しさん
07/03/18 17:13:13
VB6時代のNothing論争に似てる。
Sub XX
Dim Obj As New ActiveX.Hoge
' いろいろな処理
Set Obj = Nothing
End Sub
最後のNothingがないとメモリーリークが起きると言い張るのが必ずいた。
実害はないから頭の悪いプログラマーには全部Nothingを付けされたほうが安全というのが結論だった。
188:デフォルトの名無しさん
07/03/18 17:18:16
参照にnullを代入したらその時点でGCが動くと信じてる奴は多そう
全く意味はないとMSDNには書いてあるが
189:デフォルトの名無しさん
07/03/18 17:19:20
dim a as new collection
set a=nothing
msgbox a.count
190:デフォルトの名無しさん
07/03/18 17:19:56
全く意味は無いというのは言いすぎだな
超極めて限定的に意味があるシーンもある
……それは意味がないのと同義か
191:デフォルトの名無しさん
07/03/18 17:20:00
アウトプロセスサーバなCOMでプロセス起動するようなやつだと
解放しないとプロセスが残るやん
メモリリークどころじゃないやん
その時点でアウトやん
192:デフォルトの名無しさん
07/03/18 17:22:07
>>190
循環参照とかにつかうんよ
>>191
参照カウントをデクリメントするのと、「解放」するのは全く別物
193:デフォルトの名無しさん
07/03/18 17:24:48
循環参照でもそれらが孤立してたらGCされるだろ
194:デフォルトの名無しさん
07/03/18 17:27:18
>>193
.NETはね
VBは参照カウントだから無理
195:デフォルトの名無しさん
07/03/18 17:39:01
以下VB6の話。スレ違いなのでこれくらいにしておく。
「別の処理」のときにObjを確実に終わらせいたいときはNothingの代入は意味がある。
Sub XX
Dim Obj As New ActiveX.Hoge
' いろいろな処理
Set Obj = Nothing ' ここで参照が0になったら即開放される。ここはVB.NETと異なる。
' 別の処理
End Sub
Objはローカルに宣言された変数だからEnd Sub時点でObjは消失してNothingの代入相当の処理
つまり参照カウンタの減算は行われる。このため「別の処理」が存在しないときにNothingの代入は意味がない。
196:デフォルトの名無しさん
07/03/18 17:39:55
COM使うの止めればいいじゃん。特にサーバでは。
197:デフォルトの名無しさん
07/03/18 17:41:26
>>196
サーバー用途だとエンタープライズサービスがもろCOM+だからねぇ
198:デフォルトの名無しさん
07/03/18 23:17:22
しかし、これからはComは使わないだろ
FW1.1とかでAPI使わずにVB6のMSCOMM使ってる連中が多かったから
FW2.0でCOMM通信のコンポーネント追加したんだろう
DataGrid使いづらいからってMSFLEXGRID使ってた連中もいたし
それでDataGridView追加したんだろうけどなぁ…
すべてはCOMから移行していくんだよ全て
199:デフォルトの名無しさん
07/03/18 23:28:50
とはいえ、マイクロソフトの主要プロダクトはほとんどCOMじゃないか。
200:デフォルトの名無しさん
07/03/18 23:34:01
>>198
FWってFrameworkのことか?
普通はFxと略すが
201:デフォルトの名無しさん
07/03/18 23:37:47
Fxは.NET Framework 3.0(旧称WinFX)のことだと誤解されそう
202:デフォルトの名無しさん
07/03/18 23:39:29
>>200
うはw初めて知った。
それって公式な略称なんですか?
203:デフォルトの名無しさん
07/03/18 23:39:53
マイクロソフトの出す資料には.NET Fxと書いてある。
204:デフォルトの名無しさん
07/03/18 23:40:14
>>200
FXは俺も3.0とオモタw
そういえばみんなフレームワークなんて呼んでるんだろうな?
俺は普通にフレームワーク2.0とかの書き方なんだが略し方とかあるのか?
VisualStudio2005=VS2005みたいに
205:デフォルトの名無しさん
07/03/18 23:41:16
Clipboard.SetDataObject(Me.PictureBox.Image, True)
で、クリップボードにコピーしようとしたら、10回に8回くらいは、以下のエラーが出るんだけれど
何でかな?
System.Runtime.InteropServices.ExternalException: 要求されたクリップボード操作が失敗しました。
at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy)
206:デフォルトの名無しさん
07/03/18 23:46:05
>>205
他所のアプリがクリップボードをロックしてる時にでもエラーになってんじゃね?
207:デフォルトの名無しさん
07/03/18 23:50:34
>206
サンキュウ。うーん、でもね、他のアプリは確かに沢山動いているけれど、
クリップボードをロックしているはずはないのだけれど。
例えば、このエラーが出たあとPaintを起動してクリップボード使っても
何も問題なく使える。うーん、おかしい。
208:デフォルトの名無しさん
07/03/18 23:53:12
その前後のプログラムのソース見ないといまいちわからんかもしれんなぁ・・・
なにやってんだ?
俺はクリップボード問題なさそうなんだが
209:デフォルトの名無しさん
07/03/19 00:05:22
プログラムはFormを3つ開いて、Form3のPictureBoxに絵を描いて
Buttonを押したらその絵をクリップボードにコピーするという簡単なもの。
このサンプルをそのまま使っている。
URLリンク(www.bcap.co.jp)
プログラムの中には、スレッドを使って別の処理を並行してやらせるようなルーチンも
あるのだけれどプログラム起動直後はそういうルーチンは全然実行していないので、
スレッドなどは関係ないと思う。
210:デフォルトの名無しさん
07/03/19 00:15:10
>>209
COM関連だよなInterRop
そうおもってググってみたら同じような質問があった
でうまくいったみたいだけど参考になるかな?
211:デフォルトの名無しさん
07/03/19 00:15:56
貼り忘れ 連投スマソ
URLリンク(piza.2ch.net)
//*********************
232 名前: 名無しさん♯ 投稿日: 2001/04/17(火) 17:21
>>230
COMのスレッドの問題よん。
ここを参考にしてちょ。
質問
URLリンク(discuss.develop.com)
回答 from Microsoft
URLリンク(discuss.develop.com)
233 名前: デフォルトの名無しさん 投稿日: 2001/04/18(水) 00:39
>>231-232
ありがとうです。
using System.Threading; して
Thread.CurrentThread.ApartmentState = ApartmentState.STA;
をMainの一番初めに入れればいいんですよね。
この方法で試してみたけど、うまくいったりいかなかったり…。
で、今試したら100%うまくいくようです。
ちょっと謎ですが、たぶん大丈夫でしょう。
どうもありがとうございました。
212:デフォルトの名無しさん
07/03/19 01:00:10
普通はSTAThreadAttributeついてると思うんだけど、つけてないの?
213:デフォルトの名無しさん
07/03/19 01:01:36
>>207
そりゃ問題なく使えて当然。そんな長時間クリップボードをロックしっぱなしするようなことはフツーしない。
214:デフォルトの名無しさん
07/03/19 02:05:54
>211
サンキュウ。
Thread.CurrentThread.ApartmentState = ApartmentState.STA
っていうのを入れてみたが効果なし。
おかしい。
215:デフォルトの名無しさん
07/03/19 07:39:15
>>214
.NETのVersionはなに?.NETのVersionが2.0なら
>Thread.CurrentThread.ApartmentState = ApartmentState.STA
は既にレガシーで機能しない。
メインスレッドは属性[STAThread]で指定し、それ以外のスレッドならスレッド開始前に
Thread.SetApartmentStateで初期化する必要がある。
それからPictureBoxはGUIコンポーネントだから、もしメインスレッド以外から
PictureBox.Imageを参照してるならおかしくなるのは当たり前だけどそこは大丈夫?
216:デフォルトの名無しさん
07/03/19 08:08:45
マイクロソフトはレガシーって呼ぶのか…。obsoleteとか言ってくんないとわからんw
217:デフォルトの名無しさん
07/03/19 08:37:32
>>215
もうだめだ .Image が .Invoke に見えた(orz
218:デフォルトの名無しさん
07/03/19 08:44:50
それは目がピンヴォケですね
219:デフォルトの名無しさん
07/03/19 09:05:56
…
220:デフォルトの名無しさん
07/03/19 10:06:46
Directoryクラスについて教えてください。
ヘルプに、
「Directory クラスの静的メソッドは、すべてのメソッドでセキュリティ チェックを実行します。
オブジェクトを何回か再利用する場合は、このようなセキュリティ チェックが必ずしも必要では
なくなるため、これらの静的メソッドの代わりに DirectoryInfo の対応するインスタンス メソッドを
使用することを検討してください」
とありますがこのセキュリティチェックというのは、Windows固有の機能でのチェックでしょうか、
それともウイルス対策ソフトにチェックをしてもらうということでしょうか?
このヘルプの意味するところは、「初回は必ずDirectoryクラスを使い、一度使ったフォルダは
すぐ次ではDirectoryInfoクラスを使うようにする」ことで、ウイルスチェックなどがしっかり掛かる
ということを意味しているのでしょうか?それともこれらのセキュリティチェックとは、いわゆる
コードアクセスセキュリティのようなもののことでしょうか?すみませんがよろしくお願いします。
221:デフォルトの名無しさん
07/03/19 10:09:02
また、逆に言うと、Directoryクラスを使わず、DirectoryInfoクラスだけを使ってしまうと
セキュリティチェックが掛からず、ウイルスに汚染されてしまう危険がある、といったことをも
意味するのでしょうか?これもあわせてお願いします。
222:デフォルトの名無しさん
07/03/19 10:13:30
CASの事だよ。
ウィルスとか関係ない。
DirectoryInfoでもチェックは入るが、
例えばインスタンス作成時だけチェックすれば済むとか、
そういう話だよ。
223:デフォルトの名無しさん
07/03/19 10:24:35
>>217
とりあえずもちつけ
落ち着いて理論的に考えていけばきっと解決できる問題だ!!
224:デフォルトの名無しさん
07/03/19 10:32:50
>>222
ありがとうございます。やはりコードアクセスセキュリティのことだったのですか、
>DirectoryInfoでもチェックは入るが、
>例えばインスタンス作成時だけチェックすれば済むとか
ということは、ヘルプの言ってることは、原則として、
インスタンス作成時は Direvtoryクラスを使い、
それ以降そのインスタンスの使用は DirevtoryInfoクラスを使ってください
と考えてよいということでしょうか?そしてみなさんもそういう原則を踏襲して
日々コードを作成しておられると考えてよいでしょうか?
225:デフォルトの名無しさん
07/03/19 10:44:13
>>224
どこをどう読めばそう曲解できるのか不思議だが、書いてあるとおりだよ。
CASにかかる時間が気になるほど回数呼ばないならどっちでもいいってことだ。
226:デフォルトの名無しさん
07/03/19 11:07:57
>>225
たびたびすみませんです。
まだよく理解できていないのですが、DirectoryInfoでもDirectoryでも、
CASに関しては同等なのでしょうか、それともやはり顕著に異なるのでしょうか?
もし同等なのであれば、どちらを使ってもよい、ということになりコード作成で
気にする必要がなくなってありがたいのですが、ヘルプではやはり異なるように
書かれてあるようにも感じられます。CASをやってくれるのがDirecotryだけであるなら、
1.たくさんの回数呼ばないのなら、すべて 「Direcotry」 で済ませてよい、
しかし
2.もし同じフォルダーをたくさん回数呼ぶようであれば、最初だけはDirectoryを
使って、あとは DirectoryInfo を使うようにするべきである、
ということでしょうか?そしてこの原則をはずしてすべてを DirectoryInfo だけで
記述してしまうと、.NETのプログラムとしては大きく欠陥となる、ということを意味する
のでしょうか?この辺が気になっています。VB6ではこういうことを考える必要が
なかったもので戸惑っています。
227:デフォルトの名無しさん
07/03/19 11:32:46
なんでそうなる
228:デフォルトの名無しさん
07/03/19 11:35:12
プログラミングがあまりに論理的なので忘れてしまうことが在る
プログラミングはスポーツ、つまり活動的な行為なのですよ
人に聞くなんて恥ずかしい行為は慎むとよい
229:デフォルトの名無しさん
07/03/19 11:36:24
DirectoryInfoはチェックしないなんて
どこに書いてあんだよ。
同じディレクトリに対して操作を繰り返すんだから、
最初のインスタンス作成時にチェックするだけで済むだろ。
だからコンストラクタとかその辺でチェックしてるってことだよ。
230:デフォルトの名無しさん
07/03/19 11:39:44
そろそろさじ投げてもいいほど俺たちは堪えてるよな?
231:デフォルトの名無しさん
07/03/19 12:07:46
>>229
>DirectoryInfoはチェックしないなんてどこに書いてあんだよ。
>>220で挙げたようなヘルプの説明はそういった意味かと思いました。
これは意味が異なるのでしょうか。いろいろお聞きしてすみません。
>同じディレクトリに対して操作を繰り返すんだから、
>最初のインスタンス作成時にチェックするだけで済むだろ。
>だからコンストラクタとかその辺でチェックしてるってことだよ。
ということは、コンストラクタを使う限りは、DirectoryでもDirectoryInfoでも
CASが掛かるということでしょうか、そうであれば、初めから両者の差は、
コンストラクタ以外のメソッドでのみ異なるということになるわけなのでしょうか。
たびたびお聞きしてすみません。
232:デフォルトの名無しさん
07/03/19 12:19:11
reflector.netでも使えばいいんじゃないか?
233:デフォルトの名無しさん
07/03/19 12:32:20
諦めた、もう無理w
234:デフォルトの名無しさん
07/03/19 12:37:29
どうやってDirectoryのコンストラクタを使うんだ。
どうやってコンストラクタを使わずにDirectoryInfoを使うんだ。
って言ったらコンストラクタ使わずに使えるよ、とか言われんだろな。
そういうことじゃないんだ、そういうことじゃ…
235:デフォルトの名無しさん
07/03/19 12:38:41
>>231
そのセキュリティチェック云々のたわ言は別にして
DirectoryとDirectoryInfoの違いはわかってるのか?
236:デフォルトの名無しさん
07/03/19 12:43:29
>>231
・・・なんという電波解釈wwww
237:デフォルトの名無しさん
07/03/19 12:46:37
>>235
>DirectoryとDirectoryInfoの違いはわかってるのか?
それもあいまいなのですした。すみませんです。
>そのセキュリティチェック云々のたわ言は別にして
この件はそれほど気にしなくてもいいという感じでいいでしょうか?
238:デフォルトの名無しさん
07/03/19 12:54:47
TextBoxに入力した内容を次にソフトを立ち上げた時に表示するように保存しておくようにしたいんですけど。
どうやるんですか?
データファイルとかソフト本体以外のファイルは作らないでやりたいんです。
239:デフォルトの名無しさん
07/03/19 12:57:52
1回のCASの検査にかかる時間はせいぜい1/1000秒かそれ以下。
1000回繰り返したら1秒遅くなることになるが、これが気になるならうまくやれってこと。
240:デフォルトの名無しさん
07/03/19 13:01:52
>215
サンキュウ。
VS.NET2003です。
その後のテストで、以下の事実が判明しました。ここで教えてもらったスレッド関係の設定をしなくても、
別のDELLマシンでは、何の問題もなくpictureBoxクリップボードにコピーできる。
エラー発生するのは最初に開発していたマシンのみ。
エラー発生しても、プログラムの実行を継続してやれば、2回目以降は成功する。
というわけで、よく分からない状態です。たまたま解決したのか、また、別のマシンで発生する可能性があるのか考えるとちょっと怖い。
お客さんのマシンで発生したら最悪。。。
241:デフォルトの名無しさん
07/03/19 13:02:17
>>238
情報量増やさずに情報を増強するのは無理
普通は外部ファイルとして保存するかアプリケーション構成とかに保存するんだろうが、
嫌なら諦めろ
242:デフォルトの名無しさん
07/03/19 13:04:20
>>238
念じるしかないんじゃないの?
増やさないで情報を保存するなんて、エスパーしかできねーし。
243:デフォルトの名無しさん
07/03/19 13:04:37
>>238
レジストリに格納できないか?
244:デフォルトの名無しさん
07/03/19 13:14:38
>>239
>1回のCASの検査にかかる時間はせいぜい1/1000秒かそれ以下。
>1000回繰り返したら1秒遅くなることになる
そうだったのですか。わかりました、ということは原則としてアクセス回数が
少ないものの場合は、Directoryですべてまかなう方がむしろよい、というふうに
つまりCASを必ず通すという考えでやれば間違いはない、ということなのですね。
どうもありがとうございました。
あとは、DirectoryとDirectoryInfoの違いについてまた調べてみますです。
どうもでした。
245:デフォルトの名無しさん
07/03/19 14:16:26
おめでとうございます。
日常生活でのコミュニケーションに障害を感じるレベルです。
246:デフォルトの名無しさん
07/03/19 15:36:42
>>238
アプリ本体のアセンブリ自身を書き換えてやればいいんじゃないか?
247:デフォルトの名無しさん
07/03/19 15:40:19
>>243
それも外部ファイルいじってるやんw
>>238みたいなのはもう居なくなれよwwwww
常識的に考えてそんなことしねぇよwwwww
248:デフォルトの名無しさん
07/03/19 15:41:53
まあ、彼がファイルとか作りたくないっていう理由が全くわからんけどね。
Assembly自身の書き換えは、厳格名を持ってる場合に問題出るだろうし、そもそも最近のセキュリティソフトが嫌うと思う。
EXEの書き換えなんて。
普通にapp.configに書き出せばいいのに。
249:デフォルトの名無しさん
07/03/19 15:52:26
>>247
少なくとも新規作成はしない罠
250:デフォルトの名無しさん
07/03/19 15:55:27
>>249
確かにw
しかしまぁ、何故新規作成したくないというか・・・・
きっとダメな理由でもあるんだろうけどなぁ
251:デフォルトの名無しさん
07/03/19 15:59:14
それならSystem32あたりで適当なファイルをランダムに選んで乗っ取れ
252:デフォルトの名無しさん
07/03/19 16:04:16
ブートローダ乗っ取ればいいんじゃね?
253:デフォルトの名無しさん
07/03/19 16:05:35
PCに残せないなら、前回の最終入力を作業者の脳内に残してもらえばいいじゃん。
それを画面起動時に入力してもらう。
254:デフォルトの名無しさん
07/03/19 16:08:58
ふっかつのじゅもんか。
255:デフォルトの名無しさん
07/03/19 16:11:21
設定サーバを立ててオンラインで保存・読み込みすればいいんじゃね
256:デフォルトの名無しさん
07/03/19 16:13:15
まあ、普通に馬鹿な仕様を変更すればいいだけだろ?
ローカル保存可とするか、保存する場所ないならば前回入力なんぞ保持しないか。
257:デフォルトの名無しさん
07/03/19 16:38:26
VBでいうAsc関数はフレームワークではどの様に記述するのでしょうか?
Microsoft.VisualBasic.Strings のメンバではなくてです。
258:デフォルトの名無しさん
07/03/19 16:38:54
system.math
名前空間の中じゃねぇの?
259:デフォルトの名無しさん
07/03/19 16:44:21
Reflectorで覗いてみたら?
自己責任で
260:デフォルトの名無しさん
07/03/19 16:44:27
>>257
普通にInt32にキャストしろ
261:257
07/03/19 17:18:27
たくさんの回答ありがとうございます。
>>258
名前からして違うと思います。一応確認しました。
>>259
リコンパイラ以前使ったのですが、どこに入れたのか忘れちゃいました。
Platform SDK か何かをインスコしたパスの中に実行体があるんでしたっけ?
>>260
キャストですか?
262:デフォルトの名無しさん
07/03/19 17:28:34
Dim row as DataRow
row("ID") = 3
みたいに、括弧をつけてアクセス出来るようにするには、
クラス定義の時、どのようなメソッドを追加すれば良いのでしょうか。
263:デフォルトの名無しさん
07/03/19 17:34:18
引数設定すればいいんじゃね?
Public Property Row(ByVal ColName As String) As DataRow
Get
return HOGEHOGE
End Get
Set(ByVal value As DataRow)
_HOGEHOGE= Value
End Set
End Property
264:デフォルトの名無しさん
07/03/19 17:34:47
とりあえずHashMapとかディクショナリとか。
.netになって意識してないけど、デフォルトプロパティもあるんだっけ?
上記の場合、Row.Item("ID")な書き方が正なように思う。
で、ItemってのがHashMapなりディクショナリで実装。
DataRowのデフォルトプロパティがItemだから、row("ID")でもアクセスできる。
かな?
265:デフォルトの名無しさん
07/03/19 17:46:36
>>264
あ、そっち方面の話だったのねwww
266:デフォルトの名無しさん
07/03/19 18:22:31
>>263-265
どうも丁寧にありがとうございました。
267:デフォルトの名無しさん
07/03/19 18:38:05
ちょっと質問です
VB.NET 2005のWinアプリでXSDスキーマ(スキーマA)使ってデータを読み込んだりしようとしている。
このスキーマAはプロジェクトAのSchemaフォルダに配置されていて実行時にこれを読み込みたい
(ただし、直でファイルパスを切りたくないので相対パスでアクセスしたい)
開発環境では、プロジェクトAのBinフォルダ以下のReleaseやDebugフォルダの中に保存されてしまい、
インストーラからインストールした時は、実行ファイルと同じ階層にSchemaフォルダがあるため、相対パスではアクセスできないので
相対パスで開発環境でも、実行環境でも同じ相対パスでアクセスしたい。
インストール時のフォルダ構造を開発環境に合わせればいいじゃないかといわれればそうだけど、
もし特に設定ナシで目的が達成できるならと思い質問させてもらいました。
説明が下手で伝わりにくいかもしれませんが、よろしくお願いします。
268:デフォルトの名無しさん
07/03/19 19:09:56
exeファイルにNTFSストリームをくっ付ければ
hoge.exe:hoge.txt
とかに保存すれば
269:268
07/03/19 19:11:17
>>238
です
270:デフォルトの名無しさん
07/03/19 22:04:50
>>267
Schema フォルダのパスを設定ファイルに書いとけばいいんじゃね?
271:デフォルトの名無しさん
07/03/19 22:08:41
>>257
これでわかるかい?
Dim s As String = "abcABC"
For Each c As Char In s
Dim a As Integer = Convert.ToInt32(c)
Console.WriteLine("{0}: {1}", c, a)
Next
272:デフォルトの名無しさん
07/03/19 22:34:45
Ascをreflectorで見た
何気に気合入ってたよ
Unicode<->ASCII(MS-shiftjis?)
273:デフォルトの名無しさん
07/03/19 22:39:15
Microsoft.VisualBasic.Asc() じゃダメ?
274:デフォルトの名無しさん
07/03/19 23:16:11
>>271
それはAscW
275:デフォルトの名無しさん
07/03/19 23:34:22
>>270
やっぱそうなっちゃいますよね?
あんまり、パスの直書きはしたくなかったんで聞いてみたんですが
とりあえずいい案思いつくまでそれでしのごうかと思います
(というか、そのままになりそうな予感)
レスサンクスでした
276:デフォルトの名無しさん
07/03/20 00:03:30
質問。StreamReader.Read(Char(), Int32, Int32) で文字列を読み込んだら、空白部分がnothing扱い(!?)になるんだが、
空かどうかはどう判定すればいいの?C#では普通にナル文字が入ったんだけどなぁ・・・。
277:デフォルトの名無しさん
07/03/20 00:11:46
VB の Nothing は C# では default(T)。
default(Char) は '\0' だな。
で、空白とか空とかって何?
278:デフォルトの名無しさん
07/03/20 00:20:32
この質問はVBの質問とはちょっと違いますが、
Windowsの仕組みを良く知っている人が多そうなここで質問させていただきます。
間違っていたらごめんなさい。
質問は、
Cでコンパイル済のEXEファイルAがあって、それはある種のシミュレーションを
繰り返し計算して、計算結果の数値を画面にずらずらと出力しています。
i=1 数字1 数字2 数字3
i=2 数字1 数字2 数字3
i=3 数字1 数字2 数字3
...
...
こんな感じです。そのソースを入手できないのですが、何らかの方法でこの出力している数字を
リアルタイムで取得して、それを別プロセスで動いているVBで作ったグラフ描画ソフトBに
データとして送りたいのです(ファイルマッピングか何かの方法で)。
問題は、画面の数字を取り込む方法なのですが、何か良い方法はありますか?
279:デフォルトの名無しさん
07/03/20 00:26:53
タイマで WM_GETTEXT 投げてりゃ良いんじゃね
280:デフォルトの名無しさん
07/03/20 00:27:19
ProcessStartInfo.RedirectStandardOutput プロパティがそれっぽい
ProcessStartInfoはProcess.Startの引数として使う
やったことないから合ってるかは知らんが
281:デフォルトの名無しさん
07/03/20 00:32:33
> 画面にずらずら
もうプログラムとか横においてだな、
詳しく書かないといけないところを省略するなよ
OCRが最も汎用的だな
282:デフォルトの名無しさん
07/03/20 00:38:37
ちょwwwOCRてwwwww
まずデジカメが必要だから買ってきて
283:デフォルトの名無しさん
07/03/20 00:45:04
フォント固定で種類が数値+α程度なら、パターンマッチも
そんなに難しくはないだろうね、
284:デフォルトの名無しさん
07/03/20 00:59:23
>280
ありがとうございました。教えてもらった方法で、
意外にも簡単にできました。でも一つ問題がありまして、
出力をリダイレクトしたら、画面の表示が出なくなりますが、
希望としては、画面にも今までどおり出しながら、同時にリダイレクトして
取り込みたいのですが、それは無理でしょうか?
285:デフォルトの名無しさん
07/03/20 01:00:52
受け取った出力をそのまま標準出力に流せばいいじゃない
286:デフォルトの名無しさん
07/03/20 01:09:57
そのためのtee
287:デフォルトの名無しさん
07/03/20 01:14:27
>285
VBからシミュレーションソフトを起動していますが、そのConsoleに
AttachConsoleする方法が分かりません。
>286
TeeってDOSにありますか?探してみたのですが無いようでした。
もっと簡単に、リダイレクトしながらconsoleにもそのまま出力する
というプロパティ設定があるといいのですが。。
288:デフォルトの名無しさん
07/03/20 07:18:16
無いならダウンロードするか作れよ。
289:デフォルトの名無しさん
07/03/20 09:41:48
自分でコンソール作ればいいじゃないか
290:デフォルトの名無しさん
07/03/20 10:32:04
あるテーブル2つのデータを持つDataSetがあります
TableA
TableB
がデータセットに格納されており、2つのテーブルは
TablA:TableB=1:Nの関係でリレーションが張られています。
TableA/TableB共にデータを追加・更新・削除した後にDBに繁栄させるためにUPDATEメソッドを実行したいのです。
ここで普通データアダプタで更新する場合
Tableという名前のDataTableがUpDateメソッドで反映される為
TableAの名前をTableに書き換えてデータアダプタでUpDateしています。
その後TableAの名前を元に戻し、
TableBの名前をに書き換えてデータアダプタでUpDateしています。
2回データアダプタを作成し、更新していますが、
同一コネクション内でトランザクションをかけている為、同時実行時などは問題なく処理できています。
しかし、この処理が非常にスマートでない気がします。
なにかもっと簡単にリレーションの張られたデータを更新する手法があるのではないかと情報を集めてみたのですが、うまい解決方法が見つかりません。
もし、なにかスマートな解決方法や考え方があるよ?とか、俺はこうしている
などの情報を少し分けてもらえないでしょうか?
よろしくお願いします。
291:デフォルトの名無しさん
07/03/20 10:35:25
アダプタで出来るのは単純な更新のみと割り切って、SQLでごいごいと書く。
292:デフォルトの名無しさん
07/03/20 10:36:29
>289
VBアプリから他のコンソール画面に文字出せるのか?
293:デフォルトの名無しさん
07/03/20 10:46:59
>>292
それは普通にムリつうか・・
実現できても手法が難しいんじゃね?
294:デフォルトの名無しさん
07/03/20 15:04:17
Relationネタに便乗
親と子の関係が
1:NならリレーションOK
0:N のデータが存在する場合エラーになるよね?
やっぱSQLで抽出して
1:N(0件含む)の関係にしてからじゃないとDataSetにリレーション設定できないの?
295:デフォルトの名無しさん
07/03/20 15:23:29
>>294
親なし
子ありってのはできないんじゃね?
外部キー設定の云々があるから防御掛けられてるような希ガス
296:デフォルトの名無しさん
07/03/20 18:05:29
VB2005のExpress Editionを使いたいのですが
XPのSP2にしないとインストールできないみたいです。
ですがupdateができなくて困っています。
SP1で使えるようにはできないのでしょうか?
297:デフォルトの名無しさん
07/03/20 18:21:51
>>296
ネット繋いでてSP2にUpDateしてないとか
今時どんな会社だよwwwww
まぁ、認証できないとか、管理者権限がないとか色々あるだろうが・・・
割ってんなら素直に2000でやっとけw
恐らくAPIのバージョン情報から取得できる部分で比較しているはずだから(その他のファイル場ジョンも見ているだろけど)
その辺の深い部分いじればいけるかもしれないけどまず無理だと思ったほうがいいんじゃないか?
むしろこの環境でしか動かないって言ってるんだからその環境に合わせるべきだと思う。
じゃないと、無理に入れれたとしても動かない可能性もあるし
298:デフォルトの名無しさん
07/03/20 19:17:21
どうなんだろ。
SP2であることがインストールの絶対条件なのであれば打つ手なしだけど、
Web関連やIIS関連で引っかかってるなら何とかなりそうな気がしないでも
ない予感を若干感じるような気がする。
299:デフォルトの名無しさん
07/03/20 22:19:18
URLリンク(www.microsoft.com)
ここに明確に書いてあるな
”Visual Studio 2005 は、次のいずれかのシステムにインストールできます。”と
XPはSP2しかダメみたいね
300:デフォルトの名無しさん
07/03/20 23:41:24
2005でも2003と同じようにエディタの上部のドロップダウンリスト使って
オーバーライドのスケルトンを挿入できるようにする設定ってある?
しかし、どうしてこの機能カットされたんだろう。
余計なことすんなヴォケ、と言いたいよまったく。
301:デフォルトの名無しさん
07/03/21 03:08:16
クラスウィザードが削除された時の衝撃よりマシだろ、慣れろ
つか、C#やVB.NETならドロップダウンでスケルトン挿入できるが
2003で、MFCやATL系のプロジェクトでスケルトン挿入なんかできたっけ
302:デフォルトの名無しさん
07/03/21 10:18:40
こめん俺はクラスウィザートは無用の長物だと思ってたw
やっぱり削除されたのかな>オーバーロードのスケルトンの自動挿入
あの機能を発展させて、シャドウとかイベントハンドラ(もちろんWithEvents使わない
場合の話だけど)の自動挿入とかも欲しかったんだけどな。
303:デフォルトの名無しさん
07/03/21 10:20:56
Override って入力してスペース入れたら入力ほじょ。
関数選択すれば、ベースよぶ雛形出る。
304:デフォルトの名無しさん
07/03/21 10:26:44
俺はovまで入れてCtrl+Space押しちゃう
305:デフォルトの名無しさん
07/03/21 11:01:00
>>303
そのポップアップは"Overrides"って入力すると嫌でも出て来るんで知ってるんだけど、
やっぱりドロップダウンで挿入も残しておいて欲しかったな。
"Overrides"って打つ手間も惜しむならPG辞めろって言われればその通りだけどさ。
あと、これは2003もそうだけど、自動インデントの機能もなんか痒い所に手が届かない仕様だよね。
余計なことする鬱陶しいオプションと、あまりにも気が利かない馬鹿なオプションしかない。
結局インデントの設定は「なし」で使ってるんだけど、これだと全行いちいち行頭から自分で
字下げしなきゃならん。
306:デフォルトの名無しさん
07/03/21 11:56:59
まあお前の趣味には興味ないしな
307:デフォルトの名無しさん
07/03/21 12:42:30
>>305
( ゚д゚)ポカーン
308:デフォルトの名無しさん
07/03/21 12:44:09
俺の予想ではMSは、ある程度は、わざとVBを使いにくくしていると思う。
出来の悪いやつほどかわいいもんだろ。そういう心理を突いているんだな。
Windowsがヘボイのもそういう理由だと思う。
309:デフォルトの名無しさん
07/03/21 12:44:56
>>308
対人はそうだろうが
ツールに関してはねぇよwwww
310:デフォルトの名無しさん
07/03/21 12:55:52
他の開発環境と競合しない部分は手抜いてるよな
311:デフォルトの名無しさん
07/03/21 13:35:49
2005はキー入力だけでポンポンコードが生成されるのが気持ちよくて好きだ
312:デフォルトの名無しさん
07/03/21 16:20:50
すみません、教えてください、ユーザーコントロール作成してフォームに貼り付けたとき、
1秒ぐらいWaitのマウスカーソルになってから何も貼り込まれないということってあるでしょうか。
その際、エラーの表示は出ず、メッセージも何も言ってきません。
ユーザーコントロールはユーザーコントロールを2つほど使って構成されているのですが、
他のものでは同様の使い方でも貼り込まれていました。
313:デフォルトの名無しさん
07/03/21 16:31:23
そのコントロールのコンストラクタとかで何かやってない?
フォームもユーザコントロールも、フォームデザイナで表示した場合、インスタンス化されるよ。
ためしにメッセージボックス表示を仕込んでみ、表示されるから。
314:デフォルトの名無しさん
07/03/21 16:43:43
>>313
そのユーザーコントロールのNew()を、
'コンストラクタ
Public Sub New()
Debug.Print("初期化!!")
MessageBox.Show("初期化!!")
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
Debug.Print("初期化!!")
MessageBox.Show("初期化!!")
End Sub
こうしてみたのですが、イミディエイトにもエラーにも表示されず、またメッセージ
も出てきませんでした、てことは初期化もされないうちに蹴られたのでしょうか・・・
315:デフォルトの名無しさん
07/03/21 16:57:41
てきとーいったかも・・・フォームだけかな?
ごめん。競艇みながらだから簡便。
316:デフォルトの名無しさん
07/03/21 18:11:04
>>312
■ 意味不明な「俺様用語」を使わないこと。(ex. 貼り込む ― 刑事かw)
■ 読み手にエスパー的な「深読み能力」を期待しないこと。(具体的にどんな処理を行っているかも、
問題が再現可能なコードも示さず「オカシイ」とか騒いでも誰にも君の問題は伝わらない)
ただ、2002は知らないが2003でも2005でも複合コントロールや継承コントロールの動作がコーディング中に
挙動不審になる場合は確かに存在する。
そういう時、一度IDEを終了してから再度ソルーションを開いてリビルドすると
問題が解消される場合が多い。
317:デフォルトの名無しさん
07/03/21 18:43:44
>>297
>今時どんな会社だよwwwww
開発機に SP2 などという危険なモノを入れるな、とか。
…ヒトゴトじゃなく、俺もいい加減 SP2 入れんとな。
すべて再インストール覚悟で。
>>298
インストーラで蹴られる。
318:デフォルトの名無しさん
07/03/21 18:48:36
サポート切れのOS(XP SP1)の方がよっぽど危険だと思うが。
いつまでも使ってるなよ。
319:デフォルトの名無しさん
07/03/21 19:18:41
そんなことよりネスケ4を全社で使い続けるうちの顧客を何とかしてください。
ASP.NETでVBブイブイいわせるのにこいつが足かせになってメンドくさい。
320:デフォルトの名無しさん
07/03/21 20:20:20
>>319
うちの顧客はIE7を入れたがってる。動作検証とらなきゃ…。
新しいのも古いのも面倒ですな。
ASP.NET繋がりで。VS2005のVB.NETでWebサイト開発してるんですが、
開発中やたら重いというか、メモリとCPU食いまくって泣きそうです。
画面12コ+帳票(ActiveReports)8枚が一つのプロジェクトになっているんですが、
まず開いて編集できるようにまで固まって5~10分待ちぼうけ。
ちょっとソース弄ろうと思えば固まって2~3分待ちぼうけ。
下手をするとそのまま固まりますorz
実行時は別に重くないです。
開発マシンはceleron 2.4GHz、メモリ768MB、HDD 60GBなんで
特に貧弱ってわけでもないと思うんですが、
タスクマネージャで見ると仮想メモリ含めて1.3GBとか行ってる(つД`)
同じような経験してる人いませんか?
321:デフォルトの名無しさん
07/03/21 20:43:15
CPUはいいけどメインメモリは2Gにしとけ、ディスプレイとメモリは大きければ大きいほどいい
322:デフォルトの名無しさん
07/03/21 20:43:50
VS2005様からみたら十分貧弱だと思うよその環境。。
まずセレロンってのがありえないし。
323:デフォルトの名無しさん
07/03/21 20:48:46
CPUよりメモリーが非常に効くよ。
普通にXP上でVS2005を立ち上げただけで大体500MBもってかれる。
そこにプロジェクト作成してデバックしたら700MB
さらに、ソリューション構成でクライアントUIとサーバWebサービスなど構成すると1G超える。
でもって、DBをSQL鯖EXなどで自分端末だと・・・。
まあ、1.5GBとかメモリーがあればとりあえずは。w
324:320
07/03/21 20:57:35
>>321-323
レス㌧です。
メモリ足らんのですか…2GBってどこの絵描きのマシンだろうorz
過去に外注さんに常駐してもらって、顧客納品用のマシン(メモリ256MB)で
開発お願いしたこともありました。
Webサービス使用のWindowsアプリでしたけど。よく血管切れなかったなぁw
上司に相談してみます。ありがとうございました!
325:デフォルトの名無しさん
07/03/21 21:04:22
どこの絵描き、って・・・いまどき1GB1万くらいだろうに。
スワッピングしてぼーっと待っている時間に時給相当をかけてみろ。
326:デフォルトの名無しさん
07/03/21 21:58:35
>>320
一応一言
P4 2.4G
Mem 512M
XP SP2
でそれより大きなソリューション開いても全然問題ないぞ
ちなみに300Mほど起動した状態で食ってるな
確かにスワップはするけどまぁ動きはするな
327:デフォルトの名無しさん
07/03/21 22:19:41
ファイルサイズの問題じゃないと思うよ。
たぶん帳票とかがメモリ馬鹿みたいに喰うんじゃないの?
あとWindows Formでもコントロールをちょっと多目に使ってる奴をデザイナで
開くと馬鹿みたいに重い。
まあごく普通のWin Formのアプリを作成するだけなら512Mで実際十分だと俺も思うけどね。
328:デフォルトの名無しさん
07/03/22 09:25:39
>>294
亀だけど、外部キーのプロパティにそのあたりの設定あるよ。
親子の厳密なチェックありも出来るし、単なる親子で参照もつよー程度も出来るし。
329:デフォルトの名無しさん
07/03/22 11:23:16
>>287
tee.exeやgrep.exeはSFUに入ってる。
ServiceForUnix。タダだからググってインストールすればいい。
330:デフォルトの名無しさん
07/03/22 11:30:24
VB2005.NETをはじめたばかりの初心者ですので、レベルの低い問いを勘弁してください。
Form1に貼ったlabel1に現在時刻を表示するプログラムですが、8時から17時の間だけlabel1のbackcolorをLightGreenにしたいのです。
どのようにしたらよいのでしょうか?
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = DateTime.Now.ToString
End Sub
End Class
331:デフォルトの名無しさん
07/03/22 11:38:18
>>330
こんな感じでええんちゃうのん?
動かしてないけどなんとなく感覚はわかってもらえるんじゃないかと
Dim NowHour As Integer = Date.Now.Hour
If NowHour >= 8 AndAlso NowHour <= 17 Then
If label1.backcolor <> Color.LightGreen Then
label1.backcolor = Color.LightGreen
End If
Else
If label1.backcolor <> Color.Transparent Then
label1.backcolor = Color.Transparent
End If
End If
332:デフォルトの名無しさん
07/03/22 11:40:53
NowHour < 17
じゃね?
333:デフォルトの名無しさん
07/03/22 11:43:15
>>332
あ~ そうだねw
多分会社の定時なんだろうけど
これじゃ17時台も色変わるなwww
334:デフォルトの名無しさん
07/03/22 12:19:36
>>330-333
ありがとうございます。
早速使わせてもらいます。
335:デフォルトの名無しさん
07/03/22 18:58:02
初心者質問ですみませんが・・・
VB2005でWindowsアプリケーションで開発しています。
現在DataSetを使い、SQLServerに非接続のデータアクセスをしています。
(テキストファイルを読み込んで接続しています。
StreamReaderを用いていますのでConnectionオブジェクトは使っておりません。)
DataSetの内容をDataGridViewに表示しており、その内容を「印刷」したいのですが。
手持ちにあるTipsにはPrintDocumentクラスを利用して
'テーブルの内容を出力
Dim dr As OrderDataSet.GoodsRow
For Each dr In OrderDataSet.Goods.Rows
'1レコードを出力
e.Graphics.DrawString( _
dr.GoodsID.ToString.PadRight(10) & _
dr.GoodsName.ToString.PadRight(20, " ") & _
dr.Price.ToString.PadLeft(5), _
f, Brushes.Black, _
x, y + (cnt * pitch))
'印刷位置を更新
cnt = cnt + 1
Next
というコードになるのですが、これだとデータソースを追加しなければなりません。
データソースを追加せず、DataGridViewの内容を「印刷」したいのですがどうしたらよいのでしょうか?
336:デフォルトの名無しさん
07/03/22 21:50:13
>>335
OrderDataSet.GoodsRowyとかって型指定されたDataSetのことかな?
DataSetの内容をDataGridViewに表示しており
とあるので、型指定されている部分を部分を修正して
Dim dr As DataRow
For Each dr In DataSet.Tables(#).rows
'1レコードを出力
e.Graphics.DrawString( _
dr("カラム名").ToString.PadRight(10) & _
dr("カラム名2").ToString.PadRight(20, " ") & _
dr(""カラム名3).ToString.PadLeft(5), _
f, Brushes.Black, _
x, y + (cnt * pitch))
'印刷位置を更新
cnt = cnt + 1
Next