VB.NET質問スレ(Part30)
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/05/17(日) 10:00:19VB.NET質問スレ(Part29)
http://pc12.2ch.net/test/read.cgi/tech/1235206416/l50
テンプレは>>2〜
0002デフォルトの名無しさん
2009/05/17(日) 10:00:43http://msdn.microsoft.com/ja-jp/library/ms229284.aspx
どぼん!のVB道のトップページとTipsページ
http://dobon.net/vb/
http://dobon.net/vb/dotnet/index.html
Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
宇宙仮面の C# プログラミング
http://uchukamen.com/
.NET TIPS
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
緑のバイク ★ 初めてのC# プログラム全般
http://homepage3.nifty.com/midori_no_bike/CS/
VB.NETとC#でデザインパターン
http://hccweb1.bai.ne.jp/tsune-1/
匣の向こう側
http://www.ne.jp/asahi/nami/mei/index.html
WisdomSoft
http://wisdom.sakura.ne.jp/
じゃんぬねっと
http://jeanne.wankuma.com/
どっとねっとふぁん - C# Tips And Samples -
http://homepage3.nifty.com/dotnetfan/index.html
http://dotnetfan.org/
C#プログラミングTips
http://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html
0003デフォルトの名無しさん
2009/05/17(日) 10:01:02http://www.codeproject.com/vb/net/
the GotDotNet Home Page
http://www.gotdotnet.com/
KEN's .NET
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/index.html
Cetus Links: 19,498 Links on Objects and Components / .NET
http://www.cetus-links.org/oo_dotnet.html
HIRO's.NET
http://vbdotnet.fc2web.com/index.html
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
http://www.atmarkit.co.jp/fdotnet/special/onlineres/onlineres_01.html
.NETでいきまっしょい!
http://santamartadotnet.hp.infoseek.co.jp/
これがほしかった!厳選サンプルツール集
http://anetm.com/dev/tools/vbdotnet.htm
ぬーやんのdotNET講座
http://www.geocities.jp/nuu_yan/dotNET/index.html
PINVOKE.NET
http://www.pinvoke.net/
WinAPI Database for VB Programmer
http://www.winapi-database.com/
0004デフォルトの名無しさん
2009/05/17(日) 10:01:35http://custom.programming-in.net/
CodeZine
http://codezine.jp/
ConvertCSharp2VB
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
@IT:.NET Tools
http://www.atmarkit.co.jp/fdotnet/tools/index/index.html
SharpLibrary Redirector
http://www.sharplibrary.com/
MSDN アカデミック アライアンス 技術資料
http://www.microsoft.com/japan/msdn/academic/articles/
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
(VS2005) http://www.microsoft.com/japan/msdn/thisweek/300x10/
(VS.NET 2003) http://www.microsoft.com/japan/msdn/thisweek/wednesday/
PAPA'n VB
http://papanvb.i-love-vb.net/
(旧コンテンツ) http://www.mitene.or.jp/~sugisita/index_old.html
VB レスキュー花ちゃん
http://www.bcap.co.jp/hanafusa/dotnet/index.html
VB中学校
http://homepage1.nifty.com/rucio/main/main.htm
初心者から中級者のためのVB
http://www7b.biglobe.ne.jp/~vb_beginner2008/
0005デフォルトの名無しさん
2009/05/17(日) 10:43:43>1 乙
0006デフォルトの名無しさん
2009/05/17(日) 11:53:23Dim array(100) As String
Dim i As Integer = 0
Do Until i = 10
array(i) = Str(i)
Loop
こんな感じで書くと配列の要素数が100に固定されてしまうので、イメージとしては
Dim array() as string
として、iの値が変化するものとし、iの数だけ配列に要素を追加したいと思っています。
Redim Preserveで動的に配列が作れるようですが処理が重いようなので、もっと効率よく動的な配列を作れないかと思っています。
0007デフォルトの名無しさん
2009/05/17(日) 12:00:34Dim array(100) As String
Dim i As Integer = 10
Dim c As Integer = 0
Do Until c = i
array(c) = Str(c)
c = c + 1
Loop
こんな感じでiの値が変化し、array(100)と固定せずに、iの数だけ動的に配列を追加したいということです。
0008デフォルトの名無しさん
2009/05/17(日) 12:13:33>6
arrayがSharedでもされてるの?
どうしても配列じゃなきゃダメってことでもないなら、素直にListやDictionaryを使う。
とりあえず、そのコードだとarrayの長さを固定しておく必要性が全く感じられないので、もっと良い例を頼む。
0009デフォルトの名無しさん
2009/05/17(日) 12:47:08どうもです。
こんな感じでiniファイルから値を読み取ろうと思っているんですが、
Imports System
Imports System.Text
Imports System.Runtime.InteropServices
Public Declare Unicode Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringW" ( _
<MarshalAs(UnmanagedType.LPWStr)> ByVal IpApplicationName As String, _
<MarshalAs(UnmanagedType.LPWStr)> ByVal IpKeyName As String, _
<MarshalAs(UnmanagedType.LPWStr)> ByVal IpDefault As String, _
<MarshalAs(UnmanagedType.LPWStr)> ByVal IpReturnedString As Text.StringBuilder, _
ByVal nSize As Integer, _
<MarshalAs(UnmanagedType.LPWStr)> ByVal IpFileName As String _
) As Integer
Dim strFilePath As String = ".\Config.ini"
Dim intLength As Integer
Dim strReturnValue As New Text.StringBuilder(100)
Dim i As Integer = 0
Dim array() As String
'指定されたキーの値(文字列)を.iniファイルから読み込みます。
Do
intLength = GetPrivateProfileString("Test", "Test" & i, Nothing, strReturnValue, strReturnValue.Capacity, strFilePath)
If intLength = 0 Then Exit Do
ReDim Preserve array(i)
array(i) = strReturnValue.ToString.Substring(0, intLength)
i = i + 1
Loop
0010デフォルトの名無しさん
2009/05/17(日) 12:47:21[Test]
Test0=あああ
Test1=いいい
Test2=ううう
ReDim Preserveが重いという話を聞いたので、他に動的に配列を追加する方法はないかと思ったのです。
ListやDictionaryは使ったことがないんですが、どんな感じで使うものなんでしょうか?
また、ArrayListなんかはどうなんですかね?
0011デフォルトの名無しさん
2009/05/17(日) 13:23:39Dim AList As New ArrayList
i = 0
Do
intLength = GetPrivateProfileString("Test", "Test" & i, Nothing, strReturnValue, strReturnValue.Capacity, strFilePath)
If intLength = 0 Then Exit Do
AList.Add(strReturnValue.ToString.Substring(0, intLength))
i = i + 1
Loop
For c = 0 To AList.Count - 1
Debug.Write(AList(c))
Next c
0012デフォルトの名無しさん
2009/05/17(日) 14:05:260013デフォルトの名無しさん
2009/05/17(日) 14:21:11VisualStudioのインスコ方法からスタートして、本に書いてある通りにコードを打ち込みながら簡単なプログラムを作っていくような本とか。
即効性は無いし効率も大して良く無いけど挫折はし辛い
0014デフォルトの名無しさん
2009/05/17(日) 20:47:53質問させてください
いまAxWebBrowserにinnerHTMLで
リンクを追加しようと思ったのですが、
innerHTML="<a href=""C:\Documents and Settings\hoge\hige[1].html"">hoge</a>"
のような場合だと書き込み時に空白や[]が
URLエンコード?されてうまくいきません。
このようなパスの場合は、どのように記述すれば良いでしょうか?
よろしくお願いします
0015デフォルトの名無しさん
2009/05/17(日) 21:13:580016デフォルトの名無しさん
2009/05/17(日) 21:43:370017デフォルトの名無しさん
2009/05/17(日) 21:46:54MSDNのヘルプ見たらデフォルトのタイマーだと1ミリ秒が最小と書いてありました。
ミリ秒より小さい時間単位は扱えないのでしょうか?
なにか良い方法を知ってる人いたら教えてください。
001814
2009/05/17(日) 22:40:48試してみましたが、正常に表示はされるものの
タグごと表示されるのであまり意味が無い感じですね
色々試した結果
Document.Write()でなら正常に書き込めるのですが
リンクをクリックしても反応しませんでした。。。
もうちょっと色々試してみます
ありがとうございました
0020デフォルトの名無しさん
2009/05/18(月) 17:14:58新規でwindowフォーム作成、ツールボックスでメニュー追加。標準設定で初期化。
マウスのイベント組んでみると。
private: System::Void 新規作成NToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
MessageBox.Show("メインの2がクリックされたよ。");
}
error C2143: 構文エラー : ';' が '.' の前にありません。
どう修正すればおk?
0021デフォルトの名無しさん
2009/05/18(月) 17:22:290022デフォルトの名無しさん
2009/05/19(火) 11:31:570023デフォルトの名無しさん
2009/05/20(水) 02:27:53まぁ、なんてあわてんぼうさんなのかしら
0024デフォルトの名無しさん
2009/05/20(水) 19:18:09Me.PictureBox1.Image = Image.FromFile("C:\Documents and Settings\Owner\My Documents\普通.jpg")
のようにして画像ファイルを取得できますが、
プログラムとかと一緒に画像ファイルを入れたときは、画像のフルパスはどうやって取得すればよいのでしょうか?
いわゆる展開したフォルダの中にあるファイルを読み込みたいときにどうするか、が分かりません。
よろしくお願いします。
0025デフォルトの名無しさん
2009/05/20(水) 19:35:09002624
2009/05/20(水) 20:10:00返信ありがとうございます。
Application.StartupPathをググってみたのですが、よく分かりません。
.slnファイルがあるフォルダに画像データを入れて、
Dim FolderName As String
FolderName = Application.StartupPath
Me.PictureBox1.Image = Image.FromFile("?\普通.jpg")
この?の部分に何かを入れるのでしょうか?
0027デフォルトの名無しさん
2009/05/20(水) 20:24:53002824
2009/05/20(水) 20:34:52できたんですが、おかしくなりました。
.exeファイルがあるフォルダの中に画像も入れて、
Dim FolderName As String
FolderName = Application.StartupPath
MsgBox(FolderName)
Me.PictureBox1.Image = Image.FromFile("Application.StartupPath\普通.jpg")
とやったら出来たんですが、MsgBox(FolderName)を消して実行してみるとエラーが出て、戻してみてもエラーが出るようになりました。
「アプリケーションのコンポーネントでハンドルされていないエラーが発生しました」と表示されます。
0029デフォルトの名無しさん
2009/05/20(水) 20:42:140030デフォルトの名無しさん
2009/05/20(水) 20:43:250032デフォルトの名無しさん
2009/05/20(水) 21:09:45これじゃ駄目なの?
実行ファイルがあるところにtestってフォルダ作ってそこに(ry
003324
2009/05/20(水) 21:27:08駄目でした。
再起動させても駄目でした。
初めはうまくいったのに。
レスありがとうございます。
みなさんのおっしゃるとおり、自分の素養を知らなければならないのかもしれません。
0034デフォルトの名無しさん
2009/05/20(水) 23:24:44ヘルプで調べてみる。
2. 何かのプロパティってのはわかるから、中に何が入ってるのか調べてみる。
3. パスが入ってるのがわかるから、画像ファイル名と連結すればいい。
4. 文字列を連結するにはどうすればいいだろう?
5. Application.StartupPath & "普通.jpg" とかすればいい。
とかって展開するもんだろ、普通。
003524
2009/05/21(木) 01:33:40Application.StartupPathの方はどんなにやっても無理でした。
しかし、リソースに画像ファイルを埋め込んで、それをMy.Resourcesの形で記述したら表示できました。
一応、以下に試して失敗したものを書きます。
Me.PictureBox1.Image = Image.FromFile(Application.StartupPath \ "普通.jpg")
Me.PictureBox1.Image = Image.FromFile(Application.StartupPath "\普通.jpg")
Me.PictureBox1.Image = Image.FromFile("Application.StartupPath" \ "普通.jpg")
Me.PictureBox1.Image = Image.FromFile(""Application.StartupPath" \ "普通.jpg"")
なにぶん初心者ですので、みなさまから見たら「なんて下手なコードを書いてるんだ?」と思われるかもしれませんが、ヘルプは読みましたし、ひたすら検索しまくりました。
また何かありましたらよろしくお願いします。
ありがとうございました。
0036デフォルトの名無しさん
2009/05/21(木) 01:36:210037デフォルトの名無しさん
2009/05/21(木) 01:37:13文字列の連結方法がわかってないだけか。
0038デフォルトの名無しさん
2009/05/21(木) 01:43:50本を買えとは言わないけど、VB.netの基礎の基礎から解説してる適当なサイトを通読したほうがいいよ。基礎をすっ飛ばすとロクなものは作れない
0039デフォルトの名無しさん
2009/05/22(金) 00:01:37どうすればいいですか、いくら調べてもわかりません。
エラー 29
COM 参照 "GridDTC" の依存関係を決定できませんでした。タイプ ライブラリ/DLL の読み込みエラーです。 (HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)) Project1
エラー 31
COM 参照 "VBRUN" の依存関係を決定できませんでした。種類が一致しません。 (HRESULT からの例外: 0x8002802A (TYPE_E_WRONGTYPEKIND)) Project1
0040デフォルトの名無しさん
2009/05/22(金) 06:10:070041デフォルトの名無しさん
2009/05/23(土) 09:34:26IpcClientChannelの生成はクライアントプロセスに一つだけでよいのでしょうか?
サーバー側はプロセス複数個を用意して各一つだけ要求を受け付けるようURIで割り振ります。
SAOで生成されるオブジェクトとクライアントチャネルの関係がはっきりしません。
IpcClientChannelに名前を与えて複数生成することもできるようですし…。
0042デフォルトの名無しさん
2009/05/23(土) 20:49:30基本仕様としてデザイナが開けなくなって、まあこれはいいとして(よくないけど)
継承元のフォームにNotifyIconを作成したら、そのプロジェクト起動時にデバッグ開始してないのに作成したNotifyIconが常駐するようになったんだが・・・
右クリックすると設定したContextMenuStrip出てくるから試しにApplication.Exit()やってみたら普通に異常終了したし
別に趣味でやってるからこんくらいのバグ許容できるけどさー・・・
物売るってレベルじゃねーぞ!
0043デフォルトの名無しさん
2009/05/23(土) 21:59:16ttp://d.hatena.ne.jp/the_crown/20070521/p1
0044デフォルトの名無しさん
2009/05/23(土) 22:50:500045デフォルトの名無しさん
2009/05/23(土) 23:52:42ありがとう!勉強が足りなかった!
特に
0046デフォルトの名無しさん
2009/05/23(土) 23:54:32今までDesigner.vb直接いじってたから超楽になった!本当にありがとう!
興奮して途中で送信してしまいました。すいません。
0047デフォルトの名無しさん
2009/05/24(日) 02:28:440048デフォルトの名無しさん
2009/05/24(日) 16:17:592chのトリップを作成するプログラムを教えてください。
ライブラリでも何でもいいのでお願いします。
0049デフォルトの名無しさん
2009/05/24(日) 16:38:370050デフォルトの名無しさん
2009/05/24(日) 17:54:540051デフォルトの名無しさん
2009/05/24(日) 18:05:44http://kenmon.hp.infoseek.co.jp/contents/Monalib.htm
>>48
MSComm
0052デフォルトの名無しさん
2009/05/24(日) 19:58:07超感謝でつ
0053デフォルトの名無しさん
2009/05/24(日) 22:13:49フォームを印刷するプログラムを書きたいと思っていますが、
特定のラベルやフォームを印刷しないように設定することは可能ですか?
よろしくお願いします。
0054デフォルトの名無しさん
2009/05/24(日) 22:29:050055デフォルトの名無しさん
2009/05/24(日) 23:48:420056デフォルトの名無しさん
2009/05/25(月) 00:57:18すみません、自己解決しました。ありがとうございました。
0057デフォルトの名無しさん
2009/05/25(月) 01:13:220058デフォルトの名無しさん
2009/05/25(月) 01:51:34許してやれ
0059デフォルトの名無しさん
2009/05/25(月) 03:14:10もっとやわらかく諭しなさい?
0060デフォルトの名無しさん
2009/05/25(月) 23:47:410061デフォルトの名無しさん
2009/05/26(火) 02:29:59デザイナ閉じる→リビルド→デザイナ開く→(゚Д゚)ウマー
0062デフォルトの名無しさん
2009/05/26(火) 06:39:15リビルド、ビルド回復不可/(^o^)\ 情報サンクス
しゃーないんで、ソースをまんま新しいプログラムに貼り付けたorz
0063デフォルトの名無しさん
2009/05/26(火) 17:38:19表示名をできるだけ素早く取得したいのですが、.NETFrameworkでサポートして
いましたら教えて頂きたく。
たとえば C:\Documents and Settings\All Users\Documents\My Pictures
の場合には、「共有ピクチャ」を表示したいなどですが、
あらゆるフォルダに対して毎回 Environmentクラスを使って「特殊フォルダ」
かどうかを調べて、該当したらあらかじめ用意しておいた文字列を割り当てる
方法ではなく、フォルダのフルパスを与えたら高速に一発で表示名を返してくる
ようなメソッドがあればありがたく。
Directoryinfoクラスではプロパティ、メソッドともに扱っていないようでした。
現状、.NETではこれはサポートしていないでしょうか?
0064デフォルトの名無しさん
2009/05/26(火) 18:58:16006563
2009/05/26(火) 20:19:40Shell32.Shellオブジェクトを使うのですね、やってみたらできました!!
助かりました。またよろしくお願いします!
0066デフォルトの名無しさん
2009/05/27(水) 15:35:00クラスの追加で新しいクラスを追加、そしてそのクラスにクラスをLoad
した時、命令が実行されるというのを作りたいのですがLoadがうまくいかず
波線が出てしまいます。どうすればよいでしょうか。
コードは
Public Class Class1
Private Sub Class1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load←この部分が波線になる
MessageBox.Show("hallo")
End Sub
End Class
0067デフォルトの名無しさん
2009/05/27(水) 15:51:16波線にマウスカーソルを合わせ、表示されるメッセージを読む。
006866
2009/05/27(水) 16:11:16といわれましても、対処方は載っていませんし。
ググッてもでてこないので、わからないのですが
0069デフォルトの名無しさん
2009/05/27(水) 16:25:19子供の使いじゃないんだからエラーメッセージを書くくらいはしようや。
とは言え、
「新しいクラスを追加」したんなら、それは Form/Control/UserControl の
いずれでもなく、基底クラスは Object のはず。なので、Load イベント
なんかない。
くらいなら予想できるが。
007066
2009/05/27(水) 16:44:25成るほど、このままではLoadは使えないんですね。
ありがとうございました。
0071デフォルトの名無しさん
2009/05/27(水) 16:52:480072デフォルトの名無しさん
2009/05/27(水) 18:00:140073デフォルトの名無しさん
2009/05/28(木) 23:48:05バイナリデータの出力みたいなんですが…。
0074デフォルトの名無しさん
2009/05/28(木) 23:51:2716進数の形でテキストとして出力するならOK。
0075デフォルトの名無しさん
2009/05/28(木) 23:59:010076デフォルトの名無しさん
2009/05/29(金) 00:05:142chに書かれてる文字列以外理解できないならスマン
0077デフォルトの名無しさん
2009/05/29(金) 00:05:25まず、何ができて何ができないのか、きちんと整理してきてください。
0078デフォルトの名無しさん
2009/05/29(金) 10:12:57ピアノの鍵盤をボタンで作っているのですが、黒鍵盤を白鍵盤の上に重ねようとすると、
黒鍵盤の大きさが途切れてしまい、小さくなってしまいます。
ボタンを重ねることってできないのでしょうか?
お解りになる方がおられましたらご教授ください。
0079デフォルトの名無しさん
2009/05/29(金) 10:25:17ご教授は出来んが、要は黒鍵が
はっけん (なぜか変換(ry) の下にもぐりこんでる状態?
0080デフォルトの名無しさん
2009/05/29(金) 10:45:32への接続をするコードを書いたのですが、それをどう入れたいフォームに呼び出す
のかがわかりません。どうしたらよいでしょうか、ちなみにバージョンは2005です。
0081デフォルトの名無しさん
2009/05/29(金) 11:02:10レスありがとうございます。
そうです。白鍵盤の下に黒鍵盤の一部がもぐりこんでしまっているんですよ。
潔くボタンをあきらめた方が良いのかな、と思ってしまいます。
0082デフォルトの名無しさん
2009/05/29(金) 12:30:19┃┃
┃┃ こういう形のボタンを作るのがベストなんだろうけど
┃┗┓ それは茨の道なので、「.net ボタン Zオーダー」あたりで
┃ ┃ 検索するよろし。
┃ ┃
┃ ┃
┗━┛
008483
2009/05/29(金) 14:23:20連レスすみません。
0085デフォルトの名無しさん
2009/05/29(金) 19:27:56Clickイベントでどれが押されたか座標で判定する方が早くて綺麗
0087デフォルトの名無しさん
2009/05/29(金) 20:46:31その場合「鍵盤が押された」表現はどうするのかな?
0088デフォルトの名無しさん
2009/05/29(金) 20:52:060089デフォルトの名無しさん
2009/05/29(金) 21:02:05用意しないといけない
(まあマウスでクリックだから複数鍵同時打鍵考えなくて
いいのは救いだが)
0090デフォルトの名無しさん
2009/05/29(金) 21:11:30009183
2009/05/29(金) 21:12:24レスありがとうございます。
鍵盤が押された画像ですが、かなり用意しなければなりませんので確かに大変かもしれません。
言い忘れていましたが、マウス、キーボードどちらの入力も可能にしています。
マウスは複数同時に押すことはできませんが、キーボードからですと複数同時が可能となっています。
てんやわんやです。
0092デフォルトの名無しさん
2009/05/29(金) 21:33:024つの鍵の形とそれぞれ押された状態で全部で8枚あれば足りる
0093デフォルトの名無しさん
2009/05/30(土) 14:26:38Timestringで時間を取得すると「00:00:00」という風になります
これを数字として認識できるように「000000」という風に区切り無しにする方法はあるでしょうか?
もしくは「00100100」という風に置き換えるという方法でもいいです
0094デフォルトの名無しさん
2009/05/30(土) 15:39:45DateTime.Now.Ticks使えばいい
0095デフォルトの名無しさん
2009/05/31(日) 00:02:14どういうものでどういう用途か知らんが
多分そういうのは暗号とは言わない方がいい。
0096デフォルトの名無しさん
2009/05/31(日) 01:30:480097デフォルトの名無しさん
2009/05/31(日) 10:57:06OS:WindowsXP ProSP3
Ver:Visual Basic .net 2002
実行環境
OS:WindowsXP ProSP3/HomeSP3
.NET Framework:1.070
フリーソフトを作ろうと思っています。
データベースについては、今はスタンドアローンでSQLServerとつないで動作確認をしているのですが、
配布する際に「クライアント側でもデータベースを入れてくれ!」というわけにはいかないので、
代替できるものを探しています。
ソースコード内部のSQLは極力変更したくないので、テキストファイルなどでの代替ではしたくないのですが、
可能でしょうか?
以上、よろしくお願いいたします。
0098デフォルトの名無しさん
2009/05/31(日) 13:51:32.NET Framework:1.070で使えるかしらないけど、SQLite
0100デフォルトの名無しさん
2009/05/31(日) 20:41:57無料でもさすがに2002よりはマシだろ
0101デフォルトの名無しさん
2009/05/31(日) 20:47:49配信終了してたはず
0102デフォルトの名無しさん
2009/05/31(日) 20:50:102008は普通にダウンロードできる
0103デフォルトの名無しさん
2009/05/31(日) 23:25:11新規登録をしたい場合、データベースにコンボボックスを通じて登録したいのですが
このままではコンボボックスに表示させるだけでとまってしまいます。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dim cnn as adodb.connection
dim rs as adodb.recordset
〜データベース接続〜
dim personalinfo as string
With Me.ComboBox1.Items
.Add(New PersonalInfo(1, "aaa"))
.Add(New PersonalInfo(2, "bbb"))
.Add(New PersonalInfo(3, "ccc"))
End With
End Sub
ここまでで表示をすることは可能なのですが、以下から
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
dim sql as string
sql = "SELECT FROM *~~~"と仮にすると
??????
End Sub
ここからコンボボックスとデータベースを繋ぎ、登録ボタン押すとデータベース
に追加できるようにしたいのですが、繋ぐためのコードがよくわかりません。
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200312/03120132.txt
こちらを参考にしたのですがどう繋げたらいいかわかりませんでした。お願いします。
0104デフォルトの名無しさん
2009/05/31(日) 23:48:37とりあえず、INSERT 文でも投げれ。
0105デフォルトの名無しさん
2009/06/01(月) 00:02:13例えばこの部分で、
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
dim sql as string
sql = "INSERT INTO ****" & _
" VALUE '" + combobox1 + "' ;"
End Sub
とすることでしょうか?
0106デフォルトの名無しさん
2009/06/01(月) 00:14:29それから、マルチポストは止めような。
0107デフォルトの名無しさん
2009/06/01(月) 00:18:22デバッグしても原因が見つからず、暫定的にプログラム側で使用コア数を制限したいのですが、
そのようなオプションはご存じないでしょうか?
assemblyの中に書くのかとは思うのですが見つけられず。
あと、外部接続するのですが、WindowsFWの初回警告を出させる方法ご存じありませんか?
どうぞよろしくお願いします。
0108デフォルトの名無しさん
2009/06/01(月) 00:20:53気をつけます。あせっていたもので気にせず投稿していました。すみません。
0109デフォルトの名無しさん
2009/06/01(月) 00:21:50とりあえず、SetProcessAffinityMask() とか?
0110デフォルトの名無しさん
2009/06/01(月) 02:03:53Public Function SetProcessAffinityMask(ByVal handle As IntPtr, ByVal mask As UIntPtr) As Boolean
End Function
sub a()
Dim vHandle As IntPtr
vHandle = Process.GetCurrentProcess().Handle
SetProcessAffinityMask(vHandle, New UIntPtr(&H1))
end sub
で解決しました。ありがとうございました。
0111デフォルトの名無しさん
2009/06/02(火) 19:50:56win32APIと.netはまったく別ものなのですか?win32api上に.netが載っていると思っていたのですが
ttp://www.atmarkit.co.jp/fdotnet/easyvs/easyvs01/easyvs01_01.htmlを見ました。
また、最近のVisual studioは.net上で動いているのですか_
0112デフォルトの名無しさん
2009/06/02(火) 20:13:39Win32APIネイティブのコントロールを使わない新しいGUIフレームワーク(WPF)も使える
VisualStudio自体は.NETアプリじゃないけど.NETに激しく依存してて.NETなしでは成り立たない
0114デフォルトの名無しさん
2009/06/03(水) 23:52:26VB2008にてSeriaPortを使って通信を行うプログラムを書いています
それで、通信中に強制的に通信ケーブルを抜く操作を行うと、通信を停止後、再接続を試みるという処理を行わせたいのですが
通信中に通信ケーブルを引き抜くと、当然通信は止まってくれるのですが、その後、そのポートに接続を行おうとすると
「ポートにアクセスできません」といex.messageを受信してしまいます。
再び接続をするには、ソフト自体を立ち上げなおさないといけません
これをソフト上の処理で、再説z区できるようにしたいのですがどうすればよいと思われますか?
0115デフォルトの名無しさん
2009/06/03(水) 23:54:15Hairetu(100)()
の違いって・・・?
多次元配列?二次元配列?頭がこんがらがりそう
0116デフォルトの名無しさん
2009/06/04(木) 00:03:25開きっぱなしになってるんだろうね。
具体的にどういう方法で通信をやってるの?
0117114
2009/06/04(木) 00:20:45どういう方法と言いますと?
通信方法はこちらからコマンドを送って、相手の汎用機器から返信をもらう形です。
接続処理は普通に.open()と.close()です。
この場合、強制的にケーブルを外すので、close処理が行われないことになりますが。
それで再度openを行っても、おっしゃられるとおり、開きっぱなしになってるんだと思います。
よく分からなかったんですが、意味合い的にポートの開放(Dispose)とかやってみたんですが、これもアクセスが拒否されてしまいました
0118デフォルトの名無しさん
2009/06/04(木) 19:14:28VB6のようにアルファベット順で出来るようにすることは出来ますか?
0119デフォルトの名無しさん
2009/06/05(金) 10:58:58前者は、宣言した時点で 101×101 の固定サイズの配列ができ、そのすべてについて
いつでもアクセスできる。
0 1 2 100
0 ■■■...■■
1 ■■■...■■
:
100 ■■■...■■
後者は、宣言しただけでは「可変サイズの配列」の、101 の配列ができるのみ。
実際にアクセスする前に
For i As Integer = 0 To 100
Redim Hairetu(i)(100)
Next i
などとしないといけないが、使用しない部分は Redim しなくてよかったり、
最初の添字が変わるごとにサイズを変えたりもできる。
0 1 2 100
0 ■■■...■■ (Hairetu(0) は 0〜100)
1 (Hairetu(1) は Nothing)
2 ■■■ (Hairetu(2) は 0〜2)
:
100 ■■■...■ (Hairetu(100) は 0〜99)
でもメリットはメモリの節約くらい。
(速度にも影響するかもだが)
0120デフォルトの名無しさん
2009/06/05(金) 18:01:41> でもメリットはメモリの節約くらい。
Array の各種メソッドが使えるってメリットは大きい
むしろ多次元配列こそメリットがないと思うね
0121デフォルトの名無しさん
2009/06/05(金) 20:35:19いろいろ多次元配列は冷遇されてるからそのうち公式に非推奨になるかもね
0122デフォルトの名無しさん
2009/06/05(金) 20:47:28VB.netでクラスの敬称などを使用していて、日本語でコメントしてあり、大規模である。
という条件を満たしているものをご存知でしたら、教えてください
0123デフォルトの名無しさん
2009/06/05(金) 20:54:000124114
2009/06/05(金) 22:26:130125115
2009/06/05(金) 22:36:22私は前者は、データを格納するためのまんまデータの下駄箱のような配列として使用して
後者は、一時的にSplitなどで連続なデータを格納したいときに使用していました
使い分けてました
ちなみに、どちらが多次元配列とジャグ配列は別物なんですか?
0127デフォルトの名無しさん
2009/06/05(金) 22:55:25多次元配列は連続したメモリ領域
ジャグ配列は配列の配列
.NETでは通常区別する
0128デフォルトの名無しさん
2009/06/06(土) 17:46:02のデータをインポートしたり、クエリーの結果をExcelファイル形式でエクスポートした
りしてますが、Accessを使わずに、VB.NET等から同様のことってできますやろか。
0129デフォルトの名無しさん
2009/06/07(日) 09:54:000130デフォルトの名無しさん
2009/06/07(日) 09:55:330131デフォルトの名無しさん
2009/06/07(日) 09:56:450132デフォルトの名無しさん
2009/06/07(日) 13:53:550133デフォルトの名無しさん
2009/06/07(日) 13:56:590134デフォルトの名無しさん
2009/06/07(日) 13:57:390135デフォルトの名無しさん
2009/06/07(日) 15:40:38ComboBoxでスタイルをDropDownにした時、テキストボックス部を描画しているイベントは何でしょうか?
オーナードロウで描画する際DropDownListであればOnPaintで描画したものがそのまま出るのですが、
DropDownのときはOnPaintで描画したものがテキストボックス部の描画で上書きされて隠れてしまいます。
DrawItemは違うみたいで、ちょっと袋小路です・・・。
0136デフォルトの名無しさん
2009/06/07(日) 22:01:34【魔力】書き込むと願いが必ず叶うスレ【強力】409
だろ
0137デフォルトの名無しさん
2009/06/08(月) 20:04:400138デフォルトの名無しさん
2009/06/09(火) 11:08:110139デフォルトの名無しさん
2009/06/09(火) 12:21:52コモンダイアログのデフォルトパスを
「ネットワーク全体」にしたいのですが、
参考になるサイトがどうにもみつからないんですけど
どのようにすればいいんでしょうか?
0140デフォルトの名無しさん
2009/06/11(木) 13:45:570141、
2009/06/11(木) 21:27:39exeへパイプでデータを流す処理を考えています。
どんどんデータが流れてくるのでexeはループでデータが来るのを待っているのですが
そのことによってexeのほかの処理が動けません。どうすればよいですか?
0142デフォルトの名無しさん
2009/06/11(木) 21:29:350143デフォルトの名無しさん
2009/06/12(金) 10:50:23キーボードを押すと音が鳴るプログラムを作成しています。midiOutなどを使ってやっています。
音は出るのですが、うまくいかないことがあります。
例えば、キーボードの"A"を押すと、"ド"の音が出るようにします。それで、Aを押すと、"ド"の音は出るのですが、
長押しですと、ドーー ドドドドドドド…といった風に途中から連続して音が出てしまいます。
きちんと音を伸ばして鳴らしたいので、何か良い方法はありませんでしょうか?
0144デフォルトの名無しさん
2009/06/12(金) 12:17:53そういうことができるAPIがあるかは知らんけど
0145デフォルトの名無しさん
2009/06/12(金) 15:46:54x = -1
y = 0
z = 1
End Enum
列挙型で宣言した値は計算に使って値を変えていくことは可能でしょうか?
0146デフォルトの名無しさん
2009/06/12(金) 15:52:120147デフォルトの名無しさん
2009/06/12(金) 16:17:50ありがとうございました
0148デフォルトの名無しさん
2009/06/12(金) 20:29:26ドーッって、音が鳴り終わるまで、入力されても無視するってすればいいんじゃない?
そのためには、音が鳴っている状態を取得しないとだと思うけど。
適当にググったら↓使えそうな気がする
【VB.NET】 MCIで音楽再生 その1
http://tenjiku.exblog.jp/10395825/
MIDI、MP3などの音楽ファイルを再生する
http://dobon.net/vb/dotnet/programing/playmidifile.html
0149143
2009/06/13(土) 08:50:35ありがとうございます。KeyUp,KeyDownは使用しているのですが、うまくいきません。
もう少し試行錯誤してみます。
>>148
その方法があったとは・・・。ですが和音も鳴らしたいので、その方法だと和音が鳴らない気が。
むむむ、もう少し考えてみます。
お二方ともご回答ありがとうございました。
0150デフォルトの名無しさん
2009/06/13(土) 15:15:48キーイベントを受けたとこで、どのキーがすでに押されているかを判定するってすればどう?
全部のキーイベントを無視するんじゃなくて。
押されていないキーの音は鳴らし、押されているキーの音は何もしない。
0151デフォルトの名無しさん
2009/06/13(土) 17:58:49MIDIを使用する(VB.Net)
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200411/200411_04110004.html
0152デフォルトの名無しさん
2009/06/13(土) 18:14:570153デフォルトの名無しさん
2009/06/13(土) 18:19:37レポートウィザードで作れるピボットテーブルをベースに色々と追加したい要素があるんですが、どうやりゃ良いのかいまいちわからない。
一応、やりたいことは今年度のピボットテーブルに前年度の合計とか、前年度比とかの行とか列を追加することです。
0154デフォルトの名無しさん
2009/06/13(土) 22:14:15勉強になるわぁ。
0155デフォルトの名無しさん
2009/06/13(土) 22:59:08MIDIプログラミング
http://eternalwindows.jp/winmm/midi/midi01.html
Windows MIDI プログラム入門
http://ourworld.compuserve.com/homepages/Satsuki_Kojima/winprog.htm
MIDIを鳴らす
http://www13.plala.or.jp/kymats/study/MULTIMEDIA/midiOutShortMsg.html
詳説MIDI規格
http://www.pluto.dti.ne.jp/~daiki/Midi/Midi.html
自作楽器「MIDIテルミン」の製作:CodeZine:
http://codezine.jp/article/detail/172
MIDI音源の利用
http://www2.pf-x.net/~shink/api_midi.html
VB.NET でMIDIOUTをOPENするには?
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200308/03080039.txt
16進数、8進数、2進数の文字列を整数に変換する
http://dobon.net/vb/dotnet/programing/converthex.html
0156デフォルトの名無しさん
2009/06/13(土) 23:44:12http://maglog.jp/midi/Article.html&type=1&subtype=194372&page=1
MSDN midiOutOpen
http://msdn.microsoft.com/ja-jp/library/cc410558.aspx
デバイスは送られたデータの再生が終わるとコールバック関数にMM_WOM_DONEメッセージ(WOM_DONE)を送ります。
0157デフォルトの名無しさん
2009/06/14(日) 16:50:16text1、text2、text3というチェックボックスがあったとして、
For i = 1 To 3
If text[i].Checked = False Then
MsgBox("エラー:text" & i)
End If
Next
という風にしたいのですがtext1の1を動的に変えたい場合はどうすればいいのでしょうか?
0158デフォルトの名無しさん
2009/06/14(日) 16:55:460159デフォルトの名無しさん
2009/06/14(日) 19:48:260160デフォルトの名無しさん
2009/06/15(月) 09:24:220161デフォルトの名無しさん
2009/06/15(月) 13:56:300162デフォルトの名無しさん
2009/06/15(月) 14:36:140163デフォルトの名無しさん
2009/06/16(火) 12:21:220164デフォルトの名無しさん
2009/06/16(火) 12:29:34せめて SQLDataAdapter や DataSet の使い方くらい入門書で勉強しなさい。
0165デフォルトの名無しさん
2009/06/16(火) 20:09:41そのまま何回やっても勝手に表示方法が変わったりはしません。
どうすれば良いかと言うと、表示方法を変えるプログラムを作るしかないでしょう。
>>164
たぶんこのレベルの話かと
0166デフォルトの名無しさん
2009/06/16(火) 22:45:40今、VC6.0とVB2005でイベント処理を書こうとしています。
以下の通り書いているのですが、VB側では一向にハンドルが返って来ず
0のままです。
何かおかしい所は有りますでしょうか。是非お知恵をお貸しください。。。
VC6.0でイベント作成
HANDLE hEvent;
hEvent = CreateEvent(NULL, TRUE, FALSE, "EVENT000");
VB2005でイベントオープン
宣言
<DllImport("kernel32.dll")> _
Public Function OpenEvent(ByVal dwDesiredAcess As UInt32, _
ByVal bInheritHandle As Boolean, ByVal lpName As String) As IntPtr
End Function
呼出
Dim pt As IntPtr
pt = OpenEvent(0, False, "EVENT000")
0167デフォルトの名無しさん
2009/06/16(火) 23:53:210168デフォルトの名無しさん
2009/06/17(水) 01:11:120169166
2009/06/17(水) 01:51:36LastErrorの値は、確認してみます。中途半端ですみません。
これに限らず、VB2005でAPIを使用する時に文字列を渡すと動作がおかしくなる傾向があるんですよね…。
うまく文字列が渡っていないのか、あるいは文字列を渡す時(Daclare等)の設定の他に、プロジェクト単位での設定等が必要になるのでしょうか?
結局、全てのAPIはVB2005で使用可能と考えて良いのでしょうか?
真剣に悩んでおります。。。
もう少しご教授ください。お願いします。
0170デフォルトの名無しさん
2009/06/17(水) 01:53:28適当に呼んどいて何言ってんだか、って感じだな。
0171162
2009/06/17(水) 02:18:35AもWも明示して試してみたのですが結果は同じでした…。
Marcialの指定は初耳です。どういう形で指定すれば良いのでしょうか?
分かる方から見れば、適当なだけかも知れませんが、不勉強なのは承知の上です。
すみません。教えて頂けますでしょうか。。。
0172デフォルトの名無しさん
2009/06/17(水) 09:20:45これまでVB6.0のフォームとモジュールだけでやってきて、
クラスとかオブジェクト指向とかはネットで読んで
「なんとなくこんなもんだろうか」程度の認識です
0173デフォルトの名無しさん
2009/06/17(水) 09:29:36VBやC#の本ってその辺の概念はスルーまたはあらかじめ理解してる前提で書かれてるのが多い
0174デフォルトの名無しさん
2009/06/17(水) 09:33:25>pt = OpenEvent(0, False, "EVENT000")
なんでアクセス権に 0 (アクセス権なし) してんだコレ。
Private Const EVENT_ALL_ACCESS As Integer = &H1F0003
pt = OpenEvent(EVENT_ALL_ACCESS, False, "EVENT000")
>>167
EventWaitHandle.OpenExisting 使うところだろうけど
まあ、どうしてもやってみたかったんだろう。
>>170
この場合は無指定で問題ない。
0175166
2009/06/17(水) 11:08:28本当にありがとうございました!
>Private Const EVENT_ALL_ACCESS As Integer = &H1F0003
こういうEnumの設定はどこで確認すればよいのでしょうか?
MSDN等、どこかに資料があるのでしょうか?
0176デフォルトの名無しさん
2009/06/17(水) 11:15:480177デフォルトの名無しさん
2009/06/17(水) 11:16:230178デフォルトの名無しさん
2009/06/17(水) 11:25:53Enum じゃないし。
つか、API 呼び出しするのに API の仕様も確認しないとか…
>MSDN等、どこかに資料があるのでしょうか?
何を指定すればいいのかは勿論 MSDN ライブラリ等。
ただ、記号定数が実際にどういう値なのかは
ヘッダを覗くしかない。
(探すときは Visual Studio のファイル検索を使うと楽)
…ていうかね、>>174 でも書いたけど
>>167 の言う通り、API 呼び出し使う意味がないんだったら
Dim ev as EventWaitHandle = EventWaitHandle.OpenExisting("EVENT000")
とした方がいいと思うんだが。
0179166
2009/06/17(水) 13:37:01もうすこし調査してみます。
本当にありがとうございました。名無しに戻ります。
それでは。
0180172
2009/06/18(木) 09:27:49今現在、VB2008を学習しなくてはならない事情がありまして
何かカリスマとかバイブル的な書籍、というのは無いものでしょうか
特に学習しなくても、VB6.0の頃とほぼ同じ作り方ができてしまいますが、
それを払拭して、VB2008ならこう構成した方がよい、こう書くべき、
というセオリーみたいなところを勉強したいです
0181デフォルトの名無しさん
2009/06/18(木) 09:43:07自動的にVBも使えるようになるよ
VBの本である限りVB的なやり方というのはどうしても出てくる
VB2008というか.NET的に1番良いのは「C#と同じように使うこと」
0182デフォルトの名無しさん
2009/06/18(木) 15:08:21サンプルを見つつ書いてみたのですが、どうしてもエラーが取れません。
' 他のフィールドの定義
With cat.Tables(strTable).Columns
.Append("商品コード", adWChar, 10)
End With
のadWCharでエラーになります。この型を認識させるにはどこをいじればいいのでしょうか?
0183デフォルトの名無しさん
2009/06/18(木) 17:34:51(ttp://pc12.2ch.net/test/read.cgi/tech/1099112351/1)
方法があれば開設しているサイトなど、教えてください
また複数の言語を混ぜてプログラムを作ることをなんというのでしょうか?
0184デフォルトの名無しさん
2009/06/18(木) 19:23:24「セキュリティ保護のため、このコンピュータにアクセスする可能性
のあるスクリプトやActiveXコントロールを実行しないよう、IEで制限
されています。オプションを表示するには、ここをクリックしてください」
という情報バーが出てくるものです。
この警告機能と、ダイアログを表示してユーザーが選択してから表示する
という機能を、WebBrowserにおいても導入するためにはどういった処理を
すれば良いでしょう?何か参照推奨のサイト等お教えください。よろしく
お願いします。
0185デフォルトの名無しさん
2009/06/18(木) 22:20:05C++/CLIでアセンブリ作って参照に追加するだけ
と言えば簡単そうに聞こえるけど、C++と.NET両方の知識がないと厳しい。
0186デフォルトの名無しさん
2009/06/18(木) 22:34:15ありがとうございます
C++/CLIでCILを作るのですね・・ややこしい><
0187デフォルトの名無しさん
2009/06/19(金) 01:45:26ものすごい科学技術計算でもするなら別だけどw
0188デフォルトの名無しさん
2009/06/19(金) 03:46:53(";" や ";")を書けば、同じ行に続けて次の命令を記述できたよね。
VBって、それがないから、1行に一つの命令しか書けないでしょ?
1行に1つの命令しか書けないって、よく考えたら
ものすごく使い勝手悪い言語じゃない?
0189デフォルトの名無しさん
2009/06/19(金) 04:03:270190デフォルトの名無しさん
2009/06/19(金) 04:40:56: で区切ればいいだろ
0191デフォルトの名無しさん
2009/06/19(金) 10:01:01>>154-156
大変遅くなりました!レスありがとうございます。
どれも参考になるものばかりで、本当にありがとうございました!
頑張って作成したいと思います!!
0192デフォルトの名無しさん
2009/06/19(金) 10:02:210193149
2009/06/19(金) 10:02:42連レスすみませんでした。
0194デフォルトの名無しさん
2009/06/19(金) 13:00:12C#による多言語対応アプリケーション開発のコツ
http://codezine.jp/article/detail/3288
を参考に、デザイナ、resxファイルを利用して多言語化を行うことができました。
この作業を実際に行ってみて思ったのですが、
.netには、ある言語に翻訳したい!と思った人がアプリ公開者を通さずに翻訳 > 配布 ということが簡単にできる仕組みは準備されているのでしょうか。
実際に多言語対応したアプリを公開した場合、個人レベルだと、
規定の言語で公開(またはVerUP) > 各言語の翻訳者による翻訳 > 翻訳を反映
という流れになると思うのですが、
VerUP等でresxファイル内のデータが増えた場合(翻訳作業が必要な文字列などが増えた場合)、
各言語のresxを(アプリ公開者が)入手 > (アプリ公開者が)ビルド > dll作成 > 配布
という方法で翻訳を反映するのがやはり一般的なのでしょうか。
なければ自前で、実行時に動的にカルチャに応じたXMLを読み込み(あれば)反映、といったような処理で多言語化を実装しようと考えています。
0195デフォルトの名無しさん
2009/06/19(金) 13:10:110196デフォルトの名無しさん
2009/06/19(金) 15:39:40DataSetにConnectionStringを追加していくと
前のConnectionStringが残ってしまうのですが・・・。
これ以前のConnectionSringを編集したい、
または以前のを削除したい場合はどうしたらいいのでしょうか?
0197196
2009/06/19(金) 15:50:190198デフォルトの名無しさん
2009/06/19(金) 15:55:010199196
2009/06/19(金) 17:13:01app.configとSettings.settingsの書き換えだけで問題なかったようです。
とっとと自分で試せって話ですよね・・・w
ともあれ、ありがとうございました。
0200デフォルトの名無しさん
2009/06/20(土) 09:57:22GUIプログラムで、Windowsフォームの中にコンソールのようなCUIなコントロールを表示させたいのですが、
(AllocConsoleみたいに別途コンソールを開くのではなく)
そういったコントロール(以前に入力(実行)した内容は変更できない)はありませんでしょうか?
(標準でなくてもサードパーティー製でもなんでもいいです)
もし無いのであればRichTextBoxあたりでなんとかしてみるつもりです。
0201デフォルトの名無しさん
2009/06/20(土) 10:39:06こちらのページ
ttp://dobon.net/vb/dotnet/form/folderdialog.html
こコピペでフォルダを選択できるようにはなりました。
'FolderBrowserDialogクラスのインスタンスを作成
Dim fbd As New FolderBrowserDialog
'上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。"
'ルートフォルダを指定する
'デフォルトでDesktop
fbd.RootFolder = Environment.SpecialFolder.Desktop
'最初に選択するフォルダを指定する
'RootFolder以下にあるフォルダである必要がある
fbd.SelectedPath = "C:\Windows"
'ユーザーが新しいフォルダを作成できるようにする
'デフォルトでTrue
fbd.ShowNewFolderButton = True
'ダイアログを表示する
If fbd.ShowDialog(Me) = DialogResult.OK Then
'選択されたフォルダを表示する
Console.WriteLine(fbd.SelectedPath)
End If
しかし、OpenFileDialogと異なりFolderBrowserDialogにはMultiselectプロパティがないようです。
どうすればフォルダを複数選択できるようになるのでしょうか?
0202デフォルトの名無しさん
2009/06/20(土) 10:55:490203デフォルトの名無しさん
2009/06/20(土) 11:06:550204デフォルトの名無しさん
2009/06/20(土) 11:42:47USBメモリ・外部メール等禁止のため長いコードだと手打ちはしんどいので、FolderBrowserDialogでディレクトリを選択後checked listboxに
ディレクトリ一覧を表示、そこで複数にチェックを入れるという形にしようと思います。
0205デフォルトの名無しさん
2009/06/21(日) 03:15:140206デフォルトの名無しさん
2009/06/22(月) 19:50:49親のBindingSourceを子に渡して子の各フォームにバインドさせたいんだけど、
コードで直接書くんじゃなくてデザイナのプロパティで設定する方法ってないでしょうか?
0207デフォルトの名無しさん
2009/06/22(月) 19:53:300208デフォルトの名無しさん
2009/06/22(月) 20:18:28データの入力制限を編集することは可能ですか?
指定したエクセルの列に値の重複を禁止する入力制限を追加して
DBの主キーのような設定を持たせたいのですが
入力制限の編集をVB.net上で行う方法が見つからないので
0209デフォルトの名無しさん
2009/06/22(月) 21:18:07記録できないのも、一部は可能。
0210デフォルトの名無しさん
2009/06/23(火) 19:50:530211デフォルトの名無しさん
2009/06/23(火) 20:23:57VB.net上で書いたソースをどの参照からマクロ登録することが出来るんだろう。
どなたかサンプルソースがあるところ教えてください
0212デフォルトの名無しさん
2009/06/23(火) 20:38:49http://officetanaka.net/excel/vba/vbe/06.htm
0213デフォルトの名無しさん
2009/06/23(火) 22:44:41WebRequestMethods.Ftp でサーバにあるファイル名を取ってくるときに、
2バイト文字のファイル名だと化けてしまいます。
化けないで正しいファイル名を取得する方法はないでしょうか?
0214デフォルトの名無しさん
2009/06/23(火) 22:53:11TcpClient or Socket使って自分でFTP喋るしかないんじゃないかなぁ
まあどっかにその辺の対応も含んだ野良FtpClientがあるかもしんないけど
0215デフォルトの名無しさん
2009/06/24(水) 02:26:150216デフォルトの名無しさん
2009/06/24(水) 22:10:40テキストのD&Dは
Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter
If e.Data.GetDataPresent(DataFormats.UnicodeText) Then
e.Effect = DragDropEffects.Copy
End Sub
で処理できるのですが、インターネットエクスプローラに表示されているWEBページの
リンクの文字をD&Dした際に、HTMLに設定されたURLを取得するにはどのように書いたら良いでしょうか?
0217デフォルトの名無しさん
2009/06/24(水) 22:52:44MemoryStreamにキャストしてそこからRead
Chr(0)を探してその直前までをEncoding.Default.GetString
0218デフォルトの名無しさん
2009/06/24(水) 22:54:220219デフォルトの名無しさん
2009/06/25(木) 00:14:36その方法はアドレスバーのURLの左にあるアイコンをD&Dする方法ではないでしょうか?
HTMLのリンクになっているテキストはドラッグしても通行禁止のマークのままなのですが・・・
0220デフォルトの名無しさん
2009/06/25(木) 00:18:44IEとFxで確認した
あ、EffectはCopyだけじゃなくてLinkも入れないと駄目かも
0221デフォルトの名無しさん
2009/06/25(木) 00:20:03ttp://dobon.net/vb/dotnet/control/dropfromwebbrowser.html
0222デフォルトの名無しさん
2009/06/25(木) 00:20:17DragDropEffects.Copy→DragDropEffects.Link
の変更で受け取れました。助かりました。
0223デフォルトの名無しさん
2009/06/25(木) 02:06:49(PCがアイドル状態になったら)自分のアプリを起動したいのですが、
OSが起動後にそのような状態になったというのはどのように調べたら良いでしょうか?
ちなみにWindowsXP-PROです。
0224デフォルトの名無しさん
2009/06/25(木) 14:03:50wmic path Win32_Processor get LoadPercentage
0225デフォルトの名無しさん
2009/06/25(木) 14:04:10現在業務をスケジュール管理するプログラムを作っています。
業務を登録する画面では、1月〜12月、1日〜31日までのチェックボックスを
それぞれ作っています。
例えば1月〜12月と1日のチェックボックスをチェックすると、毎月1日の業務
として登録され、スケジュール表に毎月1日だけその業務が表示されるような
ものを作りたいと思ってます。
データベースはACCESSを使用しており、月と日のチェックボックスに対応する
項目としてはYes/No型で1月〜12月、1日〜31日まで全て作っています。
今つまずいている点は、日付を指定してDB上からその日付に該当する業務を取得
したいのですが日付によってチェックするフィールドの位置が違う為、
どのようにすればいいか悩んでいます。
例えば6月1日の業務を取得したい場合、DB上で6月フィールドにチェックがあるかどうか
の確認が必要になりますが、日付によって確認するフィールドを動的に変える方法を
教えてください。
1月1日の場合〜、1月2日の場合〜とコーディングしたら365日分つくらないと
いけないので(こんな案しか思いつかなかったorz)良い案があれば教えて下さい。
0226デフォルトの名無しさん
2009/06/25(木) 14:16:310227225
2009/06/25(木) 14:17:56フィールド名を変数で定義出来れば多分出来るかなと思います。
1月の場合、変数に"1月"と代入しその変数=trueのレコードを取得とするような
クエリにぶちこめば動くようにしたいです。
0228225
2009/06/25(木) 14:20:31DBは自分でいじることが出来ます。
本当にド素人なんでどういったやり方がスマートなのかわかってないので
、こういうプログラムを作るときは普通こういった方法をする
と言ったアドバイスを頂けたらと思います。
よろしくお願いいたします。
0229デフォルトの名無しさん
2009/06/25(木) 14:23:31作ってしまうのだろうけどそこが誤りだろうな。
日付によって読みに行く場所が違うというのが異常だからそこを直すべき。
0230225
2009/06/25(木) 14:58:45つまり1月〜12月、1日〜31日のフィールドっていうのが異常って事ですよね?
むずかしいです・・・
0231デフォルトの名無しさん
2009/06/25(木) 16:24:00可能ならとりあえず現状のスキーマとSQLクエリでも晒してくれ
0232デフォルトの名無しさん
2009/06/25(木) 16:30:58スケジュール表 [ 日付, 業務種別ID, 実業務ID ]
業務マスタ [ 業務種別ID, 業務名, 実業務テーブル名 ]
(実業務表) [ 実業務ID, 必要な情報・・・ ] ←業務ごとに作成
0233デフォルトの名無しさん
2009/06/25(木) 17:39:47プログラムで動的にSQLを生成して実行する
フィールド名も動的に変更できる
>>229
今回の要件なら、俺でも1−12月のフラグと1−31日のフラグもつかもしれない
まあ、ホントは後で書くスキーマのようにするのが正解だろうけど
>>232
登録するのは、業務の繰り返し頻度であって、業務のスケジュールそのものじゃないぞ
そのスキーマだと、日ごとスケジュールの生成って作業が必要だな
そして繰り返し頻度を変更した場合、今あるスケジュールを全部けして再生成
さらに何年先までのスケジュールを生成していいのか不明
俺の予想スキーマ
業務マスタ(業務ID,業務名,その他必要な内容)
業務頻度月(業務ID,業務実行月)
業務頻度日(業務ID,業務実行日)
指定月日の業務を知りたければ、この三つを業務IDでjoinして
業務頻度月.業務実行月=指定月日の月 and 業務頻度日.業務実行日=指定月日の日 を検索
まああれだ。DB設計の話は板違いだな
0234デフォルトの名無しさん
2009/06/25(木) 22:34:03あ、チェックボックスのリストコントロールとかもあるか・・・
0235デフォルトの名無しさん
2009/06/26(金) 04:16:35カレンダー系のマスタメンテとかで、31個のチェックボックスを
並べるのなんて結構やってるし
まあしかし、>225からここまで1回もvb.netって言葉が出てないじゃないかw
0236デフォルトの名無しさん
2009/06/26(金) 13:36:39おい、出すなよ。
0237デフォルトの名無しさん
2009/06/26(金) 16:00:18スポットで1日分だけ読み込もうとせずに、
1年分くらい全部読み込んでおけってことになるね。
0238デフォルトの名無しさん
2009/06/26(金) 18:18:29同時に20個ほどスレッドを起動させ終了を待ちたいのですが、
どうすればいいのでしょうか?
.joinでは無理ですよね?
よろしくお願いします。
0239デフォルトの名無しさん
2009/06/26(金) 18:21:090240デフォルトの名無しさん
2009/06/26(金) 18:49:10SNS巡回ツールでも作んの?
0241デフォルトの名無しさん
2009/06/26(金) 23:46:59label1 label2 label3...のような感じで連番にして繰り返し処理で
一気に書き換えようと思うのですが思うようにできません
target = Cobj("label" & i) のような感じにしたのですが
エラーが出てとまってしまいます
どうしたらよいのでしょうか?
0242デフォルトの名無しさん
2009/06/27(土) 00:02:44label1 label2 label3...をListに入れる
0243デフォルトの名無しさん
2009/06/27(土) 00:03:16配列に入れとけ
0244デフォルトの名無しさん
2009/06/27(土) 00:13:42For Each child As Control In Me.Controls
If child.Text Like "Label*" Then
child.Text = child.Text & "でんがな"
End If
Next
0245デフォルトの名無しさん
2009/06/27(土) 00:34:12こんな使い方があったんだとか
他人のプログラムやサイトを見て知ることが多く
それを踏まえてみると自分の書いたコードがとても無駄だったみたいな経験があるんですが
みなさんはどうやって、こんな命令があるこんな使い方があるみたいなものを学んでるんですか?
0246デフォルトの名無しさん
2009/06/27(土) 00:36:46挫折しました
というわけで他人のプログラムやサイトw
0247238
2009/06/27(土) 01:31:43スレッドが終わるタイミングはまちまちです。
終わったスレッドから終わったあとの処理をしていきたいのです。
.joinだと制御が戻ってこないので困っています。
0248デフォルトの名無しさん
2009/06/27(土) 01:33:33オブジェクトに通し番号をつけようと思って以下のように書いたんだが、毎回0になるのだが・・・
Public Class Form1
Private Class Foo
Public Sub New()
Static Sequence As Integer = 0
Sequence += 1
(毎回0に初期化されてこの時点で1になる
0249デフォルトの名無しさん
2009/06/27(土) 02:16:37Static (Visual Basic)
ttp://msdn.microsoft.com/ja-jp/library/z2cty7t8(VS.80).aspx
>プロシージャが Shared でなければ、その Static 変数を含むローカル変数はインスタンス変数になります。
>そのインスタンス内の変数は、別のインスタンス内の同じ名前を持つ変数とは独立したものです。
各インスタンスで共有したかったらShared使ってこんな感じ
Private Class Foo
Private Shared Sequence As Integer = 0
Public Sub New()
Sequence += 1
Console.WriteLine(Sequence)
End Sub
End Class
0250デフォルトの名無しさん
2009/06/27(土) 02:28:03thnx
staticなのにインスタンス別とは・・・
0251デフォルトの名無しさん
2009/06/27(土) 03:39:00やっぱ、スレッドが終わるとき自分で終了通知する、とかじゃないかね
Dim waitHandles(20) As AutoResetEvent
Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
For i As Integer = 0 To waitHandles.Length - 1
waitHandles(i) = New AutoResetEvent(False)
Dim workThread As Thread = New Thread(AddressOf worker)
workThread.Start(i)
Next
Dim manageThread As Thread = New Thread(AddressOf manager)
manageThread.Start()
End Sub
Private Sub worker(ByVal obj As Object)
Dim i As Integer = CInt(obj)
Thread.Sleep(i * 100) '適当に仕事をする
waitHandles(i).Set() 'スレッドが終わるときに終了通知
End Sub
Private Sub manager()
Debug.Print("--------------")
For count As Integer = 0 To waitHandles.Length - 1
Dim i As Integer = WaitHandle.WaitAny(waitHandles) '終了通知を待つ
Debug.Print("worker {0} done", i)
Next
Debug.Print("ALL done")
End Sub
0252225
2009/06/27(土) 08:11:33DBの設計を見直した方が良かったのですが、時間的な関係で今回はこのまま行く
事になりました。
結局プログラムでレコード1件ずつ読み込んで、指定日付の月、日に
対応するフィールドそれぞれのデータがtrueなら取得。
取得したデータを別テーブルに追加していってスケジュール表を作りました。
申し訳ないのですが、別のことでもう少し教えて頂きたい事があります。
スケジュール表を更新した日付等、ちょっとした情報を保存しておきたいのですが、
その為だけにわざわざ新しいテーブルを作るっていうのはおかしいですか?
保存しておきたい情報としては、更新日付、いつから〜いつまでのデータを
スケジュール表に取得しているかという情報くらいです。
スケジュール表は3種類あるので保存するレコード数は3件以上には絶対にならないので
たった3件の情報の為だけのテーブル作るっていうのは、変なのかなと思いまして
皆さんのご意見をいただけたらと思います。
お願いします。
0253デフォルトの名無しさん
2009/06/27(土) 11:14:59DataSetに全部突っ込んでテキスト(XML)で保存するのもいいアイデアだと思う。
0254デフォルトの名無しさん
2009/06/27(土) 12:59:330255225
2009/06/27(土) 15:13:48VB.NETで作ってるので、関係ないとは一概に言えないと思います。
0256デフォルトの名無しさん
2009/06/27(土) 15:30:580257デフォルトの名無しさん
2009/06/28(日) 13:18:40書いてあることだけみると、他の人のアドバイスを元にDBから作り直せば3時間くらいで作れそうな気がするんだけど、
それでも「時間的な関係で」って結局そのままつくり続けるならここで聞く意味ないんじゃないか?
とりあえず更新日付等の情報を保存するためにテーブルを作るのは別に問題ないと思うけど、その程度の情報なら、
更新が起きたときにそのテーブルのレコードをUPDATEするんじゃなくて、INSERTしてログ的な使い方のほうが、そのデータをほしいって言った人の要求に近いんじゃないか。
更新対象のスケジュール日付、更新した人、作業内容(追加、修正、削除等)、更新日
みたいな感じのログにしておけば当面の要求はこなせると思う。
毎月1日実行のスケジュールを追加したら12個ログができるような感じで。
業務スケジュールっていうことだし、多分そんな頻繁に変更がないから、容量もそんなにくわないと思う。
0258デフォルトの名無しさん
2009/06/28(日) 15:03:59vb.netで開発したwebサイトを実行環境から確認しようと
IISを利用してアクセスしたのですが、
以下のようなエラーが出てしまいました。
BC40056: インポート 'Oracle.DataAccess.Client' で指定された名前空間または型が、
パブリック メンバを含んでいないか、または見つかりません。
名前空間または型が定義されていて、
少なくとも 1 つのパブリック メンバを含んでいることを確認してください。
また、インポートされた要素名がエイリアスを使用していないことを確認してください。
開発環境からは正常に実行できていたのですが、
実行環境からだとこのようなエラーが出てしまい困っています。
どなたか助けてください。
使用しているソフト等
windows xp
VWD
ODBC
ODP.NET
Oracle11g
0259デフォルトの名無しさん
2009/06/28(日) 15:07:360260258
2009/06/28(日) 15:20:02「参照設定を記述しろ」っていう表示はどこにもなかったです。
0261デフォルトの名無しさん
2009/06/28(日) 16:03:09とかは違う? IIS への発行はどうやったの? 実行環境に、Oracle のクライアントはインストールしてある?
0262258
2009/06/28(日) 16:17:05IISへの発行は、コントロールパネルの「プログラムの追加と削除」→「コンポーネントの追加」からIISを追加して、
ネット検索を経て、設定を済ませました。
http://<ローカルホスト> でIISが表示されるようになっています。
OracleDBサーバーと、実行環境が同じPC上で行われています。
Oracle11gがインストールされているPCなので、
Oracleクライアントは必要ないかと判断しました。
また、リンク先のページを拝見しましたが、いまいち理解ができません;
0263デフォルトの名無しさん
2009/06/28(日) 16:21:00どちらも 32ビット?
Oracle DB が入ってても、クライアントがインストールされてなきゃダメ。
まずはそこを確認してみて。
0264258
2009/06/28(日) 16:27:54ありがとうございます。
開発環境と実行環境は別PCです。
どちらも32ビットです。
今からOracleクラインアントを
OracleDBサーバーにしているPCにインストールしてみまつ。
0265258
2009/06/28(日) 16:49:52確認したのですが、OracleDBサーバーにしているPCに
クライアント10gがすでにインストールされていました。
0266デフォルトの名無しさん
2009/06/28(日) 17:52:33現在帳票はACCESSで使用しています。
今回、フォームをVB.NETで作成しなおし、DBはACCESSを使用することにしました。
帳票がかなり複雑でビジュアル的にも良くできているのですが、それを
VB.NETで作り直すのがかなり困難だということをひしひしと感じております。
皆さんだったらどうしますか?
0267デフォルトの名無しさん
2009/06/28(日) 18:00:130268258
2009/06/28(日) 18:09:14未だに上手くいきません。
0269266
2009/06/28(日) 18:10:13無料ツールはありませんか?
0270デフォルトの名無しさん
2009/06/28(日) 18:14:350271デフォルトの名無しさん
2009/06/28(日) 18:15:410272デフォルトの名無しさん
2009/06/28(日) 18:21:47アプリの web.config はどうなってんの?
0274デフォルトの名無しさん
2009/06/28(日) 18:32:13そこを調べろよ。
0275デフォルトの名無しさん
2009/06/28(日) 18:38:010277デフォルトの名無しさん
2009/06/28(日) 18:46:110279デフォルトの名無しさん
2009/06/28(日) 19:14:42他コミュで質問できないからな?
某掲示板や某フォーラムなどですると
「マルチ禁止!」のレスがつくからな
気をつけろよ・・・
0280266
2009/06/28(日) 19:59:32今回私の作りたいのは、1週間のスケジュール表になります。
日ごとに四角の枠を配置し、その中にその日の予定をテーブルから
書き出すことになります。
CrystalReportでとりあえず作ってみたものの、印刷プレビューで表示
すると実際の配置とかなりずれて表示されるので、本当に実現できるのか
不安になってきました。
予定表のテーブルから日をキーにしてレコードを取得後、日(曜日)ごとにDataSetを
作成してデータを突っ込んでます。
1週間分なので曜日のDatasetが7個できる形になります。
それをCrystalReportに渡して、曜日ごとの枠に収まるようにレコードを入れていきたい
のですが、全然綺麗に配置出来ないし、途方も無い作業でへこんでます。
だからといって皆さんに愚痴ってもしょうがないんですが、あまりにもレポート機能が
しょぼすぎて、ACCESSよりも劣ってるなんて残念でしょうがないです。
基本的にやり方としては間違ってないですか?
0281デフォルトの名無しさん
2009/06/28(日) 20:11:56変なフォーマットなら、自由度の高い PrintDocument だな。
0282266
2009/06/28(日) 20:14:30PrintDocument使うって事は、コードのみで書いていくんですよね・・・
例えば、エクセルで作るような表(網掛けなど)も可能ですか?
0283デフォルトの名無しさん
2009/06/28(日) 20:17:10つーか、Access がいい、っていうなら、Access でやれよ。
0284デフォルトの名無しさん
2009/06/28(日) 20:29:01Web.configにいろんなDLLの参照設定が書かれてないか?
それとサーバにODP.NETはインストールしてるのか?
0286デフォルトの名無しさん
2009/06/28(日) 20:43:33文句言うくらいなら、会社のやつらを説得すればいい。
0288デフォルトの名無しさん
2009/06/28(日) 21:08:200289266
2009/06/28(日) 23:04:430290266
2009/06/28(日) 23:13:360291デフォルトの名無しさん
2009/06/29(月) 12:18:06VC++2008のWin32プロジェクトで開発した共有メモリのDLLを
VB.net2008から呼び出すプログラムを製作しています。
DLL内部で保持している構造体を参照渡しして共有する仕組みです。
ですが、下記記述だと構造体内部の配列(stSub1〜3)が
Nothingの状態になったままです。VB初心者の私にアドバイスをお願いします
ちなみにOSはWinXPです。よろしくお願いします。
※記述は改行数の関係上、次の書き込みに書きます
0292291
2009/06/29(月) 12:19:57見づらいと思いますがご了承ください orz
------------------------
VC++記述
------------------------
typedef struct
{
short s1;
short s2;
}ST_SUB;
typedef struct
{
ST_SUB stSub1[10];
ST_SUB stSub2[10];
ST_SUB stSub3[10];
}ST_AREA;
DLL関数:HANDLE MemOpen(PVOID* Address)
0293291
2009/06/29(月) 12:22:28VB記述 抜粋
------------------------
Public Structure ST_AREA
Dim s1 As Short
Dim s2 As Short
End Structure
Public Structure ST_AREA
Dim stSub1() As ST_SUB
Dim stSub2() As ST_SUB
Dim stSub3() As ST_SUB
End Structure
Public stArea As ST_AREA
Declare Function MemOpen Lib "xx.dll" (<MarshalAs(UnmanagedType.Struct)> ByRef Address As ST_AREA) As Integer
Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpen.Click
Dim iRes As Integer
iRes = MemOpen(stArea)
End Sub
0294291
2009/06/29(月) 13:05:52ST_AREAじゃなくST_SUBだった o..rz
0295デフォルトの名無しさん
2009/06/29(月) 13:37:070296デフォルトの名無しさん
2009/06/29(月) 21:11:52どこかに解説サイトないでしょうか
0297デフォルトの名無しさん
2009/06/29(月) 22:55:08メモリマップドファイルとか、プロセス間通信系かな。>共有
0298291
2009/06/30(火) 09:34:04ありがとです。
PVOID*なのでクラスにしてちと試してみます
>>296
C++ならCreateFileMappingとかあるみたいですよ。
ほかの言語はわかりません。
0299291
2009/06/30(火) 10:34:29C言語なら
ST_AREA *pStArea
MemOpen(&pStArea);
pStArea->stSub1[3].s2 = 10;
とかやれば直接書き込みできるのに
VBってこういうことできないんですか?
IntPtrのようなもので受け取らないとだめですかね?
0300デフォルトの名無しさん
2009/06/30(火) 10:52:140301291
2009/06/30(火) 13:51:15先生ありがと!
サンプルを元にやってみたけど
他アプリから値を変えても値が変わらない。。。
値渡しになってる?
Public Structure ST_SUB
Public s1 As Short
Public s2 As Short
End Structure
<StructLayout(LayoutKind.Sequential)> _
Public Class ST_AREA
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _
Public stSub1 As ST_SUB()
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _
Public stSub2 As ST_SUB()
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _
Public stSub3 As ST_SUB()
End Structure
Public stArea As ST_AREA
Declare Function MemOpen Lib "xx.dll" (<MarshalAs(UnmanagedType.Struct)> ByRef Address As ST_AREA) As Integer
Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpen.Click
Dim iRes As Integer
iRes = MemOpen(stArea)
End Sub
0302291
2009/06/30(火) 13:54:35Openしたときは最後に書き込んだ値が取れます。
VB側から書き込んでも相手の値は変わらず。。。
0303291
2009/06/30(火) 16:17:43Declare Function MemOpen Lib "xx.dll" (ByRef Address As ST_AREA) As Integer
だな。
Cで書かれてるDLLの引数の型がPVOID*だから構造体でなくクラスで合ってると思うけど
オープンした時のみ値が取得できる状況です。。。
助けてティーチャー orz
0304デフォルトの名無しさん
2009/06/30(火) 16:31:44構造体にしてByRef IntPtrで受けるか、配列の要素を全部フィールドに展開するか
0305デフォルトの名無しさん
2009/07/01(水) 02:11:46mdbファイルにadoを使いデータを抽出(SQL文を使用)
この抽出結果を一時的に保管しておく器とかに使うものなのでしょうか?
0306デフォルトの名無しさん
2009/07/01(水) 07:34:02> Cで書かれてるDLLの引数の型がPVOID*だから構造体でなくクラスで合ってると思うけど
意味がわからん。P/Invoke のサンプルからやり直せ
0307デフォルトの名無しさん
2009/07/01(水) 07:34:13そんな感じ。
0308デフォルトの名無しさん
2009/07/01(水) 10:02:21ポインタへのポインタが必要だから参照型(構造体ではなくクラス)の参照渡しにすればいいんだよ
理屈は間違ってない
0309デフォルトの名無しさん
2009/07/01(水) 10:39:35SQLでの問合せの結果(複数行)をとっとくのがDataTable、
DataSet は DataTable のコレクション+αの機能。
0310デフォルトの名無しさん
2009/07/01(水) 10:41:48すごく…おかしいです。
0311デフォルトの名無しさん
2009/07/01(水) 10:57:190312291
2009/07/01(水) 11:26:45ttp://msdn.microsoft.com/ja-jp/library/awbckfbz(VS.80).aspx
上記サイトの
アンマネージ シグネチャ マネージ宣言 1 レベルの間接参照 class MyStruct(…);
DoWork(MyStruct** x); DoWork(ByRef x As MyStruct)
部分をみて構造体ではなくクラスにしないといけないのかなと判断してます
解釈が間違ってますかね?
>>304さん
>構造体にしてByRef IntPtrで受けるか
この意味が私の考えで合っているのかわかりませんが、
IntPtr型でポインターのアドレスを受け取り
構造体にキャストして割り当てるということなのでしょうか?
それとは別に、クラスにしてByValArray以外の方法(参照渡しができる方法)で
配列を作って引数に渡すことができればなぁと考えています。
考え方がC言語に偏っているので変なことを言ってるかもしれませんが
先生方、どうか温かい目でアドバイスをお願いします m(_ _)m
0313デフォルトの名無しさん
2009/07/01(水) 11:40:470314デフォルトの名無しさん
2009/07/01(水) 11:56:18でも配列渡すならアドレス固定しないといけないから、IntPtrで受けてMarshal.PtrToStructureの方がまだ簡単確実
0315314
2009/07/01(水) 12:03:44一行目撤回
0316デフォルトの名無しさん
2009/07/01(水) 13:12:57>VBってこういうことできないんですか?
P/Invoke で外部関数呼び出し時には引数の変換がされるが、それ以外のタイミングで
Managed なコードから Unmanaged な領域を弄る簡単な方法はない。
おとなしく Marshal の共有メソッド (Read〜/Write〜等) に IntPtr を渡す方法を試せ。
0317デフォルトの名無しさん
2009/07/01(水) 13:14:58VBのメンバを通してC側に直接書き込もうとしてたのか
マーシャリングでは無理だ
VBでは構造体も使えない
IntPtrで受けてMarshal.WriteByteでも使って直接書き込むしかない
0318291
2009/07/01(水) 15:41:43以下のように落ち着きました(ST_SUBは以前のまま)
Public Structure ST_AREA
Puclic BaseAddr As IntPtr
Default Public Property stSub1(ByVal index As Integer) As ST_SUB
Get
Dim Offset As Integer = index * Marshal.SizeOf(GetType(ST_SUB))
Return CType(Marshal.PtrToStructure(BaseAddr, GetType(ST_SUB)), ST_SUB)
End Get
Set(ByVal value As ST_SUB) ' indexのサイズ超えは省略
Dim Offset As Integer = index * Marshal.SizeOf(GetType(RDS_DATA_AREA))
Marshal.WriteInt16(BaseAddr, Offset, CType(value.s1, Short)) ' ここをまとめたい
Marshal.WriteInt16(BaseAddr, Offset + Marshal.SizeOf(value.s1), CType(value.s2, Short)) ' まとめたいよ
End Set
End Property 'stSub2 と stSub3 も同様 オフセットを間違えないように!!
End Structure
Public stArea As ST_AREA
Declare Function MemOpen Lib "xx.dll" (ByRef Address As IntPtr) As Integer
Private Sub BtnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpen.Click
Dim iRes As Integer = MemOpen(stArea.BaseAddr)
stArea.s1 = 10 'テストですよ
End Sub
SetのWriteInt16を一行にまとめたいとこですが思いつかなかったのでこんなです。
相手側アプリとの確認も取れました。VBむずかしいです orz
ありがとうございました〜
0319291
2009/07/01(水) 16:00:09はできたけど
stArea.s1 = 10
はできてなかったorz
まぁでも何とかなりそうです^o^
0320デフォルトの名無しさん
2009/07/03(金) 20:13:210321デフォルトの名無しさん
2009/07/03(金) 20:51:09質問は、DLLからFormに張ってあるコントロールのプロパティを変更する方法です。
Labelの文字を変える程度でいいのですが。
よろしくお願いします
0322デフォルトの名無しさん
2009/07/03(金) 21:19:41フォームから DLL にコントロールの参照を渡してやれば OK
0323デフォルトの名無しさん
2009/07/03(金) 22:15:41ユーザーコントロールにDataGridViewを貼り付けてColumnを2つ追加しました
これにイベントハンドラを記述するとユーザーコントロールのコンパイルは通りますが
コントロールの読み込み時にエラーが発生します
'RowsAddedイベントハンドラ
Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _
ByVal e As DataGridViewRowsAddedEventArgs) _
Handles DataGridView1.RowsAdded
DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Descending)
End Sub
列のSortModeがNotSortableに設定されているとき
列ヘッダーのSortGlyphDirectionをDesendingに設定することはできません
というエラーが出てるようですが、プロパティではSortModeはAutomaticになってます
ほわい?
0324デフォルトの名無しさん
2009/07/03(金) 22:28:190325デフォルトの名無しさん
2009/07/03(金) 22:34:02ありがとうございます。
DataGridviewの設定はすべてデザイナでやってますので
0326デフォルトの名無しさん
2009/07/03(金) 22:37:02つづきです
デザイナでやってて、Columnもデザイナであらかじめ追加してます
デザイナ上でのプロパティではAutomaticになっております
0327デフォルトの名無しさん
2009/07/03(金) 22:47:38'RowsAddedイベントハンドラ
Private Sub DataGridView1_RowsAdded(ByVal sender As Object, _
ByVal e As DataGridViewRowsAddedEventArgs) _
Handles DataGridView1.RowsAdded
If ...SortMode <> NotSortable Then
DataGridView1.Sort(DataGridView1.Columns(1), ListSortDirection.Descending)
End If
End Sub
みたいにしてみるとか、エラーが出たときにウォッチしてみるとか、
その辺で確認してみたら?
0328デフォルトの名無しさん
2009/07/03(金) 23:07:500329デフォルトの名無しさん
2009/07/04(土) 00:02:23データがない状態の時NotSortableになってんのかな?
ありがとうございました
0330デフォルトの名無しさん
2009/07/04(土) 00:19:06そんなに大きくないならStringWriterで文字列に書き出して置換すれば
0331デフォルトの名無しさん
2009/07/05(日) 14:28:39TableAとTableBは1対多結合になります
フィールドは同一のDataGridViewで表示したい
TaleBを連結したDataGridViewに非連結列を追加してTableAのフィールドを検索して貼り付けることはできそうですが
なんかデザイングリッド上でぱぱっとやれそうな気がしておたずねしました
何とぞよろしくお願いいたします
0332デフォルトの名無しさん
2009/07/05(日) 15:31:23Textboxに入力されたデータから特定の行(ex:15行目から20行目)だけを取り出したいのですが、何か方法はないでしょうか?
よろしくお願いします。
0333デフォルトの名無しさん
2009/07/05(日) 15:36:17どう検索したのか興味がある
Linesから適当に取得すればいいっしょ
0334デフォルトの名無しさん
2009/07/05(日) 15:50:04初心者故に文字列の取得方法が分かりません。
申し訳ないです。
0335デフォルトの名無しさん
2009/07/05(日) 16:16:510336デフォルトの名無しさん
2009/07/05(日) 16:18:49DataGridviewをそっくりそのままの形のレイアウトで印刷してくれるようなもっと簡単なのがあってもよさそうなのですが・・・
0337デフォルトの名無しさん
2009/07/05(日) 16:22:09すいません、Linesはどのように扱えばいいのでしょうか
0338デフォルトの名無しさん
2009/07/05(日) 16:24:10おれはグリッドそのまま出せてもなんもうれしくないから、必要性を感じないな。
0339デフォルトの名無しさん
2009/07/05(日) 16:28:42http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.lines.aspx
↑を見て、何がわからないのかきちんと説明しろ。
0340デフォルトの名無しさん
2009/07/05(日) 16:54:21ごめんなさい
これを別のTextboxに出力させる方法が分かりません。
Dim counter as Integer
'Create a string array and store the contents of the Lines property.
Dim tempArray() as String
tempArray = textBox1.Lines
'Loop through the array and send the contents of the array to debug window.
For counter = 0 to tempArray.GetUpperBound(0)
System.Diagnostics.Debug.WriteLine( tempArray(counter) )
Next
0341デフォルトの名無しさん
2009/07/05(日) 16:54:58終了の場合は閉じるようにしたいんですが、closingイベント以外で実装
はできませんか?
今やりたい事は、フォームA→フォームBを呼び出してそこから終了
した場合、上記の確認メッセージを表示して両方のフォームが落ちるようにしたいです。
フォームBを×ボタンで閉じる動作を行うとフォームAをcloseという処理を走らせたい
のですが、フォームAにも上記のclosingイベントを実装する為
フォームB終了確認メッセージ後に、フォームAの終了確認メッセージが表示されてしまいます。
closingイベント内でフラグ立てて回避出来るかなと思ったら、無限ループに陥ってしまい無理でした。
どのような解決方法があるか教えていただけると幸いです。
よろしくお願いいたします。
0342デフォルトの名無しさん
2009/07/05(日) 17:19:49FormA : FormBのFormClosedで自分をCloseする
FormClosingでFormBが閉じられたときに呼び出された場合確認ダイアログを出さない
0343デフォルトの名無しさん
2009/07/05(日) 17:20:14> Form右上の×ボタン押したときに終了するか確認メッセージ出して、
> 終了の場合は閉じるようにしたいんですが、closingイベント以外で実装
> はできませんか?
できない。
> 今やりたい事は、フォームA→フォームBを呼び出してそこから終了
> した場合、上記の確認メッセージを表示して両方のフォームが落ちるようにしたいです。
> フォームBを×ボタンで閉じる動作を行うとフォームAをcloseという処理を走らせたい
Closing イベントで閉じられる理由を確認すればいいんじゃね?
0344デフォルトの名無しさん
2009/07/05(日) 17:21:03ってことは、取得する方法はわかったわけだ。
設定したいなら、「別のTextBox.Text = 取得した値」でOK。
0345デフォルトの名無しさん
2009/07/05(日) 17:27:40ソースコードでテーブルをもう一つ作ってマージするって方法は見つけました
それが正解でしょうか?
コーディングなしで2つのDataGridViewで親子テーブルを作る例はいっぱいありましたが
それを単一のDataGridViewで表示するのって逆に難しいんですね
0346デフォルトの名無しさん
2009/07/05(日) 17:37:31Dim counter As Integer
Dim tempArray() As String
tempArray = textBox1.Lines
For counter = 0 To tempArray.GetUpperBound(0)
TextBox2.Text = tempArray(counter)
Next
こういうことでしょうか?
行数はFor counter = 0 To tempArray.GetUpperBound(0)の数値をいじればいいのですよね?
0347341
2009/07/05(日) 17:58:28FormB Closingイベントで確認ダイアログ表示
NOを返す→e.cancel=true (これでキャンセル)
YESを返す→FlgをtrueにしてFormA.close
FormA
上記のFormA.closeによって、FormAのClosingイベントが呼び出される。
FlgがTrueの場合、Closingイベント内の確認ダイアログはスルー。
私としては、上記の内容でいけると思ってたんですが、
FormA.Closeを実施のところで、何度も確認ダイアログが表示され
無限ループに陥っているようでした。
また、FormBのclosingイベント内に確認ダイアログをもうけないで
FormA.closeのみおいてみると何故か無限ループでエラーが出てしまいます。
その際、FormAにはClosingイベントはおいてません。
どなたか理由がわかる方いませんか?
0348336
2009/07/05(日) 18:18:31>表形式で出力できるレポートツール
とは、どういうものなのでしょうか?
クリスタルレポートとかそういうものですか?
私は今、Vb2008を使ってるんですが、コントロールの一覧の中にCrystalreportがないのですが、なにか設定がいるんですかね
0349デフォルトの名無しさん
2009/07/05(日) 18:44:20取得する行が決まってるなら、ループで回す必要はない
>>347
わかりづらいから、きちっとコード出してみ?
>>348
おまえさんの言うとおり、クリスタルレポートとか。
Edition によっては含まれてないんじゃない?
0350デフォルトの名無しさん
2009/07/05(日) 19:45:30できました
ありがとうございます。
0351デフォルトの名無しさん
2009/07/05(日) 20:33:550352デフォルトの名無しさん
2009/07/05(日) 20:48:35sub mainからログイン画面を表示する
0354351
2009/07/05(日) 23:20:33メイン画面をログイン画面に設定したらログイン画面落とした時点で
ほかのフォームも全て落ちちゃうんですよね。
0355デフォルトの名無しさん
2009/07/05(日) 23:22:20http://www.microsoft.com/japan/msdn/vstudio/products/compare/default.aspx
ダメだね。
0356デフォルトの名無しさん
2009/07/05(日) 23:36:56ログインをメインにするから不味い、ってことだろ。
0357デフォルトの名無しさん
2009/07/06(月) 01:28:08親テーブルの下に子テーブルが見えてるんですが
こいつをDataGridViewの単一テーブル上に展開できません
tableA
fieldID
fieldA
tableB
fieldID
fieldB
fieldID fieldA fieldB のような表現をしたいのですが・・・やはり無理でしょうか?
0358デフォルトの名無しさん
2009/07/06(月) 02:13:560359デフォルトの名無しさん
2009/07/06(月) 02:24:490360デフォルトの名無しさん
2009/07/06(月) 10:10:53やっぱりそうですか
誰かに言って貰わないと楽ちんな方法を知らずに回り道してるんじゃないかと心配で
先に進めないもので・・・
ありがとうございました
0361デフォルトの名無しさん
2009/07/06(月) 11:56:20たびたびすみません。
datasetのデザイナで子テーブルにフィールドを追加しフィールドプロパティのExpressionに
TableA.FieldAを設定すると
リレーションシップ0が見あたりません
そこで
parent(リレーションシップ名).FiedlAを設定すると
リレーションシップ名が見あたりません
となります。datasetデザイナ上では確かにリレーションシップを設定してその名前をコピペしてるので間違いないと思うのですが
もしかしてコード上で設定しないといけないのでしょうか?
0362デフォルトの名無しさん
2009/07/06(月) 12:14:490363デフォルトの名無しさん
2009/07/06(月) 13:05:59datasetデザイナ上でプロパティを設定してるだけなので・・・・
よっぽどまぬけなことをやってるのかググっても該当するものは出てこず・・・
orz
0364デフォルトの名無しさん
2009/07/06(月) 13:19:170365デフォルトの名無しさん
2009/07/06(月) 13:25:32やっと意味がわかりました。なるほど・・・
で、やっと設定できました
原因は不明ですが、ビルドしたら親テーブルのフィールドを認識するようになりました
お騒がせしました
0366デフォルトの名無しさん
2009/07/06(月) 19:24:59VBからTwitterに文字列を投稿する方法はAPI以外にないでしょうか?
0367デフォルトの名無しさん
2009/07/06(月) 21:54:390368デフォルトの名無しさん
2009/07/06(月) 21:55:30TwitterAPIの方です
0369デフォルトの名無しさん
2009/07/06(月) 22:15:26フォームに配置しているボタンを連打したり、データグリッドを更新させたりしてプログラムに一次的に負荷をかけると、その間だけ送受の通信が止まってしまいます。
ためしにForm2を作ってその別のフォームで単独で通信させていてもForm1にあるボタン等を連打して負荷をかけると同じような結果でした。
こういう問題はどういう風に解決したらよろしいのでしょうか?
どうかご助言のほうをよろしくお願いします。
0370デフォルトの名無しさん
2009/07/06(月) 22:35:11スレッドを分ければ一瞬で解決すると見た。
0371デフォルトの名無しさん
2009/07/06(月) 22:35:230372デフォルトの名無しさん
2009/07/06(月) 22:42:11VB2008を使っているのですが、スレッドとはどういう事なのでしょうか?
0373デフォルトの名無しさん
2009/07/06(月) 22:50:21原則的に時間のかかる処理は別のスレッドを作ってそっちで動かさないとUIが固まります
特別な技術や注意が必要なのでしっかり勉強しましょう
0374デフォルトの名無しさん
2009/07/06(月) 22:51:310375デフォルトの名無しさん
2009/07/06(月) 22:58:14『.NETマルチスレッドプログラミング 1:スレッドの実行と同期』
http://codezine.jp/article/detail/144?p=1
『.NETマルチスレッドプログラミング 2:非同期デリゲートとスレッドプール』
http://codezine.jp/article/detail/139?p=1
0376デフォルトの名無しさん
2009/07/07(火) 04:24:03参考にさせていただきます
なんとなくマルチスレッドの動きは分かったんですが
このプログラムは送信はタイマーイベントで行っていて、受信はCOMのDataRecivedイベントで行っているのですが
この場合、>>369のように停止させたくはないので両メソッドともマルチスレッド化したほうがよろしいんでしょうか?
なかなか複雑そうですね・・。
0377デフォルトの名無しさん
2009/07/07(火) 07:47:52データを格納した上でControl.BeginInvokeしておけば、
UIスレッドが原因で邪魔されることは無いんじゃないかな。
0378376
2009/07/07(火) 19:14:09>データを格納した上でControl.BeginInvokeしておけば、
>UIスレッドが原因で邪魔されることは無いんじゃないかな。
すみません・・・もう少し詳しく説明していただけませんでしょうか?
それと思ったのですが
現状のプログラムがDaraRecivedイベントが発生してデータを受け取ったら、そのデータのヘッダ等を確認するためにDaraRecivedイベント内で処理関数(*1)を呼び出して、最終的に変数にデータを格納する処理にしています
そしてフォームに配置したタイマーイベントで、その格納した変数にアクセスしデータを読み取るようにしています。
DaraRecivedイベントから呼び出した上記の(*1)の処理関数もDataRecivedイベントと同じスレッド、つまりフォームが実行されているスレッドとは別で実行されているということなんですよね?
ということは、既に受信処理は別のスレッドで処理されていたということなんですよね
この場合、フォームに配置したタイマーイベントで行っている送信処理のみがフォームと同スレッドな為にフォーム操作時に停止していると判断して
結果的には送信処理のみを別スレッドにすれば問題は解決しそうですね
マルチスレッドについては教わった解説サイトを見て調べるとして
・・・タイマーイベント内の、送信処理を別スレッドにするべきなんでしょうか
それともこのタイマーイベント自体を別スレッドにしないといけないんでしょうか?
タイマーイベントはフォームを操作したとして途切れることはないのかな
0379デフォルトの名無しさん
2009/07/07(火) 19:34:19今後のことを考えれば、スレッド使えないと自分が大変なんだからさ。
0380デフォルトの名無しさん
2009/07/07(火) 19:46:17勝手に手持ちのスレッドプールからイベントを起こしてくれるから、
スレッドを一から作る必要は無いんじゃないかな。
UIスレッドとは無関係にイベントは発生するから、止まる事も無いはず。
0381デフォルトの名無しさん
2009/07/07(火) 22:00:040382デフォルトの名無しさん
2009/07/07(火) 22:02:180383デフォルトの名無しさん
2009/07/07(火) 22:19:17ODP.NETやODBCだと、exeの配布先のマシンに
オラクルのクライアントがインストールされていなくても
SQLの実行などができますか?
0384デフォルトの名無しさん
2009/07/07(火) 22:25:49質問はちゃんと要件をまとめてからしてくれよ
0385デフォルトの名無しさん
2009/07/07(火) 22:31:15じゃ、exeの配布先のマシンには
Oracleのクライアントソフト(.Net)は必須なんですね?
0386デフォルトの名無しさん
2009/07/07(火) 22:34:170387デフォルトの名無しさん
2009/07/07(火) 22:36:04.NETからOracleへのアクセスはSystem.Data.OracleClientやSystem.Data.Odbcなら標準ライブラリに用意されてる
> Oracleのクライアントソフト(.Net)
って何指してるの?
0388デフォルトの名無しさん
2009/07/07(火) 22:36:30Oracleのネイティブなクライアント(OCIとか)と
.NETのプロバイダは別物だぞ。
さらにDataDirectなどの、Oracleのネイティブなクライアントが
不要なプロバイダもあることはある。
0389デフォルトの名無しさん
2009/07/07(火) 22:39:23納得しました。
0390デフォルトの名無しさん
2009/07/08(水) 16:42:49あるファイルが他のなんらかのアプリケーションで既に開かれているかどうかを調べるにはどうすれば良いでしょうか?
ファイル名から、そのファイルを開いているアプリケーションが何なのかを知りたいのです。
開発しているアプリからデータを既存のファイルに上書きでエクスポートしようとした時、
他のアプリでそのファイルが開かれていればエラーになってしまうので、どのアプリがその
ファイルを開いているかをユーザに通知したいのです。
どうぞよろしくお願いいたします。
0391デフォルトの名無しさん
2009/07/08(水) 16:49:290392デフォルトの名無しさん
2009/07/08(水) 17:01:020393390
2009/07/08(水) 17:28:25>>392
レスありがとうございます。
とりあえず現時点では「ファイルが他のアプリケーションで使用されていないことを確認してください。」と
メッセージボックスを表示しています。
たとえば、開発しているアプリから xls ファイルでエクスポートしてそのファイルが Excel で開かれていれば
ユーザは Excel というアプリを自分で確認してくれるのですが、別のアプリでその xls ファイルを読み込んで
いる場合、ユーザはその xls ファイルが開かれているということに気づきにくいみたいですので、どのアプリが
その xls ファイルを開いているのか通知したいんです...
openfiles というコマンドがあるみたいですが、これは非公開APIを使用しているかも...みたいな記述は
見かけました。
ただこのコマンドを使用するにはシステムのパフォーマンスが低下する可能性があるとの事(openfiles.exe が
ファイルのトレースを行うのでオーバーヘッドが発生)で、このコマンドを使用するには抵抗があります。
ttp://www.atmarkit.co.jp/fwin2ktips/306openfiles/openfiles.html
何か妙案はないかな...
0394デフォルトの名無しさん
2009/07/08(水) 19:55:410395デフォルトの名無しさん
2009/07/08(水) 20:47:51http://technet.microsoft.com/ja-jp/sysinternals/bb896656(en-us).aspx
これはだめ?
0396デフォルトの名無しさん
2009/07/08(水) 20:51:10Form1とForm2を作成し、Form1からForm2を以下のようにして表示させました。
[Class Main]
Public Sub Main()
Application.Run(New Form1)
End Sub
[Class Form1]
Private Sub Form1_Load( 略 )
Form2.Show()
End Sub
Public Sub SetTextBox( str )
TextBox1.Text = str
End Sub
[Class Form2]
Private Sub Button1_Click( 略 )
Form1.SetTextBox("test")
End Sub
このとき、Form2のボタンからForm1のTextBoxに文字列をセットできないのは
Application.RunでNewしているForm1にアクセス出来ていないからでしょうか?
0397デフォルトの名無しさん
2009/07/08(水) 20:56:46自分が開いてるかどうかなら
COM経由で開いてる文書一覧が取得できなかったっけ?
他PCが開いているかどうかなら
開かれていたらどうしたいのかによるんじゃね?
そもそもExcelが排他かけないんだし…
0398デフォルトの名無しさん
2009/07/08(水) 22:05:21よくわからんけど
Form1.TextBox.Text = "test"
は、ダメなの?
0399デフォルトの名無しさん
2009/07/08(水) 22:09:43VBは過去のしがらみにより、フォームのインスタンスを生成しなくても
フォームにアクセスできる。
この場合のフォームのインスタンスは、既定のインスタンスとか呼ばれてる
>Application.RunでNewしているForm1にアクセス出来ていないからでしょうか
その通り。Newすると、既定のインスタンスじゃないインスタンスが生成されてる
Form2が呼んでるForm1はインスタンス指定がないから既定のインスタンスのForm1
Application.Run(Form1)で既定のインスタンスのForm1を表示させれば思った通りの動作
0400デフォルトの名無しさん
2009/07/08(水) 22:18:24VBユーザーは怒るべき
0401デフォルトの名無しさん
2009/07/09(木) 00:07:022008は持っていないのですが、VB2005で実験してみたところ、普通に書き込みされました。
Public Class Main
Public Form1 as new Form1
Public Sub Main()
Application.Run(Form1)
End Sub
End Class
ってやってもダメだろうか。
実験その1
Public Class Main
Public MyForm1 as new Form1
Public Sub Main()
Application.Run(MyForm1)
End Sub
End Class
Public Class Form2
Private Sub Button1_Click(略
Form1.SetTextBox("test")
End Sub
End Class
Form1は一緒ね。結果は、正常に?書き込み動作された。
MyForm1っていうForm1のインスタンスが、Form1って名前でアクセスできるみたい。
仕様としては嫌だなぁ。
続きます・・・
0402401
2009/07/09(木) 00:15:44Public Class Main
Public MyForm1 as new Form1
Public Sub Main()
Application.Run(MyForm1)
End Sub
End Class
Public Class Form2
Public MyForm1_2 as new Form1
Private Sub Button1_Click(略
MyForm1_2.SetTextBox("test")
End Sub
End Class
Form1は例によって一緒。
結果は、書き込みされず。
見えないMyForm2にアクセスしている模様。
ちなみにこの後
MyForm2.Show
とすると、書き込み済みで表示される。
これはまぁ普通。
もう少し続きます・・・
0403401
2009/07/09(木) 00:25:50Public Class Main
Public MyForm1 as new Form1
Public Sub Main()
Application.Run(MyForm1)
End Sub
End Class
Public Class Form2
Public MyForm1_2 as new Form1
Private Sub Button1_Click(略
MyForm1_2.Show
Form1.SetTextBox("test")
End Sub
End Class
Form1は例によって一緒。
結果は、MyForm1のフォームに書き込みされました。
MyForm1とMyForm1_2という二つのForm1がインスタンス化されていて、
Form1という名前ではどちらか判断できないのですが、結果はそういうことで。
最初インスタンス化したClassの別名になっている?
実際の内部挙動はわかりません。
これもイケてないなぁ。
以上、長文スマソ
0404デフォルトの名無しさん
2009/07/09(木) 01:01:51横槍を入れることで疑問を解消させてもらう新しい形で
質問させて頂きます。
2つめの実験(>>402)で、
どうして書き込みされたフォームが見えないのかわかりません。
MyForm2 というのは、MyForm1_2 のことですよね?
3つめの実験(>>403)は、
結局、MyForm1にはアクセスしていない、ということではないですか?
Formというクラスは、インスタンスを作らなくてもアクセスできる
Shared(静的)な要素を持っているのでしょうか。
(>>399)さんが言っていることは、
デザイナで作成するForm1には、自分自身のインスタンスをあらわす「Form1」という
要素がSharedか何かで自動的に定義される、ということなのでしょうか。
0405デフォルトの名無しさん
2009/07/09(木) 02:52:21既定のインスタンスってのは、VB6にはあった
.NETになっていったん廃止されて2005で復活らしい
>>401
>VB2005で実験してみたところ、普通に書き込みされました
手元に2005ないんで試せないが、そうだとすると、2005と2008で動作が違うといことに
実験の内容から考察するに、2005でフォームをnewすると、
1個目のインスタンスは既定のインスタンス戻してるっぽいな
2008なら1回目のnewから既定のインスタンスと別のインスタンス作ってるっぽい
>>404
二つ目の実験でMyForm1_2は、Form2の中でnewされた(Form1の)インスタンス
Application.Runされている(=表示されている)のはMainでnewされた(Form1の)インスタンス
これは明らかに別物だから>401が言うとおりまあ普通
三つ目の実験だが、
Form1.SetTextBox("test") でForm1って変数はないから、
これは既定のインスタンスに書き込みにいってる
MyForm1が書き込まれたってことは、MyForm1のnewで既定のインスタンス取得してると思われ
2008で実験その3やると、どっちのフォームにも書きこまれない
これはMyForm1もMyForm1_2も既定のインスタンスとは別のインスタンスだってことだと
0406404
2009/07/09(木) 05:13:06で、2005ではMain クラスの Main メソッドで new されて、かつ
Application.Run で使用されたフォームは、
そのフォームクラスの既定のインスタンスになるのか。
つまりこれは既定のインスタンスになるための十分条件なわけだけど、
最低限必要な条件って、上記のうちどれだろ。。。
ま、とりあえず横槍質問はこのくらいにしときます。
0407396
2009/07/09(木) 09:23:18レスありがとうございます。
>>399
詳しい説明をありがとうございます。
Application.Run(Form1) で期待通りの動作が出来ました。
>>401
実験をありがとうございます。
VB2005 と VB2008 で動作が異なっている事が分りました。
0408デフォルトの名無しさん
2009/07/09(木) 09:34:02N88Basic にあった、Play 文はどこにいったんですか?
昔、Play文で作曲しまくっていたので、
VB.NETでもどうしてもPlay文を使いたいのです。
どうか、お願いします。
0409デフォルトの名無しさん
2009/07/09(木) 09:41:35全くの別物です
だいたい、そういう組み込みの「〜文」などというのはVB.NETにはほとんど存在しません
.NETのライブラリにも無いのでWin32API使いましょう
0410390
2009/07/09(木) 09:52:38ON/OFFを切り替える度にPCの再起動が必要になります。
これは実運用上、非現実的です。
>>395
プロセスが利用しているDLLを表示するためのコマンドラインツールですよね?
ちょっと目的とは異なるかと思うんです...
>>397
COM経由で開いているファイルの一覧を取得することができるんですか!?
ちょっと調べてみます。
環境的にはスタンドアロンの場合が多いです。
私が開発しているアプリから xls 形式でエクスポート上書き保存できない場合、
スタンドアロン環境でかつ Excel は起動していない時、ユーザは「なんで?」と
なってしまうんです。他アプリが該当の xls ファイルを掴んでいるケースが
あったりするので、ユーザに「xxx.exe でその xls が開かれていますよ。」と
通知したいんです。
0411デフォルトの名無しさん
2009/07/09(木) 11:18:53なんかちょっと勘違いしてるっぽいが
フォームの「既定のインスタンス」ってのは、そのインスタンスを保持する変数がなくても
明示的に(newで)作成しなくても存在する特殊なインスタンスのこと
普通のオブジェクトだと、保持する変数がないインスタンスはGCで回収される
明示的にnewされた普通のインスタンスが「規定」になるわけではないよ
0412デフォルトの名無しさん
2009/07/09(木) 12:02:40取得できるのは自プロセスが開いた一覧だね
0413デフォルトの名無しさん
2009/07/09(木) 13:31:24http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx
こいつでファイル指定して開いてるプロセス検索できる
こいつがどうやってるかわからんが、同じことやれば可能なはずだ
0414デフォルトの名無しさん
2009/07/09(木) 15:47:11openfiles.exeと同じことだろ
>>410
ttp://oshiete1.goo.ne.jp/qa1652898.html
0415デフォルトの名無しさん
2009/07/09(木) 16:13:00Process Explorerは、openfiles.exeみたいに(設定変えて)再起動しなくても使えるみたいだが?
0416390
2009/07/09(木) 17:09:04レスありがとうございます。
>>413のご指摘のようなことを自前で実装したいのですが仕組みがわからないです。
せめて Process Explorer にファイル名をパラメータで渡して結果を受け取る、みたいな
ことができれば嬉しいんですが。
エンドユーザはコンピュータに不慣れな人が多いので、なるべく必要な機能を自前で
実装してあげたいのです。
というか、このような機能の需要て少ないんでしょうかね。
.NetFramework4.0あたりで機能を実装してくれたら...ないか。
ひとまず>>414氏が提示してくれたリンクを見ながら闘ってみます。
0417デフォルトの名無しさん
2009/07/09(木) 19:35:11"SELECT * FROM" & _
" __InstanceCreationEvent WITHIN 1 " & _
"WHERE TargetInstance isa ""Win32_Process""")
StartWatcher = New ManagementEventWatcher(StartQuery)
AddHandler StartWatcher.EventArrived, AddressOf Me.ProcessArrived
Private Sub ProcessArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
msgbox("Arrived")
Me.RefreshList()
End Sub
プロセスの一覧を表示していて新規で何かが起動したら更新するというようにやってるんだけど
"Arrived"メッセージは出るけどRefreshListが呼ばれない
特にエラーも何も出ない
たぶんMeの参照先が違ってるんだろうけどこれはどうすればいいの?
0418デフォルトの名無しさん
2009/07/09(木) 19:44:12取り敢えずMsgBoxはDebug.Print辺りに置き換えてステップ実行
多分別スレッドでイベントハンドラが呼び出されてるから
0419デフォルトの名無しさん
2009/07/09(木) 19:47:28RefreshListの中にmsgboxとconsole.write両方を入れてみたけど反応なし
エラーも何も出ない
別スレッドで呼び出されてるのは分かってるwその回避方法を聞いてるのw
0420デフォルトの名無しさん
2009/07/09(木) 19:52:290421デフォルトの名無しさん
2009/07/09(木) 19:52:53MeにContol.Invoke使ってUIスレッドでRefreshList()呼べばいいじゃん
0422デフォルトの名無しさん
2009/07/09(木) 20:00:51そういうものがあるのを今見つけて試してる
0423デフォルトの名無しさん
2009/07/09(木) 20:06:480424デフォルトの名無しさん
2009/07/09(木) 21:47:25聞いてないだろどう見ても、あほかよ
0425デフォルトの名無しさん
2009/07/09(木) 22:58:43Meの参照先が違うって書いてるのにそれが読み取れないってどんだけ素人だよw
あーちなみにVB.Netまだ1週間目w
0426デフォルトの名無しさん
2009/07/09(木) 23:07:070427デフォルトの名無しさん
2009/07/09(木) 23:37:15Meの参照先ってインスタンスだよな
インスタンスとスレッドって同じなのか?
0428デフォルトの名無しさん
2009/07/09(木) 23:41:210429デフォルトの名無しさん
2009/07/09(木) 23:45:15>インスタンスとスレッドって同じなのか?
違うよ
0430デフォルトの名無しさん
2009/07/10(金) 00:18:44コントロールへD&DしてURLを取得する方法について
>>216で教えて頂いたのですが
このアイコンをアプリケーションのexeファイルのアイコンにドロップして
アプリケーションを起動した場合に、urlを取得する方法を教えて頂きたいです。
ファイルやフォルダのドロップの情報の取得は
cmds = System.Environment.GetCommandLineArgs
で確認できたのですが、urlのアイコンの場合は
この中には入らないようです。
0431デフォルトの名無しさん
2009/07/10(金) 00:27:480432デフォルトの名無しさん
2009/07/10(金) 01:52:37・インスタンスとは・・・
例えば、クラスを自分で定義する場合、
public class MyClass
〜
end class
と記述する。で、このクラスを form1 内で使う場合、例えば次のように記述する。
dim mc1 as new MyClass
dim mc2 as MyClass
mc2 = new MyClass
これで、mc1、mc2 というのが、クラス名「MyClass」のインスタンスということになる。
new +「クラス名」で、そのクラスのインスタンスを作ることができる、というわけ。
インスタンスというのは、変数やクラスを代入するための入れ物、と思っておけばよいはず。
as の後ろにくる MyClass とか integer とかは、別箇所で定義されているクラス名(型名)でしかない。
実際に値を代入してプログラム内で参照するのは、そのインスタンスである。
だから、一つのクラスにいろいろな値をセットしたものを別々に保持できる。(mc1 と mc2 のように)
・スレッドとは・・・
プログラムの実行単位?とでもいったらいいのかな。
スレッド内のプログラムは、上から下に順番に実行される。
条件分岐やループで実行順が前後することはあっても、
一つの行を実行し終わるまで、次の行は実行されない。
スレッドを意識したプログラミングをしていなければ、通常は
そういた状態になっている。(シングルスレッド)
スレッドを二つ作れば、それぞれのスレッドでプログラムが上から下に順番に実行され、
ユーザーから見ると、同時に二つの行を実行しているように見える。
ファイルを読み込むとか、TCP/IP通信をするなど、時間のかかる処理を実行する場合に、
あらかじめその処理部分だけを別スレッドとして記述し、必要時にそのスレッドをスタートさせることによって、
時間のかかる処理を実行しながら、他の処理も同時に処理できるようになる。(マルチスレッド)
0433427
2009/07/10(金) 05:13:03>たぶんMeの参照先が違ってるんだろうけど
これはつまり、別インスタンスを参照してるってことだよな
んでこれから
>別スレッドで呼び出されてるのは分かってる
になるのはなんでかわからんのだが
スレッドが違えばインスタンスは別のものなのか?
インスタンスはスレッドごとに生成されるの?
0434デフォルトの名無しさん
2009/07/10(金) 06:42:26スレッドはプロセスが異なるので別のインスタンスになる
通常のWindows概念でのインスタンスでいいのなら
VBのフォームはすべて同じインスタンス
スレッドは別
DLLも別
インスタンスが違うと何が起こるかというとスタックメモリが別になる
つまりグローバルな変数やクラスへは感嘆には相互にアクセス出来ない
0435デフォルトの名無しさん
2009/07/10(金) 08:17:13>>433
Meが参照するのはインスタンスでOK。
そして通常、インスタンスはプロセス単位で生成されることになる。
まあ、.NETのアプリケーションドメインを利用すれば、
単一プロセス内に完全に分離した環境を複数作ったりもできるのだけど、
普通は関係ないな。
0436デフォルトの名無しさん
2009/07/10(金) 09:30:33>インスタンスってのはプロセス固有のWindows管理IDのことだな普通なら
お前の「普通」が判らん。
VBに限らず一般にOOPLで「インスタンス」といえば、プロセス上のメモリに
割り当てられた、オブジェクトの実体。
>スレッドはプロセスが異なるので別のインスタンスになる
もう喋るなw
0437デフォルトの名無しさん
2009/07/10(金) 10:37:41環境
XPPro、C2D E8400、3GBRAM、HDD80GB
フォーム50個位あるプロジェクトいじってるんだけど
起動とかいろいろ遅い(起動30秒くらい、MSDNも起動20秒くらい、全般的にもっさり)
ストレージがネックだと思うんですが、
大容量のHDDよりかSSDにしたほうがいいですかね?
SSDで開発してる方、体感的に速くなりましたか?
0438デフォルトの名無しさん
2009/07/10(金) 11:26:47俺には
>フォーム50個位ある
これを最初に一気に作ってるからだと思えるんだが。
0439438
2009/07/10(金) 11:28:140440デフォルトの名無しさん
2009/07/10(金) 11:37:41初めからSSD入れてるからHDDとのまともな比較はできないけど
DocumentExplorerでSystem.Windows.Forms.RichTextBoxのメンバ一覧開くのに3秒弱ぐらい
これは単に飼い慣らされてるだけか
0441デフォルトの名無しさん
2009/07/10(金) 11:56:09開発でSSDは、ちょっと怖くない?
0442デフォルトの名無しさん
2009/07/10(金) 13:25:44デザイン画面を開きまくってないよな?
開発用にわざわざSSDで入れ直すなら
RAMディスクの方が簡単でよくね?
0443デフォルトの名無しさん
2009/07/10(金) 13:54:33一応SLCにしてる メモリも無駄に積んでるからスワップもまずしないはず
プロジェクト自体はHDDにおいてるし
投資ほどの効果があったかというと首をひねらざるを得ないのは事実
まあPCに金使うのも趣味の一環だから良いけどさ
0444427
2009/07/10(金) 14:00:25プロセスてのはほぼプログラムのEXE単位だよな
んでスレッドってのは実際にCPUが仕事する単位で、
プロセスが一つ以上のスレッドをもって管理しながらプログラムを実行してる
インスタンスは、プロセス単位で生成(管理)される
ここまでOK?
>>434
2行目以降がまったく理解できん
>スレッドはプロセスが異なるので別のインスタンスになる
スレッドは...インスタンスになる?
スレッドはプロセスが異なる...?
>VBのフォームはすべて同じインスタンス
たとえばフォームを何回かnewしても、それはすべて同じインスタンス?
>スレッドは別
何と別?
>DLLも別
何と、何が別?元のexeとスレッドが別ってこと?
>つまりグローバルな変数やクラスへは感嘆には相互にアクセス出来ない
これは、自分と同じクラスの異なるインスタンス間では、って話?
グローバルってのはそのクラスでpublic定義だってこと?
それともそのクラスからみて上位のレベルで定義されてるってこと?
0445デフォルトの名無しさん
2009/07/10(金) 14:06:410446デフォルトの名無しさん
2009/07/10(金) 14:08:38> デザイン画面を開きまくってないよな?
10個位開いてたので1個にしてみると80%くらいの時間になりました。
気づくと色々開いちゃってるのでこまめに閉じるようにしたほうがいいですね。
> 開発用にわざわざSSDで入れ直すなら
> RAMディスクの方が簡単でよくね?
Excelを大量に読み書きする処理作っててRAMディスクは使ってるんですが
プロジェクト一式RAMに置いてもそう変わらなかったです。
開発環境自体も置くのはちょっと容量が厳しそう。
ありがとうございます。
お手軽に劇的な改善は難しそうな感じですかね。
VB6メインでやってて最近復帰したんですが、
その頃に比べてPCの性能は飛躍的に向上してるはずですが、
なかなか難しい物ですね。
0447デフォルトの名無しさん
2009/07/10(金) 14:32:090448デフォルトの名無しさん
2009/07/10(金) 15:30:21だたの先頭アドレスを実態と呼ぼうがIDと呼ぼうが個人の自由だが
0449デフォルトの名無しさん
2009/07/10(金) 15:32:55覚えるしかないのでしょうか?
0450デフォルトの名無しさん
2009/07/10(金) 15:39:14複数の「プログラム」が別々のオブジェクトを参照しながら動いてる。
自分と隣の部屋のやつが、たまたま同時にスパゲティ食ってる状態。どんな食い方しても喧嘩にならない。
マルチスレッド
複数の「プログラム」が同一のオブジェクトを参照しながら動いてる。
自分ちで、兄弟どうしが一緒にスパゲティ食ってるようなもの。スパゲティの取り合いで喧嘩になる。
0451デフォルトの名無しさん
2009/07/10(金) 16:05:19そうだな。便所の壁にでも書いとけ。
0452デフォルトの名無しさん
2009/07/10(金) 16:20:06それって>>407の話?
0453デフォルトの名無しさん
2009/07/10(金) 17:20:57その構造体型の変数間で代入を実行しても
当然のことながら参照型のメンバはコピーされません。
C++ならば代入演算子をオーバロードすればよいのですが、
VB2008ではできません。
参照型のメンバもコピーされるようにするにはどうしたらよいでしょうか?
よろしくお願いいたします。
0454449
2009/07/10(金) 17:24:23違います。
StringやInteger は、Newをしないで使えますよね?
Mathクラスは、New自体が出来ないので、
その見極めは覚えるしかないのかなと思ったので。
0455デフォルトの名無しさん
2009/07/10(金) 17:30:45構造体はCのとは性質も使いどころも違うから気をつけてな。
そういうものは通常は参照型で作ってICloneable.Clone。
0456453
2009/07/10(金) 17:40:31早速ありがとうございました。
ICloneable.Cloneは来週にでもちょっと調べてみます。
0457デフォルトの名無しさん
2009/07/10(金) 19:42:07デザイナでは見えないのに、
プロパティウインドウのドロップダウンに出てくる
コントロールを選んで削除したいのですが、
LocationやSizeをいじっても出てきません。
どのようにすればいいでしょうか。
0458デフォルトの名無しさん
2009/07/10(金) 19:45:02どうせただのテキストなんだし。
0459デフォルトの名無しさん
2009/07/10(金) 20:08:18・Integer は値型なので New 不要。
・String は参照型だけど他とちょっと違ってて、
文字列を代入することでコンストラクタが呼ばれるので
その場合は New 不要。
・Math に限らず、「共有メソッド」を呼び出すときは New 不要。
0460デフォルトの名無しさん
2009/07/10(金) 20:10:35「ドキュメント アウトライン」 (表示メニューの
その他のウィンドウにある) を出しといて
フォームのデザイナを開くと、コントロールやら
コンポーネントが表示されるので、そこで選択して削除。
0461デフォルトの名無しさん
2009/07/10(金) 20:21:45>>458
Designer.vb書き換えですか。
数が20個ぐらいあるので出来ればもっとスマートな方法があればと思ったんですが…。
>>460
なぜかそれでも出てこないんです。
他のコントロールはいくつかのPanelにすべて乗せているのですが
それをすべて削除してドキュメントアウトライン上はFormしかない状態でも
プロパティウインドウのドロップダウンには相変わらず出てきてしまいます。
とりあえず必要なコントロール(が乗っているPanel)をごっそり別の空Formに移して
コードも丸ごとコピペという無理やりな方法で対処しました。
0462デフォルトの名無しさん
2009/07/10(金) 23:12:40Manu.exe
Sub.exe
の2つのプログラムがあるとします。
Manu.exeからProcess.StartでSub.exeを起動しているプログラムがあるのですが、
SubをDll化してManuから参照し、呼び出すのに比べて負荷は大きいでしょうか?
Subは必ずManuから呼ばれるのでSubをDll化してManuから普通に参照するように変えたいのですが
作った人が問題がなければ変えたくないと言っているので変える理由がほしいのです。
よろしくお願いします。
0463デフォルトの名無しさん
2009/07/10(金) 23:35:49何で変える理由がないのに変えたいんだよ
0464デフォルトの名無しさん
2009/07/10(金) 23:58:40exeなんて単なるブートストラップです。偉い人には(ry
0465デフォルトの名無しさん
2009/07/11(土) 00:31:55相手を直接呼ぶのに較べてものすごーく非効率
0466462
2009/07/11(土) 02:05:06Sub.exe的なプログラムがこれから50個くらいできる予定でいます。
1exe=1ソリューションです。
>> 463
>プロセス作るのは一仕事
やっぱり負荷はかかるのですね。
管理がめんどそうなので変更したいと言ったのですが
却下されました。なので変更するための新たな
別の理由がほしかったのです。
>> 464
今のつくりだとMainのところにもフォームを呼び出す前に
ごにょごにょ書いてあるのですが、MainもProcess.Start
を使わずに呼べますか?
0467デフォルトの名無しさん
2009/07/11(土) 02:20:53何でそんな腐った設計にしたんだ・・・。
0468デフォルトの名無しさん
2009/07/11(土) 02:30:11で、.NETで同じようなやり方がわからないから個別のアプリにしたとか。
0469デフォルトの名無しさん
2009/07/11(土) 02:37:36データのやり取りとか何もないわけ?
0470デフォルトの名無しさん
2009/07/11(土) 02:39:56え?普通そうしないの?
1ソリューションに全部入れちゃうの?
0471デフォルトの名無しさん
2009/07/11(土) 03:15:14そりゃ必要に応じてプロジェクト分けるし、ある程度独立してたり他で使うやつとかはソリューションも分けるけど
Form毎にソリューション作ったり、全部一緒にしちゃう(小規模なのは例外)なんて事は普通やらんだろ。
Form毎にソリューション分けてexeにして、Process.Startしてるやつなんて見た事がない。
0472デフォルトの名無しさん
2009/07/11(土) 03:18:00その50個のフォームで一つの業務アプリになるのか?
もしそうなら、一つのEXEでいいと思うがな
アプリ配布に50個のexe配布とか、exeファイルのバージョン管理50個とかやっとれん
>>470
もし50個のexe作るとしても、50個のプロジェクトは作るが、
ソリューションは一つで済ますのが普通じゃないかと思うのだが
0473デフォルトの名無しさん
2009/07/11(土) 09:01:260474デフォルトの名無しさん
2009/07/11(土) 09:05:51*そういう
共通部分のモジュールをソース単位で共有してたり
0475デフォルトの名無しさん
2009/07/11(土) 16:49:13アセンブリは分割しても、特に理由がない限り
プロセスを複数にしないのが普通だと思うが。
0476デフォルトの名無しさん
2009/07/12(日) 03:59:45Me.close
のみで
Me.dispose
をしなかった場合、どのような問題が発生しますか?
0477デフォルトの名無しさん
2009/07/12(日) 04:27:31まあほっといても、いつかはガベコレがリソースを解放してくれるわけですがね。
普通、Formが抱えてるリソースなんて、そんな多くないと思うし。
背景画像とか?
0478デフォルトの名無しさん
2009/07/12(日) 04:36:31CloseでDisposeされる。
この辺の動作はややこしいんでMSDNをよく見たほうがいい。
0479デフォルトの名無しさん
2009/07/12(日) 16:45:20フォーム毎にexeを分けることで、業務が稼動中でもアプリを終了させずに
アップデートや不具合対応が出来るからとかなんとかで、そんな話もありました。
0480デフォルトの名無しさん
2009/07/12(日) 18:05:45コピペコードだらけになるんだろうな
0481デフォルトの名無しさん
2009/07/12(日) 18:37:02WinSockが見当たらなくなりました。
ひょっとして何か別のコントロールに変わってしまったのですか?
0482デフォルトの名無しさん
2009/07/12(日) 18:41:09System.NET名前空間やSystem.NET.Sockets名前空間にあるクラスを使う
0483デフォルトの名無しさん
2009/07/12(日) 19:08:32リンクとして参照すれば共有できるよ。
0484デフォルトの名無しさん
2009/07/12(日) 19:16:370486デフォルトの名無しさん
2009/07/12(日) 19:27:41レスありがとうございます。
System.NET名前空間やSystem.NET.Sockets名前空間について調べてみましたが、
具体的な使い方がよくわかりませんでした。
プロジェクト→クラスでの追加したうえで、Socketを利用する、ということですか?
0487デフォルトの名無しさん
2009/07/12(日) 19:32:48これだけでわからなないなら、オブジェクト指向を勉強しろとしか言いようがない
0488デフォルトの名無しさん
2009/07/12(日) 23:48:15なんらかの不具合が発生してDBに接続が出来なかった場合に
エラーを返すような処理を作りたいです。
例えばDBに接続するところにtyr〜catch文を入れようと思うんですが、
自動で作られている部分の為、どこにあるかわかりませんでした。
どのあたりで、DBに接続している処理が記述されているのでしょうか?
0489デフォルトの名無しさん
2009/07/13(月) 00:01:58メニューの[デバッグ]-[ステップ イン]で見ていけばわかるんじゃね
0491デフォルトの名無しさん
2009/07/13(月) 00:39:310492デフォルトの名無しさん
2009/07/13(月) 02:17:12正規表現で探し出して、カウントする変数をインクリメントすりゃいい
VisualStudio2005 VBにて開発を行っています。
先輩のソースに似せようとしているのですが、
処理の起動方法がわからなくて困ってます。
フォームありのソリューションにて、下記のフォーム起動方法を
Public Class Program
<STAThread()> _
Shared Sub Main(ByVal CmdArgs() As String)
・・・・
Application.Run(New ClassName(param))
・・・・
end sub
end class
Public Class ClassName
Public Sub New(ByVal param As string)
処理
End Sub
End Class
consoleのソリューションにて、
Application.Runに替わる関数を見つけられません。
同じように実行するにはどうしたらいいのでしょうか?
0494デフォルトの名無しさん
2009/07/13(月) 10:11:09Application.Run() は MSDN にも
「アプリケーション メッセージ ループの実行を開始する」
と書かれているように、イベント・ドリブンなアプリケーションのときに使うもの。
コンソールアプリなら、その Main の中に必要な処理を書けばよい。
0495デフォルトの名無しさん
2009/07/13(月) 10:38:03フォルダのExplorer表示を出しています。そうすると必ずあの青色の
「タスクメニュー」が現れてきます。これを消す方法を探しています。
C#, C♯, C#相談室 Part53
http://pc12.2ch.net/test/read.cgi/tech/1245150671/199
にて質問してはおりましたものの回答得られませんでした。もし方法ご存知
の方おられましたら、ご指導のほど何卒よろしくお願いします。
0496デフォルトの名無しさん
2009/07/13(月) 11:01:21DLLは使わずに、共通部分のソースファイルを共有してた。
それを修正するとかは出来ない決まりになってた。
>>484
バージョン管理は大変だったと思う。
担当したのが一部のフォーム(exe)だったから
出来上がったら渡すだけだったしね。
0497デフォルトの名無しさん
2009/07/13(月) 11:12:53システムハンガリアンを使わされるのはつらいよぉ。
0498デフォルトの名無しさん
2009/07/13(月) 21:10:40知らんけど、BHO とか使わないと無理じゃね?
0499デフォルトの名無しさん
2009/07/13(月) 21:26:54btnとかtxtとかlblとか
未だに使ってるんだけれども…
ダメなら初心者の内に勉強しなおしたい
0500デフォルトの名無しさん
2009/07/13(月) 21:29:320501デフォルトの名無しさん
2009/07/14(火) 03:34:45最近だと入力支援があるうえ画面も広いからbuttonHoge, fugaTextと
コントロール名をそのままくっつけることも多い。
無意味なのはクラスのインスタンスにclsHoge, objFugaと名前をつけることだな。
0502デフォルトの名無しさん
2009/07/14(火) 09:23:22伝統みたいになってるところが多いよなあ
0503453
2009/07/14(火) 17:07:24ディープコピーするには、
a = b.CloneCopy()
みたいに、クローンを作成して代入しかないんですね。
結局、ディープコピーの方法を用意してあげても
a = b
が、禁止できない以上、バグの温床になりそうです。
なぜ、VBは代入演算子のオーバロードができないんだ。使えない。
0504デフォルトの名無しさん
2009/07/14(火) 17:07:55If System.IO.Directory.GetDirectories(parentfolder).Length = 0 Then
System.IO.Directory.Delete(parentfolder)
End If
というように空になったら親フォルダをも削除したいのですが
ときどき空になっても空と認識しない場合があります。
フォルダの削除が終わるのを待機するにはどうしたらいいでしょうか?
0505デフォルトの名無しさん
2009/07/14(火) 17:24:56代入先の変数の型で代入の動作が変わる方がよっぽどバグの温床だろjk
0506453
2009/07/14(火) 17:37:59喧嘩をするつもりはないですが、
この型は、a = b でもいいけれど、
こっちの型は、a = b はダメ!
というのも、実際のところ運用が難しいなと思っただけです。
ようするに、参照型を含む構造体は作るなということですね。
0507デフォルトの名無しさん
2009/07/14(火) 19:34:59何の関係もない
まあ>>500が考える構造体と.NETが想定してる値型は別物なんだろう
0508デフォルトの名無しさん
2009/07/14(火) 20:28:10素直にICloneableを実装すればいい。
0509デフォルトの名無しさん
2009/07/14(火) 21:05:06(使うべきでない)
クラスを使うべき
0510デフォルトの名無しさん
2009/07/14(火) 21:10:19C++などで構造体を使うケースは、まずクラスを使うものだと思って間違いない。
0511デフォルトの名無しさん
2009/07/14(火) 21:26:00453には無力だけど勘違いは多少減ったかも知れない
0512デフォルトの名無しさん
2009/07/14(火) 21:26:01構造体を使うのが間違ってる
もともと参照型なら問題にならない
0513デフォルトの名無しさん
2009/07/14(火) 21:29:37名前が違うだけで中身が同じ構造体を処理したいんだけど。
0515デフォルトの名無しさん
2009/07/14(火) 21:37:28参照型 ref class/ref struct
値型 value class/value struct
classとstructの違いはメンバーのスコープのデフォルトがprivateかpublicかの違いだけ。
値型はユーザー定義(構造を持った)値型とプリミティブ(基本)型の2つ。
0516デフォルトの名無しさん
2009/07/14(火) 21:41:47ない
0517デフォルトの名無しさん
2009/07/14(火) 21:42:51プリミティブ型というとプリミティブ型も構造体だろとか言う奴がでてきそうだが
.NETではプリミティブ型は実際に存在する
型情報を擬装してるだけ
0518デフォルトの名無しさん
2009/07/14(火) 21:43:11VBが参照型と値型をわけるのにClass/Structureってキーワードを使ったのが残念だったという話
>>513
そんな古くさいことは古くさい言語でやってれば十分です、みたいな
0519デフォルトの名無しさん
2009/07/14(火) 21:46:000520デフォルトの名無しさん
2009/07/14(火) 22:10:11考え方が違うんだ
コピーが渡るかポインタが渡るかは型の種類によって決まる。
前者は値型、後者は参照型と呼ばれる。構造体は値型。
ポインタ渡しされるようにするには構造体ではなくクラスとして定義する
0521デフォルトの名無しさん
2009/07/14(火) 22:12:34> 名前が違うだけで中身が同じ構造体を処理したい
は実現できるの?
0522デフォルトの名無しさん
2009/07/14(火) 22:18:37メモリ上のイメージを意識するようなプログラムは、
プラットフォーム呼び出しなどをのぞき極力避けるべきだな。
0523デフォルトの名無しさん
2009/07/14(火) 22:21:30StructLayout/FieldOffset 属性って P/Invoke のときにしか使えないもんだと思ってた。
>>513 じゃないけど、勉強になったよ。教えてくれてありがとう。
0524デフォルトの名無しさん
2009/07/14(火) 22:36:230525デフォルトの名無しさん
2009/07/14(火) 22:56:290526デフォルトの名無しさん
2009/07/14(火) 23:01:540527デフォルトの名無しさん
2009/07/14(火) 23:56:13C#だとあるんだけど構文が特殊でぜんぜんわかりません
TextBox1.text="hoge"
TextBox2.text="hogehoge"
これをやりたんです
お願いします
0528デフォルトの名無しさん
2009/07/15(水) 00:03:570529デフォルトの名無しさん
2009/07/15(水) 00:16:12Delegate Sub hogeDelegate(ByVal c As Control, ByVal s As String)
Sub SetText(ByVal c As Control, ByVal s As String)
c.Text = s
End Sub
Sub ThreadSafe_SetText(ByVal c As Control, ByVal s As String)
c.Invoke(New hogeDelegate(AddressOf SetText), c, s)
End Sub
で、使うときに
ThreadSafe_SetText(TexxtBox1, "hoge")
0530デフォルトの名無しさん
2009/07/15(水) 00:24:36ちょっとやってみます!
C#は仮想関たら使って意味がわかんないんですが、かえってこの方が意味がわかりやすいですね
0531デフォルトの名無しさん
2009/07/16(木) 02:31:27画面をモノクロでキャプチャーすることは出来ますか?
やりたいのは
キャプチャーしたデータを2色に変換
手持ちの2色の画像データと比較して類似部分を調べる
というものなのですが、キャプチャーの段階で2色ができれば
変換の手間が省けるかなと思いました。
100*100ピクセルくらいのサイズの画像を
一秒以内に何十枚か処理したいです。
0532デフォルトの名無しさん
2009/07/16(木) 03:22:41複数個のGridViewを表示しようとしているのですが、
そもそもGridViewにはDataTableみたくCloneメソッドは用意されていないのでしょうか?
というのも、プログラム内からGridViewのインスタンスを作成し、行>列・・・色 等を
作成していけば確かにGridViewを動的に作成する事はできるのですが、
面倒です。
DataTableにはDataTable.Cloneというメソッドが用意されているのに、
GridViewにはGridViewの構造をコピーするメソッド(機能)は用意されていないのでしょうか?
0533デフォルトの名無しさん
2009/07/16(木) 09:39:30>一秒以内に何十枚か
VB単体だと難しそうだねえ。
どっかでライブラリ (DLL) 探してきて (勿論、C/C++ で自作も可)
P/Invoke で呼び出すとかした方がいいかも知んない。
>>532
マルチすんな糞が
0534デフォルトの名無しさん
2009/07/16(木) 09:59:27画像処理はせめてポインタ使える言語でやった方が…
0535デフォルトの名無しさん
2009/07/16(木) 10:05:140536デフォルトの名無しさん
2009/07/17(金) 09:27:16#Region定義行や関数の頭としっぽの左側にソースを隠すことができる
+マークがありますけど、この呼び方はなんというのでしょうか?
キーボードショートカット操作で隠したり表示させたりする方法を
検索したいのですが用語がわからず困っています。
0537デフォルトの名無しさん
2009/07/17(金) 09:39:36コードをアウトライン表示する/非表示にする
0538デフォルトの名無しさん
2009/07/17(金) 18:14:540539デフォルトの名無しさん
2009/07/18(土) 00:16:040540デフォルトの名無しさん
2009/07/18(土) 02:59:07あるよ
0541デフォルトの名無しさん
2009/07/18(土) 21:16:58txtレコードをクエリするいい方法ないですか?
外部コンポーネントで何かないか、
WindowsAPIで呼び出してできる例とかあれば良いんですが
それ以外で思いつくのは
NSLOOKUPを呼び出す
ソケットでDNSクエリ自作
ぐらいだが、どっちもあんまりやりたくない
0542デフォルトの名無しさん
2009/07/18(土) 21:31:27これだったかな?
http://www.codeproject.com/KB/IP/dnslookupdotnet.aspx
0543デフォルトの名無しさん
2009/07/18(土) 22:44:330544デフォルトの名無しさん
2009/07/19(日) 12:22:30テキストボックス(複数行)の最終行を取得するにはどうすればよいでしょうか?
TextBoxのヘルプ等見たのですが見つけられませんでした。
感覚的には
lastLine = tboInput.GetLastLine()
のような感じで求められるのではと思っているのですが。
ご存知の方ご教示お願いします。
0545デフォルトの名無しさん
2009/07/19(日) 12:40:18末尾の文字位置から行を求める方法とか…
lastLine = tboInput.GetLineFromCharIndex(tboInput.Text.Length - 1)
0546デフォルトの名無しさん
2009/07/19(日) 12:42:18>>545で得られるのは行インデクスです
0547デフォルトの名無しさん
2009/07/19(日) 12:45:41Dim allLines() As String = textbox.Lines()
lastLine = allLines(allLines.Length -1)
0548544
2009/07/19(日) 13:36:30早速のレスありがとうございます。
>あ、行の文字列の取得なのか
分かりにくくて済みません。まさに最終行のインデックスです。
ですから>>545のご回答が教えたいただきたかったことになります。
今ほどプログラムに組み込んだところうまくいきました。
大変助かりました。ありがとうございました。
>>547も参考にさせていただきます。
0549デフォルトの名無しさん
2009/07/20(月) 02:39:47入力欄をhh時mm分という表記にしたのですが、hhを入力した後、
カーソルを"時"の後ろに自動で動くようにしたいと思っています。
(mmからbackspaceで戻った際も同様にカーソルを移動させたい)
ACCESSでは特にプログラム組まなくてもそのような動作が出来ていたのですが
、VB.NETでは自分で実装が必要ですよね?
どのようにすればいいか教えてください。
お願いいたします。
0550デフォルトの名無しさん
2009/07/20(月) 05:11:47各PC上からVB.NETで作成したアプリで接続するような形のシステム
を作っているのですが、ネットワークが繋がらない等の理由で
DBにアクセス出来なかったときにエラーを返す処理をどのように
すればよいかわかりません。
現在は、下記のような方法で起動時にDBのテーブルからデータが正常に取得
出来なかった場合、エラーを返すようにしています。
try
〜TableAdapter.Fill(〜dataset.〜テーブル)
catch
Msgbox("〜テーブルからデータを取得できませんでした")
end try
この場合だと、DBに接続出来なかったのか、テーブルに不正なデータが入っていて
取得出来なかったのか判断がつきません。
現在DBへ接続しているのかという状況を返すメソッドがあれば教えてください。
0551デフォルトの名無しさん
2009/07/20(月) 13:31:12ふつー、catch でexception拾うだろ。
0552デフォルトの名無しさん
2009/07/20(月) 13:35:090553デフォルトの名無しさん
2009/07/20(月) 14:01:39俺も最初の2行でもう読む気うせたw
0554デフォルトの名無しさん
2009/07/20(月) 15:42:09Accessって時点で地雷臭しかしないからな
0555デフォルトの名無しさん
2009/07/20(月) 15:45:080556550
2009/07/20(月) 17:26:18じゃあどうすればいいんですか?
DBサーバーは会社で立てれないんでmdbファイルを共有くらいしか
思いつきませんでした。
納期は迫ってますが、自社から依頼された開発なのである程度は自分で
仕様決めてよいので今からでもなんとか変更できます。
アドバイス下さい。
0557デフォルトの名無しさん
2009/07/20(月) 17:28:380558デフォルトの名無しさん
2009/07/20(月) 17:41:09そうだな。
じゃあ、せめて同時には一人しかアクセスできないようにするかな。
0559550
2009/07/20(月) 17:52:42すみません。
書いてませんでしたが、同時アクセスは出来ないようします。
基本的にスタンドアロンで問題無いシステムなんですが、
各自のパソコンから使えるようにしたかったので、mdbファイルを
共有ファイルサーバー上に置くようにしました。
コーディングはほぼ完了したのですが、同時アクセス出来ないような仕組みは特に
作ってません。
mdbファイル側で共有設定してないから2台以上の接続があったら勝手にはじいてくれる
と思ってるのですが、処理を組み込んだ方がいいですか?
0560デフォルトの名無しさん
2009/07/20(月) 17:56:130561550
2009/07/20(月) 18:03:24そのような処理のやり方がわからなかったので、
現状ではtableadapter.Fillの時点で例外を拾ってエラーを吐くように
してます。
エラー吐いたらDBを他で使ってるか、データがおかしいか、ネットワークがおかしいから
時間が経ってから使用するようなルールにしようと思ってます。
0562デフォルトの名無しさん
2009/07/20(月) 18:17:390563デフォルトの名無しさん
2009/07/20(月) 18:25:100565デフォルトの名無しさん
2009/07/20(月) 18:33:180566デフォルトの名無しさん
2009/07/20(月) 18:35:29特に指定しない限り、別のモード (たとえば、adModeShareExclusive) を設定しない限り、
ADO の接続は共有更新アクセス モードで開かれます。
嘘乙
0567550
2009/07/20(月) 18:45:55そうなんですか?
俺の環境では出来なかったような気がしたのですが、すみません間違ってたようです。
ということは現在の作っているシステムだと、おそらく2ユーザー以上が同時に接続
出来てしまうものと思われますので、DBのユーザーテーブルにログイン中を示すフラグを
持たせる事で回避させることにしました。
他ユーザーがログイン中だとエラー吐いて画面をクローズさせる処理で問題ありませんか?
0568デフォルトの名無しさん
2009/07/20(月) 18:50:210569550
2009/07/20(月) 18:56:59自分の作り方だとTableAdapter.Fillの1行でDBのOpenから取得まで
全て行っているので、どこに排他で開くコードを記載していいか
わからないんです。
納期まであまり時間が無く、簡単な方法が思いつきません。
TableAdapterのプロパティのあたり弄ればいけますかね?
0570デフォルトの名無しさん
2009/07/20(月) 19:02:020571デフォルトの名無しさん
2009/07/20(月) 19:04:170572550
2009/07/20(月) 19:04:58Dim cn As ADODB.Connection
cn = New ADODB.Connection
cn.Mode = adModeShareExclusive
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\〜.MDB;"
これでDBを開くまではわかるんですが、
この後、TableAdapeterのFillメソッド使うのって有りですか?
open使った場合にはcloseまできちんと書くやり方にしなければいけませんか?
0573550
2009/07/20(月) 19:10:22DataSetだと排他モードで開いておくと言うのは駄目なんですね。
やっぱりログイン中のフラグを設ける方向で考えます。
>>571
社内で使用するプログラムなのでこのまま納品して白を切ってもいけそうですが
せっかく作るんで修正します。
納期に遅れたところで上司の給料がカットされるくらいなんで全然問題ないですw
0574541
2009/07/20(月) 21:10:32情報サンクス
しかしこれ、登録しないとダウンロードさせてくれないのか...
英語の規約とか読むの大変
>>543
ちょっとしらべてみた範囲ではやり方がわからなかった
プラットフォームSDK入れろとかなんとか、
ちょっと手軽に使うってわけにはいかないみたいだ
いろいろ探して、.NET 3.5のC#でDNSクエリするやつみつけた
んでそれ使ってみたんだが...
.NET Framework3.5って、Windows2000で動かないという事実を発見して挫折中
0575デフォルトの名無しさん
2009/07/20(月) 21:19:42でいけそう。
0576541
2009/07/20(月) 21:42:55ありがとう
WindowsAPIですね。たしかにいけそうだが
これを.NETから呼び出すのも結構苦労しそうだ
ほかにもいくつか.NETでDNSクエリするの見つけたんで検討中
.NET Frameworkでサポートしてほしいとこだが...
WindowsAPIは最後の手段にします
0577デフォルトの名無しさん
2009/07/20(月) 21:50:59http://pinvoke.net/default.aspx/dnsapi/DnsQuery.html
とかあるし。
0578550
2009/07/21(火) 03:38:40アプリが例外エラーで落ちたときにフラグをオフに出来ないからです。
なにかいい方法がありましたら教えてください。
0579デフォルトの名無しさん
2009/07/21(火) 06:10:280580デフォルトの名無しさん
2009/07/21(火) 08:05:36起動したらロックファイルを作り、終了したら削除。
0581デフォルトの名無しさん
2009/07/21(火) 10:30:34ないんです…。
あるプロジェクトのフォームプロパティにはあるんですが、別のプロジェクトのプロパティには無いんです。
0582デフォルトの名無しさん
2009/07/21(火) 15:59:36何も解決してないからw
>>578
起動時にミューテックス作成&取得。
失敗したら誰かが使用中だと解るし、プロセスが終了したら勝手に解放される。
0583デフォルトの名無しさん
2009/07/21(火) 17:44:470584541
2009/07/21(火) 19:59:35このサイトいいですね
構造体やら列挙やらをVB.NET用に書き換えるのに苦労するかと思ったんだ
まあ慣れた人なら機械的に変換していけるんだろうけどね
0585デフォルトの名無しさん
2009/07/21(火) 22:05:35だめ。
バカだなぁ、おまえら。そういうときのために DB サーバーがあるんだろ?
・・・あれ?
0586デフォルトの名無しさん
2009/07/21(火) 22:09:210587デフォルトの名無しさん
2009/07/21(火) 23:45:080588デフォルトの名無しさん
2009/07/22(水) 00:05:16そういうことだよ
0589デフォルトの名無しさん
2009/07/22(水) 00:52:07TableAdapterとかDataSetだからダメって何言ってるの?
ところで、なんでADODBなんだよ。
TableAdapterの中見てみろ。
0591デフォルトの名無しさん
2009/07/22(水) 18:41:40ページフッタのFormatイベント内で
最大ページ数を取得するにはどのようにしたらよいのでしょうか?
0592デフォルトの名無しさん
2009/07/22(水) 21:02:43サポートに電話して聞け
0593550
2009/07/23(木) 02:56:47排他で開いても、Datasetに取得した時点でDBの接続は切れるんで
そのあと、他からもアクセス出来てしまいます。
とりあえず、皆様にはいろいろアドバイス頂きましたが、
時間も無い為、DB上のレコードにフラグを立てて使用中かどうか判断
することにしました。
強制終了して、フラグが立ったままになったらアプリを起動出来ない
ちょっと痛いシステムとなってしまいましたが、バレなきゃOKです。
まだ直す時間はあるので、もしアドバイスがあったらお願いします。
0594デフォルトの名無しさん
2009/07/23(木) 08:16:35やっぱロックファイルのがいいんでね?
で突然死対策に1秒ごとに空更新でもして
他のプログラムはファイルがあったとしても、更新時間見て
10秒以上たってたら死亡判定とか
0595デフォルトの名無しさん
2009/07/23(木) 08:19:560596デフォルトの名無しさん
2009/07/23(木) 08:44:51このメモリ浪費家がッ
0597デフォルトの名無しさん
2009/07/23(木) 08:49:49終了時にクローズするようにすれば
突然死してもファイルはクローズされるんじゃない?
多重起動の判定はロックファイルをライトオープンできるかどうかで。
0598デフォルトの名無しさん
2009/07/23(木) 09:06:09Public Class Form1
Private sw As System.IO.StreamWriter
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
sw = New System.IO.StreamWriter("\\共有PC\共有フォルダ\lockfile.txt", False, System.Text.Encoding.GetEncoding(932))
Catch ex As Exception
MsgBox("他の人が使ってますお")
Application.Exit()
End Try
End Sub
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Try
sw.Close()
Catch ex As Exception
End Try
End Sub
End Class
0599デフォルトの名無しさん
2009/07/24(金) 10:52:42エラー情報としていろいろ内部コードが表示されるやつですが、
あの情報には「〜.Designer.vb」のどこの行がNGなのかが
不明なので、どこを直せばいいのかわからない場合が多い。
こういうとき、再コンパイルしてるときもあるが、ダメなときは
開発環境自体を立ち上げ直して直るときもある。
しかしそれでもダメな場合も多い。こういうときは皆さんどんな風に
して原因突き止めていますか、よろしければご指南を頂きたく。
よろしくお願いします。
0600デフォルトの名無しさん
2009/07/24(金) 14:29:290601599
2009/07/24(金) 14:59:40ですよね、で、その場合、そのどこがNGなのかの情報が、あのたくさん
出てくる内部コードの情報には出てない場合がほとんどなのでした。
どこがNGなのかがわかれば対応できるのですが、皆目情報がなくて困って
いるのでした。
0602デフォルトの名無しさん
2009/07/24(金) 16:03:210603599
2009/07/24(金) 17:06:40>エラー一覧
今使っているのはVS2005なのですが、デザイナー画面が出るところに
------
パスの形式が無効です。
非表示
場所 System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
場所 System.IO.Path.NormalizePath(String path, Boolean fullCheck)
場所 System.IO.Path.GetFullPathInternal(String path)
場所 System.Reflection.AssemblyName.GetAssemblyName(String assemblyFile)
場所 Microsoft.VisualStudio.Design.VSTypeResolutionService.AddProjectDependencies(Project project)
場所 Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly()
場所 Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Assembly& assembly, String description)
・・・
-------
こういった内部コードが現れては来るのですが何行目が悪いという情報がなく、
「エラー一覧」の中には特に表示されないのでした。どこがNGなのかわかれば
ありがたいのですが、それが出て来ないのでした・・・
0604デフォルトの名無しさん
2009/07/24(金) 18:53:06その一つ上の行のメソッド名をDesigner.vb内で検索
0605599
2009/07/24(金) 19:23:30どうもです!探してやってみます!・・・と思って、今もう一度デザイナー
を起動したら・・・、ありゃ?何にも他のことしてないのにナンデだろ??
直ってちゃんと出てる。。。なんだろぉ〜。
この次またNGになったらその仕方で見てみます。助かりました、大変
ご迷惑、おかけしてすみませんでした。。。
あれーそれにしても・・・。
0606デフォルトの名無しさん
2009/07/25(土) 10:57:36Dim app As New Excel.Application
Dim books As Excel.Workbooks
Dim book As Excel.Workbook
Dim sheets As Excel.Sheets
Dim sheet As Excel.Worksheet
のように定義すると、端末によってNew Excel.ApplicationやExcel.Workbooksが定義されていませんというようなエラーがでます。
Imports System.Runtime.InteropServices
Imports Microsoft.Office.Core
は記述してあり、Microsoft Excel 11.0 Object Libraryは追加してあります。
どの端末もVB2003はインストール済みで上記の設定はしてあるのですが、端末によってこのエラーが出るときと出ないときがあります。
このエラーがでないようにするにはどうすればいいのでしょうか?
0607デフォルトの名無しさん
2009/07/25(土) 11:08:320609デフォルトの名無しさん
2009/07/25(土) 12:40:210610デフォルトの名無しさん
2009/07/25(土) 13:59:09Officeのインストールを実行しないと入らないからなあ。
0611デフォルトの名無しさん
2009/07/25(土) 14:18:40Microsoft Excel 11.0 Object Libraryへの参照をプロジェクトに追加したときに
VSが自動的に生成するCOMラッパークラスの入ったdll(生成されるファイルのファイル名は忘れた)
が実行環境にインストールされてないんでしょ。
プロジェクトエクスプローラを「全てのファイルを表示」にしてる?
っていうか、こんな初歩的なことも知らないとしたら相当ヤバいな。
0612デフォルトの名無しさん
2009/07/25(土) 14:30:29Interop.Excel.dll
Interop.Office.dll
あたり?
0613デフォルトの名無しさん
2009/07/25(土) 18:25:49だからコネクションは自分で明示的に開けばいいの。
なんのためにConnectionプロパティが生成されると思ってんだ。
TableAdapterだからって接続したままに出来ない理由はない。
0614デフォルトの名無しさん
2009/07/25(土) 18:27:05自分に突っ込んでどうする…
0615606
2009/07/25(土) 19:13:53ありがとうございます。
Interop.Excel.dll
Interop.Microsoft.Office.Core.dll
は存在して、参照設定から見えていたと思います。
>OfficeのPIA
他の人もアセンブリの問題で色々苦労していたようなので、これが原因なのかもしれません。
Dim app As Object
Dim book As Object
Dim sheet As Object
app = CreateObject("Excel.Application")
こんな感じだと正常に動作するようなんですが…
0616デフォルトの名無しさん
2009/07/25(土) 19:35:52ところでそれってソース開いたときにエラーとかじゃ無くって
実行するときにエラーってことだよね?
念のため
0617デフォルトの名無しさん
2009/07/25(土) 20:08:07人の話ちゃんと聞こうよ。
参照設定は大丈夫か?なんていってないでしょ。
実行環境の話をしてるんだよ。
その2つがユーザーのマシンにもちゃんと入ってるの?
いやまず間違いなく入ってないんだってば・・・
0618デフォルトの名無しさん
2009/07/25(土) 21:06:43アプリケーション固有のメッセージを外部ファイルとして保存して、
プログラム側で起動時に読み込むようなものを作成しています。
上記のプログラムを作成するための定石、または、.NET Framework標準の
クラスなどが存在していますか?
ご存知の方がいれば、教えてください。
現在は外部ファイルをXMLにして、
DataTableのReadXMLで読み込む手法をとっています。
0619デフォルトの名無しさん
2009/07/25(土) 21:08:51プロジェクトのプロパティから追加すれば、簡単に扱えるよ。
0620デフォルトの名無しさん
2009/07/25(土) 21:11:390621デフォルトの名無しさん
2009/07/25(土) 21:15:49使う人によってExcelのバージョンがまちまちなのでCOMは使わず以下のような感じです。
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.open(パス)
xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(1, 1).Value = "あああ" '※1
xlSheet.Cells(1, 2).Value = "いいい" '※2
xlApp.DisplayAlerts = False
xlBook.Save()
xlBook.Close()
xlApp.Quit()
xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing
GC.Collect()
データを入力する部分で、※1だけなら問題ないですが※2を追加するとプロセスが残ってしまいます。
何が原因なのでしょうか。
開発環境のExcelは2000です。
0622デフォルトの名無しさん
2009/07/25(土) 21:24:44vb.net excel プロセス でググるといろいろ出てくる
ちゃんと作るのは非常に面倒だからそこだけWSHのVBSなんかで書いてもいいよ
0623デフォルトの名無しさん
2009/07/25(土) 21:42:22情報ありがとうございます。
試してみます。
>>620
テキストファイルで修正できることを前提にしています。
開発終了後にそんな日が来るとは思いませんが、
どっかのエロいアーキテクトが書いたらしい規約に従う必要があるので……
0624デフォルトの名無しさん
2009/07/25(土) 21:45:48レスありがとうございます。
COM参照を先にするかあとにするかだけで処理は一緒って認識で合ってますか?オブジェクト使う度に解放が必要と。
WSHは使ったこと無いので調べてみます。
0625デフォルトの名無しさん
2009/07/25(土) 21:49:39必ず逐一全て手動で解放する必要がある
0626デフォルトの名無しさん
2009/07/25(土) 23:07:25ソリューションファイルを開いたときに、New Excel.ApplicationやExcel.Workbooksの所に波線が引かれ、コンパイルができないのです。
>>617
dllが存在しないと、参照設定のExcelとかInterop.Microsoft.Office.Coreのところに三角のマークが出るような気がしました。
確かに全てのファイルを表示にはしていなかった可能性があるので、obj配下にdllが存在しなかったのかもしれません。
0627606,626
2009/07/25(土) 23:12:270628デフォルトの名無しさん
2009/07/25(土) 23:17:26できました。ありがとうございました。
ちなみに>>621はMSのサンプルを真似たものなんですが、結局全然違うコードになりました。
あのサンプルは一体何だったんでしょうか…。
0629デフォルトの名無しさん
2009/07/25(土) 23:22:08それ一番最初に書くところ
みんな実行時だと思ってたんだから
でね、それは単に参照が無いだけだから
0630606
2009/07/25(土) 23:26:56ありがとうございます。
プロジェクトのディレクトリごとコピーしているので、obj配下にdllはあるのではないかと思います。
参照設定でも三角マークは出ていませんし。
全く同じコードをプロジェクトごとコピーしたのに、端末によってコンパイルができない理由がわからないのです。
0631デフォルトの名無しさん
2009/07/26(日) 00:00:18あーもう
じゃ「参照が有効になってない」って言えばいい?
一度参照削除してもう一度登録しなおしてみ?
0632606
2009/07/26(日) 00:15:33どうもです。
一度参照設定のExcel等を削除して登録し直したのですが、それでも駄目でした。
どうも端末依存でアセンブリの問題があるらしいので、それが原因のような気もしているのです。
他の人も逆に私がコンパイルできない端末でないとコンパイルできないようなことを言っていたし、
端末固有の設定がおかしいのかもしれません。
0633デフォルトの名無しさん
2009/07/26(日) 00:25:12何度かやったことがあるけどそんな問題は起こった記憶がないな。
まさかとは思うけど、
(1) 環境ごとにエクセルのバージョンが違う
(2) エクセルそのものがインストールされてない
なんてことはないよね?
0634デフォルトの名無しさん
2009/07/26(日) 00:34:48ありがとうございます。
エクセルはインストールされていて、両方2003だったと思います。
コンパイルできない端末には確かFlex Gridがインストールされているなど、特殊な設定がなされているのです。
自宅では問題なくコンパイルできていますし、やはり端末依存の問題なのかもしれません。
Marshal.ReleaseComObjectを使っても逆に不安定になったりするし、.NETからエクセルを動かすのは難しいなぁ。
0635デフォルトの名無しさん
2009/07/26(日) 00:48:31それは複数のassenblyファイルがある場合だわ
消したらいいよ。
0636550
2009/07/26(日) 01:14:25それよさそうですね。
ちょっと試してみようと思います。
ただ問題は、ロックファイルの出力先が固定になっている部分です。
mdbファイルの場所を移動しても探せるように、Connectionstringをいじれる仕様なので、
ロックファイルの出力先アドレスをxmlファイルに保存しなきゃいけないかも知れません。
納期が近い為、そこまで手が回りませんが参考になりました。
どうもありがとうございました。
0637デフォルトの名無しさん
2009/07/26(日) 01:17:10AssemblyInfo.vbではなく、確かWindowsディレクトリ配下にアセンブリファイルがあり、それが端末によって異なっているせいで
端末によってコンパイルできたりできなかったりするような話は聞きました。
Dim app As Object
Dim book As Object
Dim sheet As Object
app = CreateObject("Excel.Application")
こんな感じに書くとコンパイルできるようなので、もうコードを書き直すしかないのかなと思っています。
0638デフォルトの名無しさん
2009/07/26(日) 01:43:08普通app.configに書かない?
0639550
2009/07/26(日) 01:44:08ただいま、試験的にプログラムを作って動かしたんですが、完璧ですね。
streamwriterをcloseしない限りは、そのアプリが専有で開いてるから
他からのアクセスが出来ないってことですね。
プログラムが異常終了しても自動的にlockfileへの専有が外れるから
他からのアクセスが可能になるということですね。
これかなりいいと思います。
ありがとうございました。
0640デフォルトの名無しさん
2009/07/26(日) 02:01:26当初の質問と関係なくなってるなw
0641550
2009/07/26(日) 02:33:32VBから見えてないのか、Streamwriterで例外エラー拾いますね。
たいした問題じゃないので我慢するしかないですねこれは・・・
0642デフォルトの名無しさん
2009/07/26(日) 20:18:52なんでわざわざ独自に作りこむのかね。
0643デフォルトの名無しさん
2009/07/26(日) 20:24:270644デフォルトの名無しさん
2009/07/26(日) 20:58:34排他で開きっ放しに出来るだろうけど手間考えたら
>>598 みたいな方法が一番簡単だな
0645デフォルトの名無しさん
2009/07/26(日) 21:09:33それなら別次元の排他処理をしてしまうのもあり
だいたいちゃんとするならDBサーバーを入れるべきだし。
0646デフォルトの名無しさん
2009/07/27(月) 06:22:32Dim p As System.Diagnostics.Process
Dim ssPath As String = "C:\Program Files\Microsoft Visual Studio\VSS\win32\ss.exe"
Dim ssDir As String = "C:\Program Files\Microsoft Visual Studio\VSS\win32"
Dim ssUser = "user"
Dim ssPwd = "user"
Dim GetPath = "D:\work"
If ssPath.IndexOf(" ") > 0 AndAlso ssPath.Substring(0, 1) <> """" Then
ssPath = String.Format("""{0}""", ssPath)
End If
'ComSpecのパスを取得する
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
'出力を読み取れるようにする
psi.RedirectStandardInput = False
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
'ウィンドウを表示しないようにする
psi.CreateNoWindow = True
'コマンドラインを指定("/c"は実行後閉じるために必要)
psi.Arguments = "/c " & ssPath & " get -gtm " & sName & " -GL" & GetPath & " -Y" & ssUser & "," & ssPwd
'起動
p = System.Diagnostics.Process.Start(psi)
result = p.StandardOutput.ReadToEnd
こんな感じでVSSから最新バージョンを取得しているのですが、データベースのパスを指定したいと思い、
psi.Arguments = "/c set SSDIR=" & ssDir & " && " & ssPath & " get -gtm " & sName & " -GL" & GetPath & " -Y" & ssUser & "," & ssPwd
のようにset SSDIRを追加すると取得できなくなってしまいます。
どこが間違っているのでしょうか?
0647デフォルトの名無しさん
2009/07/27(月) 07:40:110648デフォルトの名無しさん
2009/07/27(月) 08:02:57ildasmで見ると、String.Concatで連結されているのが確認できるよ。
こういう一連の連結に使う分には何ら問題は無い。
0649デフォルトの名無しさん
2009/07/27(月) 08:06:190650デフォルトの名無しさん
2009/07/27(月) 08:22:00読みにくくてかなわん。
0651デフォルトの名無しさん
2009/07/27(月) 08:36:24cmd /c"set AAA=XXX && echo %AAA%"
%AAA%
cmd /V:ON /c"set AAA=XXX && echo !AAA!"
XXX
0652デフォルトの名無しさん
2009/07/27(月) 23:07:000653646
2009/07/28(火) 00:10:18週末に試してみようと思います。
0654デフォルトの名無しさん
2009/07/28(火) 01:10:351.Windows ムービー メーカー を起動する
2.対象の画像を読み込む
3.ムービーの発行でDV-AVIを選んで実行
4.AVI動画が完成\(^o^)/
0655デフォルトの名無しさん
2009/07/28(火) 22:21:11コンボボックスのDataSourceにDataTableを入れたのですが、
中身が表示されません。
DisplayMemberとValueMemberプロパティにも項目名を設定しています。
セットした後に、SelectedValueとSelectedTextの値を見ると、
SelectedValueには値が入っていますが、SelectedTextには値がありません。
パッケージをコールすると、
表示する用の文字列と裏で持つ用の文字列を複数レコード取得します。
調べても、問題ないと思うのですが何が悪いのでしょうか?
combo1.DataSource = DataTable
combo1.ValueMember = "AAA"
combo1.DisplayMember = "BBB"
試しに、AAAとBBBを逆にセットしてみたのですが、やはりSelectedValueの方しか値が入っていません。
よろしくお願いします。
0656デフォルトの名無しさん
2009/07/28(火) 22:26:570657デフォルトの名無しさん
2009/07/28(火) 22:27:000658デフォルトの名無しさん
2009/07/28(火) 22:32:58DataTableには値がちゃんと入っています。
デバッグでも確認しましたし、DataGridViewに突っ込んで確認しています。
>>657
そこは調べ不足でした。SelectedItemで確認するのが正しいですね。
最悪、ループでAddしていくしかないですかね…
0659デフォルトの名無しさん
2009/07/28(火) 22:37:50DataTable の指定とかおかしそうな気がする。
0660デフォルトの名無しさん
2009/07/28(火) 22:43:14ソースが手元にないので、覚えている範囲で書きます。
Using ds As DataSet = (オラクルパッケージをFillメソッドで実行)
Using dt As DataTable = ds.Tables(0)
combo1.DataSource = dt ←このdtをDataGridViewに入れ、値が入っていることを確認
combo1.ValueMember = "AAA"
combo1.DisplayMember = "BBB"
End Using
End Using
こんな感じです。
0661デフォルトの名無しさん
2009/07/28(火) 22:48:350662デフォルトの名無しさん
2009/07/28(火) 23:31:00うわっ、すいません。初歩的な所で…
なぜ、DataGridViewは表示されたままだったのでしょうか?
0663デフォルトの名無しさん
2009/07/30(木) 11:41:38String.Format("合 計 {0,12:\\###,###,##0}", dTotal) → 合 計 -\9,000
String.Format("合 計 \{0,12:###,###,##0}", dTotal) → 合 計 \ -9,000
String.Format("合 計 {0,12:\\-###,###,##0}", dTotal) → 合 計 -\-9,000
dTotalがマイナスの場合は-1をかけて、
String.Format("合 計 {0,12:\\-###,###,##0}", dTotal)とすれば
合 計 \-9,000になるのですが、それ以外の方法で
表示させるにはどうしたらいいでしょうか?
0664デフォルトの名無しさん
2009/07/30(木) 11:45:45を使えば正負でそれぞれに書式指定できる
使い方はカスタム数値書式指定文字列のページ見れ
0665デフォルトの名無しさん
2009/07/30(木) 13:01:180666663
2009/07/30(木) 13:03:44おかげさまで出来ました!
もっと勉強します。
0667デフォルトの名無しさん
2009/07/30(木) 13:53:02できるのであれば方法を教えてください
Visual Studio 2005 Service Pack 1 セキュリティ更新プログラム(KB971090)
0668デフォルトの名無しさん
2009/07/30(木) 14:00:150669デフォルトの名無しさん
2009/07/30(木) 14:08:44それクソ時間かかるよな。SP1 のときも思ったけど。
0670デフォルトの名無しさん
2009/07/30(木) 14:51:40だから、DLしてもどっちみち時間かかる
0671デフォルトの名無しさん
2009/07/30(木) 17:10:06そうそう
だから手動でダウンロードしたいわけなのよ
0672デフォルトの名無しさん
2009/07/30(木) 17:25:13249MBワロタ
0673デフォルトの名無しさん
2009/07/30(木) 17:33:05なんか問題あったりするんでしょうか?
EXCELのオブジェクトを作成したスレッド以外から使ったりはしない前提です。
なんかイマイチこの辺を理解してないんです。
0674デフォルトの名無しさん
2009/07/30(木) 17:49:22ありがとうございます
0675デフォルトの名無しさん
2009/07/31(金) 01:33:17GridViewとDataTableをバインドすると普通は【A】という風に表示されると思うのですが、
グループが同じ場合には次の【B】の様に表示したいと思います。
どうすれば実現する事が出来るのでしょうか?
【A】
GROUP EMP_ID
________________________
A 1
A 2
B 3
B 4
【B】
GROUP EMP_ID
________________________
A 1 2
B 3 4
0676デフォルトの名無しさん
2009/07/31(金) 08:14:56GridViewのEMP_ID列をテンプレートフィールドとし、
その中に子Repeaterを配置する。
子Repeaterは親のGROUPを引数として
EMP_IDを返すようなメソッドとバインドする。
(引数の与え方としては一旦HiddenFieldに仕込むのが楽だろう)
ただし、この場合、GROUPごとにEMP_IDを取得するSQLが流れる。
GROUP数が多い場合は要注意。
俺ならEMP_GROUPクラスとEMPクラスを作って、
EMP_GROUPのListを返すメソッドを作成。
Repeaterにバインドさせる。
んで、ID列を返すメソッドとして以下のようなのを作ってお終い。
for each emp as EMP in EMP_GROUP
'デリミタでIDを結合
Next
Retuen 結合されたID文字列
0677デフォルトの名無しさん
2009/07/31(金) 08:59:46ありがとうございます。
試してみます。
0678デフォルトの名無しさん
2009/08/01(土) 01:28:50配布する予定だから他の人のがどこに置くのがわからないって前提です
0679デフォルトの名無しさん
2009/08/01(土) 01:32:01VB 的には、My.Application.Info.DirectoryPath から取ればいい。
0680デフォルトの名無しさん
2009/08/01(土) 01:47:19トン
1行ずつ読み込んで配列に入れたいんだけど配列の数って先に宣言しないとだめなのかな?
0681デフォルトの名無しさん
2009/08/01(土) 01:54:36配列そのものじゃなくていいならList(Of String)で十分
全行読み込むだけならFile.ReadAllLines一発
0682デフォルトの名無しさん
2009/08/01(土) 02:01:370683デフォルトの名無しさん
2009/08/01(土) 02:03:17後で配列に入ってる個数を取り出したいんだ
0684デフォルトの名無しさん
2009/08/01(土) 02:04:49それぐらい配列じゃないコレクションでもできる
というか配列じゃないとダメなんてのは配列を引数に要求するメソッドがあるときぐらいだ
0685デフォルトの名無しさん
2009/08/01(土) 02:06:13そうだった
みんなありがとう!
これで完成できるよ
0686デフォルトの名無しさん
2009/08/01(土) 11:21:20流れは最初にtokenを取得して
次にtokenとusernameとpasswordを添えてPOSTしているのですが
認証されていないようです
ソースをうpしましたので、お暇な方は何が原因なのか教えて頂けないでしょうか?
http://pai.no.land.to/up/src/dgz14115.zip
(twitterのテストアカウント設定済です)
0687デフォルトの名無しさん
2009/08/01(土) 12:29:35成功する方法とお前さんの方法で、それぞれ Wireshark とかで
やりとりを見てみて、違いを確認するのがいいよ。
0688686
2009/08/01(土) 17:13:32その当たりは大丈夫でした
他の言語ではいけたので
調べて見たらどうやらこれが原因みたい
http://agloo.blog92.fc2.com/blog-entry-40.html
解決方法はWebBrowserでやる
何だかスマートじゃない…
0689デフォルトの名無しさん
2009/08/01(土) 22:19:53ネットワークドライブの電源を手動で入れてプログラムでアクセスしようとすると
ドライブがないというエラーになってしまいます。
マイコンピュータ上にはすでにあるので、エクスプローラで一度ドライブ内を表示すると
その後はプログラムからもアクセスできるようになります。
最初からプログラムでアクセスできるような方法があったら教えて頂きたいです。
0690デフォルトの名無しさん
2009/08/01(土) 23:07:410691デフォルトの名無しさん
2009/08/01(土) 23:16:33認証のせいでは?
0692デフォルトの名無しさん
2009/08/01(土) 23:23:52セットアッププロジェクトで必須コンポーネントに.NetFramework
とCrystarReportsを選択してビルドを行いました。
出来たファイルの.NetFrameworkとCrystalReportsはわざわざ手動でインストール
が必要なのでしょうか?
セットアップ.exeに全て含める方法を教えてください。
0693デフォルトの名無しさん
2009/08/01(土) 23:38:33ttp://dobon.net/vb/dotnet/deployment/dotnetbootstrap.html
0694デフォルトの名無しさん
2009/08/01(土) 23:44:190695692
2009/08/01(土) 23:45:36setup.exe作ったんですが、CrystalReportsのランタイムが入ってないみたい
なんですよね。
出来たmsiファイルは消去してもいいんですか?
0696デフォルトの名無しさん
2009/08/01(土) 23:58:59msiは必要
0697692
2009/08/02(日) 00:25:00いろいろ調べたところマージモジュールっていうのが必要みたいなんですよね。
じゃあSetup.exe作る際に必須コンポーネントでチェック入れた
CrystalReporsは意味無いってことになりますよね・・・
よくわからないんです。もしそのへんわかる方いらしたら教えてください。
setup.exe走らせる際は各コンポーネントとmsiは一緒にしておかなきゃ
駄目ということですね。
0698692
2009/08/02(日) 00:51:40setup.exeと一緒に同梱されるCrystalReportsのランタイムを個別に
インストールしてみたら、管理者権限が無い為、インストールできない
というエラーが出ました。
管理者権限でログインしてないってだけみたいだったようです。
setup.exeでインストールを行ったときはエラーは表示されず、
インストール出来るコンポーネントのみインストールするんですね・・・
エラー出ないからてっきり必須コンポーネントはインストール出来てる
ものだと思いました。
0699デフォルトの名無しさん
2009/08/02(日) 01:07:580700692
2009/08/02(日) 01:58:10setup.exeでインストールできないコンポーネントが見つかった時点
でエラーを出してsetupを終了する方法はありますか?
0701デフォルトの名無しさん
2009/08/02(日) 12:36:520702デフォルトの名無しさん
2009/08/02(日) 13:37:35ありがとうございます。WNetAddConnection2でできました。
0703692
2009/08/02(日) 15:15:47管理者権限を確認するダイアログを表示させるんですね。
作ってみます。
0704デフォルトの名無しさん
2009/08/02(日) 15:27:23Orca の出番だね。
0705デフォルトの名無しさん
2009/08/02(日) 15:49:35正攻法かどうか分からないけど、
カスタム動作(System.Configuration.Install.Installerクラス)をつかっても
できそうだね。
0706デフォルトの名無しさん
2009/08/02(日) 19:40:18現在HTMLのFILE FILEDからファイルを選択し、
SaveAsメソッドを組み込んだ送信ボタンを押下することで
ローカルのHDDからWebサーバーにファイルをアップロードをする
システムを作っています。
このシステムから、FILE FILEDを使用せず、
送信ボタンを押すとダイアログボックスが開き
ファイルを選ぶ事でファイルを送信できるようにしたいのです。
以上のように1つのボタンで、ファイルの選択〜ファイルの送信まで
行うようにするには、どのようなメソッドを用いればいいのでしょうか。
0707デフォルトの名無しさん
2009/08/02(日) 19:42:31どうしても、っていうなら、セキュリティの設定を甘くして、クライアントスクリプトでやるか、
ActiveX コントロールを使うしかない。
0708デフォルトの名無しさん
2009/08/02(日) 19:48:220709デフォルトの名無しさん
2009/08/03(月) 23:57:470710デフォルトの名無しさん
2009/08/04(火) 00:00:200711デフォルトの名無しさん
2009/08/04(火) 00:05:43Splitterでは新しいペインを生成したり削除したりは出来ないようです。
0712デフォルトの名無しさん
2009/08/04(火) 10:29:55プログラムで作れない筈もなく。
0713デフォルトの名無しさん
2009/08/04(火) 14:21:16VB.netで新しいプロジェクトからWindowsコントロールライブラリでDLLを作って
アセンブリをCOM参照可能にするにもチェックを入れているのですが
VB6の参照設定でその.netで作成したDLLを参照しようとすると
「指定したファイルへの参照は登録できません」
とのメッセージが出て参照に追加することができません
VB.netでつくったコンポーネントってVB6でも使うって不可能なんですか?
0714デフォルトの名無しさん
2009/08/04(火) 14:58:11プロジェクトのプロパティでCOM相互運用機能の登録にもチェック
0715デフォルトの名無しさん
2009/08/04(火) 21:57:57で
t = Now
と
t = Now()
の違いは何ですか?
0716デフォルトの名無しさん
2009/08/04(火) 22:00:480717デフォルトの名無しさん
2009/08/04(火) 22:01:26t = DateTime.Now
と書いたほうがいい
0718デフォルトの名無しさん
2009/08/04(火) 22:02:260719デフォルトの名無しさん
2009/08/04(火) 22:05:230720デフォルトの名無しさん
2009/08/05(水) 11:30:45コピペで勝手に作れないんです…
0721デフォルトの名無しさん
2009/08/05(水) 13:03:42このスレになってからは初だっけ?
FAQだからググればヒットする。
0722デフォルトの名無しさん
2009/08/05(水) 14:55:460723デフォルトの名無しさん
2009/08/05(水) 16:07:350724デフォルトの名無しさん
2009/08/05(水) 19:03:01MSDN(オンライン)でコントロール配列を検索したら
http://msdn.microsoft.com/ja-jp/library/kxt4418a.aspx
とか出てくるんだがな
まず真っ先にチェックすべきはMSDNだろうJK
0725デフォルトの名無しさん
2009/08/05(水) 19:03:550726デフォルトの名無しさん
2009/08/06(木) 11:38:02Microsoft Visual Studio 2005
Office 2003、2007が入っています
Excel 2003 のファイルを操作したいと思い、参照設定で Object Library 11.0 を追加しましたが、
参照設定に追加された Excel.dll のパスをみると、アセンブリフォルダの 12.0 の dll を見にいってるようです
このままコンパイルして Office 2003 のみがインストールされているPCで実行すると、「12.0 が無いよ」と怒られます
Office 2003 のみが入っている開発PCでコンパイルすると、正常に実行でき、参照設定のパスも 11.0 を見にいっています
これを Office 2007 が入っているPCでコンパイルしても Office 2003 のみが入っているPCで実行できるようにしたいのですが、
��パスを固定にする�≠謔、な方法はあるのでしょうか?
0727デフォルトの名無しさん
2009/08/06(木) 12:39:08参照設定しないで遅延バインドで作る
0728デフォルトの名無しさん
2009/08/07(金) 08:15:41TabPage1と2があってComboBox1と2があり以下の様になっています
TabPage1にComboBox1
TabPage2にComboBox2
Private Sub Combo()を作り、その中でComboBox1.Items.Addをしているのですが、
ComboBox2の場合はComboBox2.Items.Addになってしまい面倒です
どうにか一つのPrivate Subで個別に出来ませんか?
よろしくお願いします
0729デフォルトの名無しさん
2009/08/07(金) 12:03:24引数の値によってComboBox1とVomboBox2のどちらに操作するのか分岐。
0730デフォルトの名無しさん
2009/08/07(金) 12:04:13引数の値によってComboBox1とComboBox2のどちらを操作するのか分岐。
0731デフォルトの名無しさん
2009/08/07(金) 12:40:10なるほど!
ありがとうございます
0732デフォルトの名無しさん
2009/08/07(金) 12:51:26引数を1の場合ComboBox1にしたい時はどうするんでしょうか?
0733デフォルトの名無しさん
2009/08/07(金) 13:10:22コンボボックス型の配列変数を宣言して、コンボボックスの1と2をそれに突っ込んで
配列の添え字に引数の値を設定して使えばいいじゃん
最近VB使ってない素人の即興の書き込みですまんけど、こんな感じでできると思う
0734デフォルトの名無しさん
2009/08/07(金) 13:12:39Private Sub Combo(ByRef cbo As ComboBox)
cbo.Items.Add 〜
End Sub
0735デフォルトの名無しさん
2009/08/07(金) 14:10:16X=X*1.2
X=X*1.3
Y=Y/2
Y=Y*3
X=X*Y
このような場合、変数に代入される毎の計算結果の値を少数切捨てにするには、
個別に関数を指定する以外にどのように書いたら良いでしょうか?
0736デフォルトの名無しさん
2009/08/07(金) 14:34:16X = X * 12 \ 10
X = X * 13 \ 10
Y = Y \ 2
Y = Y * 3
X = X * Y
1.2の掛け算とかは1.2が定数じゃなければ無理か
0737デフォルトの名無しさん
2009/08/07(金) 14:41:02既に望み通りだと思うんだけど
0738デフォルトの名無しさん
2009/08/07(金) 14:49:210739735
2009/08/07(金) 14:52:280740デフォルトの名無しさん
2009/08/07(金) 15:10:010741デフォルトの名無しさん
2009/08/07(金) 15:10:220742デフォルトの名無しさん
2009/08/07(金) 15:18:04テンプレにしたほうがいい
0743735
2009/08/07(金) 15:22:29うーんそれしか無いですかねぇ
>>735はあくまで例で、実際には変数を代入させる計算式が60行くらいあり
結果が少数になるもの全てに適用させるので他に方法ないかなと思ったんですが…
>>742
すいません、VB2008EEです
0744デフォルトの名無しさん
2009/08/07(金) 15:29:27せっかく.netは言語混ぜれるんだし
0745デフォルトの名無しさん
2009/08/07(金) 15:34:08Cだと整数型は少数切捨てですか?
0746デフォルトの名無しさん
2009/08/07(金) 15:40:55下手に楽しようとして訳わからん直し方しても後で困るだけ
0747デフォルトの名無しさん
2009/08/07(金) 15:44:17だね。
そもそも四捨五入という仕様がおかしいからね
0748デフォルトの名無しさん
2009/08/07(金) 15:51:260749デフォルトの名無しさん
2009/08/07(金) 15:53:37俺も
キーボードマクロ使えば楽にできる品
0750デフォルトの名無しさん
2009/08/07(金) 15:55:54うーんそうですね…むしろその方が楽でしょうしねぇ。
素直にFixで一つ一つやりたいと思います。
有難うございました。
0751デフォルトの名無しさん
2009/08/08(土) 01:39:15なんでByRef?
0752デフォルトの名無しさん
2009/08/08(土) 01:54:500753デフォルトの名無しさん
2009/08/08(土) 05:20:32Combo()
の引数の指定はどうやるのでしょうか?
0754デフォルトの名無しさん
2009/08/08(土) 07:09:39ありがとう!
0755デフォルトの名無しさん
2009/08/08(土) 08:08:28確かに少し変だよな。
呼び出し元のcbo自体を別のComboBoxに置き換えるのでもなければ、
ByRefである必要は全く無いし。
0756デフォルトの名無しさん
2009/08/08(土) 08:41:08どっちが正しいんだ?
0757デフォルトの名無しさん
2009/08/08(土) 09:14:34混乱のもとになるだけ
0758デフォルトの名無しさん
2009/08/08(土) 09:23:33ByValにしたら不変になるなんてこともない。
全く無意味なキーワード。
0759デフォルトの名無しさん
2009/08/08(土) 09:26:030760デフォルトの名無しさん
2009/08/08(土) 09:32:39参照型は常に参照渡しというのは語弊がある。アドレスの値渡しだ。
だから参照型をByValで渡して呼び出し先でその引数に違うオブジェクトを代入しても
元の変数の参照先のオブジェクトは変わらない。
0761デフォルトの名無しさん
2009/08/08(土) 10:35:31VB.NETムズカシイネー
0762デフォルトの名無しさん
2009/08/08(土) 10:41:340763デフォルトの名無しさん
2009/08/08(土) 10:42:310764デフォルトの名無しさん
2009/08/08(土) 10:46:040765デフォルトの名無しさん
2009/08/08(土) 10:56:24ニヤニヤ
0766デフォルトの名無しさん
2009/08/08(土) 15:38:54それだけの為に宣言するのもなあ、って時に地味に便利。
というか、Javaだとどう対応すべきか判らなくて困る。
0767デフォルトの名無しさん
2009/08/08(土) 15:43:28返値が複数ならそれらをメンバに持つ新しいクラスのインスタンスを作りなさい!
0768デフォルトの名無しさん
2009/08/08(土) 15:43:51それ以外に使うと糞コードの出来上がり
0769デフォルトの名無しさん
2009/08/08(土) 17:25:34基盤的な部分では使ったりもする。
0770デフォルトの名無しさん
2009/08/08(土) 17:39:02俺はヤバいとおもうけどね。
フツーはそんなことを思う時点でどこかそもそもの設計に無理がありそう。
っていうか、まず間違いなく手続き指向のコーディングをしてるんだなそりゃ。
C#ではより「安全な」outがあるけど、これも使いたいと思ったことは一度もないな。
0771デフォルトの名無しさん
2009/08/08(土) 17:43:16まあ逆に言うとこれぐらいなんだが
0772デフォルトの名無しさん
2009/08/08(土) 17:46:06構造体かクラスを定義するのが面倒なだけでしょ
出力方向のみで局所的に使うだけならアリだと思うよ
クラス外に見せるのはダメだけど
0773デフォルトの名無しさん
2009/08/08(土) 18:12:48だから、そもそも一つのメソッドから複数の値を取得したい、
などという考え方がおかしい。
そんな人間の思考パターンにマッチしないコードを書くことの方が、
トータルで見て余程「面倒臭い」はずなんだが。
0774デフォルトの名無しさん
2009/08/08(土) 18:22:41let f n = (3 * n, 5 + n);;
let (a, b) = f 3;;
0775デフォルトの名無しさん
2009/08/08(土) 19:24:42あと、必要に応じてオブジェクトを入れ替えるって目的で使うことが偶にはある。
0776デフォルトの名無しさん
2009/08/08(土) 19:27:11またVBだと呼び出し側で参照ってのが分からないからあまり使いたくはない。
0777デフォルトの名無しさん
2009/08/08(土) 19:35:59動くときあるからそんな感じでやってるw
0778デフォルトの名無しさん
2009/08/08(土) 19:49:24だから、ちゃんとした設計をしてれば一つのメソッドから複数の値を返したい、
などという場面はまず起こらない。
少なくともOOP言語では。
返り値をパッケージングするためだけのためであっても型を作るべきだ、
などと俺は言ってない。
そういう手続き中心に考える思考法そのものがOOP言語に合ってないんだよ。
0779デフォルトの名無しさん
2009/08/08(土) 20:27:320780デフォルトの名無しさん
2009/08/08(土) 20:30:06例外と比べてのパフォーマンスの問題だけだと思うんだけど。
0781デフォルトの名無しさん
2009/08/08(土) 20:32:42Tester-Doerパターンを使うとスレッドセーフにならないという…
0782デフォルトの名無しさん
2009/08/08(土) 20:48:14普通TryParseパターン使う時ってローカル変数渡すから一緒だろ
0783デフォルトの名無しさん
2009/08/08(土) 21:52:06人間の感覚に合ってないってのが言いすぎじゃないのか
手続き中心に考える思考法は人間の感覚に合ってない
OOP言語にあってないと人間の感覚に合ってない って結論になるぞ
0784デフォルトの名無しさん
2009/08/08(土) 22:02:530785デフォルトの名無しさん
2009/08/09(日) 00:17:01bに0.01、aに0.01が入ってる状態で
b=b+a
としたら
0.010.01
になってしまうんですが、どうしたら0.02になりますか?
0786デフォルトの名無しさん
2009/08/09(日) 00:22:57VBEとやらもVBAもスレ違い
0787デフォルトの名無しさん
2009/08/09(日) 00:47:320788デフォルトの名無しさん
2009/08/09(日) 01:00:100789デフォルトの名無しさん
2009/08/09(日) 11:45:230790デフォルトの名無しさん
2009/08/09(日) 13:49:20エンターを押した時にbtn1をクリックしたことにしたいのですがどうすればいいでしょうか
0791デフォルトの名無しさん
2009/08/09(日) 13:53:39具体的にはデスクトップに置く時計やカレンダーみたいなものをつくってみたいと思っています。
0792デフォルトの名無しさん
2009/08/09(日) 13:58:05Form の AcceptButton プロパティを Btn1 にするか、
キーイベントでごにょごにょやる
>>791
Form の FormBorderStyle プロパティを変える
0793デフォルトの名無しさん
2009/08/09(日) 14:06:12できました
ありがとう
0794デフォルトの名無しさん
2009/08/09(日) 14:09:24VBに比べてCを使うメリットとはナンでしょうか?
VBでもクラスは使えるみたいですし、ポインタも使えるようです
0795デフォルトの名無しさん
2009/08/09(日) 14:11:53VB でポインタは使えないよ。
つーか、それを聞きたいなら VC スレにいった方がいいんじゃない?
まぁ、ひとことで言えば、VC では .NET がいらないアプリが作れる、ってところ。
0796デフォルトの名無しさん
2009/08/09(日) 14:13:430797デフォルトの名無しさん
2009/08/09(日) 14:13:43C++/CLIだからとりあえず避けといたほうがいい。
0798デフォルトの名無しさん
2009/08/09(日) 14:20:420799デフォルトの名無しさん
2009/08/09(日) 14:38:40C:\>fsi
Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.6.2, compiling for .NET Framework Version v2.0.50727
Please send bug reports to [email protected]
For help type #help;;
>
0800デフォルトの名無しさん
2009/08/11(火) 01:44:20ブラウザからhttp://192.168.1.6
などと入力すると、ユーザー名とパスワードを入力を要求するダイアログが出て
そこに入力してOKを押すとブラウザに設定のページが表示されるというものなのですが、
このページのソースをVBで取得する場合に、ユーザー名とパスワードの
送り方を教えて頂きたいです。
一番最初のアクセスの時に返ってくるページのソースを調べたのですが
その中にはアクセスが不可だった時に表示されるページソースが入っていました。
(ダイアログボックスのページソース?はどこ?)
0801デフォルトの名無しさん
2009/08/11(火) 01:50:52ttp://username:[email protected]/
だが
0802デフォルトの名無しさん
2009/08/11(火) 02:25:11何でやろうとしてるのか書けよ。
とりあえずCredentialsプロパティ辺りか。
0803デフォルトの名無しさん
2009/08/11(火) 02:51:51BASIC認証をぐぐってみました。
結局まだよく分からないのですが、
上のアドレスの場合http://username:[email protected] ということになるでしょうか?
しかしこれをやると綴りを確認してくださいというエラーが出てしまいます。
Credentialsプロパティも試してみました。
req.Credentials = New NetworkCredential("user", "pass")
req.PreAuthenticate = True
Dim res As WebResponse = req.GetResponse()
3行目の部分で
The underlying connection was closed: The server committed an HTTP protocol violation.
というエラーになってしまいました
2つの方法でどちらでも出来そうな気がするのですが
もう少しヒントいただけないでしょうか・・・
0804デフォルトの名無しさん
2009/08/11(火) 03:04:420805デフォルトの名無しさん
2009/08/11(火) 11:39:54組み込みの認証方式なら上で出て来た方法でいけそうなもんだが…
0806デフォルトの名無しさん
2009/08/11(火) 16:00:16VB.NETで作成したプログラムは
使用しているバージョンの .NET Frameworkが入っていれば
それ以外に特別ランタイムを用意しないといけないということは無いのでしょうか?
0807デフォルトの名無しさん
2009/08/11(火) 16:04:010808デフォルトの名無しさん
2009/08/11(火) 16:07:110809デフォルトの名無しさん
2009/08/11(火) 21:45:54フォームのどこをクリックしても同じ処理を行うようにしたいんですが、どういう方法が考えられるでしょうか?
フォームと同じサイズの透明なコントロールを他のコントロールよりも手前に配置し、
そのコントロールのclickイベントを利用すればいいかと考えましたが
まず、他の複数のフォームよりも手前にコントロール置いて透過する時点で不可能なようなので。
0810デフォルトの名無しさん
2009/08/11(火) 21:59:26いけばいいんじゃね?
0811デフォルトの名無しさん
2009/08/11(火) 22:25:15Form1_ClickイベントのHandlesに、
このプロシージャを呼び出したいイベントをカンマ区切りで追加する
Handles Me.Click , Button1.Click , Button2.Click , TextBox1.Click
0812デフォルトの名無しさん
2009/08/12(水) 12:31:50ありがとうございます。
まずreq.AuthenticationLevelをMutualAuthRequestedを試してみたいと思います。
0813デフォルトの名無しさん
2009/08/12(水) 22:28:33インターネットショートカットのリンクファイルをダブルクリックすると
新しいウィンドウで開かずに自作アプリのIEで表示されてしまうのですが
これに対処する方法があったら教えて頂きたいです。
IEがVisibe=Falseの状態でもそれで開いてしまいます。
0814デフォルトの名無しさん
2009/08/13(木) 01:36:320815デフォルトの名無しさん
2009/08/13(木) 03:17:33例えば、Button1 Button2 があって
Dim _Buttons As New List(Of Button)
Me._Buttons.add(Button1)
Me._Buttons.add(Button2)
ボタン1がクリックされたら、Messagebox.show()
で『1 』って表示させたいとき度尾すればいいの?
senderはそれらしきもの入ってないし…
0816デフォルトの名無しさん
2009/08/13(木) 03:56:43○どうしたら
senderには色々入ってるだろ。ウォッチ使え
senderをcontrol型にキャストしてからNameプロパティでも取得して利用すれば?
0817デフォルトの名無しさん
2009/08/13(木) 11:14:41なるへそ
0818デフォルトの名無しさん
2009/08/13(木) 15:47:30If sender Is Me.Button1 Then 〜 でいいんでない
0819デフォルトの名無しさん
2009/08/13(木) 16:28:340820デフォルトの名無しさん
2009/08/13(木) 16:47:39「レジストリから値を取得する」
.NETのRegistryクラスのインスタンス作ってキーを渡してやれば取得できる
「データベースに接続してクエリを実行する」
.NETのSqlConnection、SqlCommand、SqlDataReader等のクラスの
インスタンス作って接続文字列やSQL文字列を渡してやれば実行できるしデータも取得できる
私は既にRegistryやConnection等というクラスがあるから、
必要なときにフォームイベント上で直接インスタンス作ればいいだけだと思っています
(キーやSQL等の文字列は、定数であったりXMLからMy.Settingで読んだりする)
しかし、会う人会う人みんな、わざわざ「clsSystemInfo」(INIやXMLを読み書き)、
「clsRegistryAccess」(レジストリを読み書き)、「clsDBAccess」(データベース接続読み書き)
等々、大きく機能を括ってひとつのクラスを作っています
また、フォームのイベントすらひとつのクラスにする人もいます
Form1.vbはフォームの外観だけにして、clsForm1.vbを別に作ってロジックを書き、
例えば「Form1_Button1_ClickイベントプロシージャからclsForm1_B1Clickメソッドを実行」
みたいな構成をしています(clsForm1がJavaでいうサーブレットのようなイメージ?)
私の考えを伝えると、こう言われます
「いろんなプロシージャに同じ宣言やコードがわんさと増えるじゃないか」
「フォームのコードが肥大化して可読性が損なわれるじゃないか」
機能を括ったクラスでもインスタンス作る必要があるし、やることは同じでは?
コードを2ファイルに分けただけで肥大した中身は同じなのでは?
議論しても、あまり納得のいく結論に達したことがありません
私も.NETの勉強をはじめて1年も経っていない素人で、自信はないのですが
ずっと違和感を感じながらコードを書いています
みなさんはどう思われるでしょうか?
0821デフォルトの名無しさん
2009/08/13(木) 17:48:46>例えば「Form1_Button1_ClickイベントプロシージャからclsForm1_B1Clickメソッドを実行」
clsForm1_B1Clickメソッドの中に何を書くんだ?
まさか、Form1_Button1_Clickイベントプロシージャの中身を全部なんてことは無いよね?
0822デフォルトの名無しさん
2009/08/13(木) 17:59:58>「いろんなプロシージャに同じ宣言やコードがわんさと増えるじゃないか」
>「フォームのコードが肥大化して可読性が損なわれるじゃないか」
1フォームで1万ステップ、1プロシージャで千ステップ以上なプログラムを
メンテしたことがあるがかなり泣けた
0823デフォルトの名無しさん
2009/08/13(木) 18:06:19状況にもよるだろ
SQL発行する画面が50とかある状況を考えてみ?
接続オプションの変更が発生した時
全画面修正する必要があるのか、clsDBAccess内だけなのか
作っておけば、他にも流用できる
clsForm1.vbの例は
リリース先によってレイアウトだけが違うとか
ASP版とEXE版の両方を作成するとか
特殊な条件でもなければ面倒なだけなような気がする
0824デフォルトの名無しさん
2009/08/13(木) 18:12:20必要性も利点もわからないでやればそりゃ違和感あるだろうな
一人で一つのプログラムしか作らないなら好きにすればいい
機能別なクラス分けや画面とロジックの分離は、設計方法の問題ではあるが
たとえばある機能をフォームイベントに直接コーディングしたとする
その機能が複数のプログラムの複数のフォームにあった場合、
修正する際に複数個所を修正しなければならない
そうすると修正ミスや修正漏れが発生する可能性が高くなる
その機能を別クラスとして実装すれば、修正するのはそのクラスだけで済む
0825820
2009/08/13(木) 20:35:36全部でした
>>823
接続オプション等、クラスに渡す値って、レジストリやapp.configに持ちませんか?
流用する場合でも、フォームのイベントで「クラスのインスタンス作って操作する」
コーディング自体には有意差は無いと思うんです
確かにその方も「後々のASP化を考えて」という話をされましたが、
結局メソッドの引数として渡されたコントロールの操作を
clsForm1.vb内でやっているので、修正箇所は同じだと思うんです
やるなら、もっと機能別にクラス細分化するべきではないかと
>>824
説明される必要性や利点に納得がいかない、ということです
うまく伝えられるか自信がありませんが、
設定の値次第でSQLSERVERもODBCもOLEDBもOlacleも
OKな「clsDbAccess」…とかならわかるんですが、
・SqlConnectionのインスタンスをOpenする
・SqlCommandのインスタンスににSql文と↑のインスタンス渡す
・SqlDataReaderクラスで↑をExecuteする
etc…
こんな程度の自作クラスメソッド群に、修正可能性も何もないのでは?と思うんです
0826デフォルトの名無しさん
2009/08/13(木) 20:57:16俺は君のほうが正しいと思う。
なんか変なクラス設計するやついるんだよなぁ。
0827デフォルトの名無しさん
2009/08/13(木) 22:08:16具体的にどう機能分割してたのか判らんが
clsOpenDB ← DBオープンするだけのクラス
clsCreateCmd ← Command作るだけのクラス
clsExecuteReader ← Readerを実行するだけのクラス
こんな感じに分割してたのか?
0828デフォルトの名無しさん
2009/08/13(木) 22:11:110829デフォルトの名無しさん
2009/08/13(木) 22:33:500830デフォルトの名無しさん
2009/08/13(木) 22:41:34app.configなんて個別に読み込むのではなくてどこかで一回sharedなクラスで
読み込んで使いまわせば良いだけだと思うけどね。
フォーム内で個別にNewなんて必要ないでしょ。
0831デフォルトの名無しさん
2009/08/13(木) 22:58:460832デフォルトの名無しさん
2009/08/13(木) 23:54:41その例えが自分で考えたものでなければ、ろくなプログラム見てないな
ただ、例え数ステップでも外部クラスにしたりすることはある
それは実際のコーディングの手間うんぬんより、設計思想を貫くため
個別にコーディングするか、クラスにまとめるかはステップ数によらない
大事なのは複数の人間が作った複数のプログラムでも統一された方法を使ってるってこと
まあ、大規模システムの修正とかやればなぜそうするかはわかるさ
>>826
たしかに変な設計する奴は多いが
変に設計されたものをみて、その設計方針が間違いだってのはちょっとな
0833デフォルトの名無しさん
2009/08/14(金) 00:13:41気軽にクラスを作ることにためらいがあるらしい。
どうも、適当な大きさのクラスにって分割統治されたコードよりも、
一つのクラスに何でもかんでも詰め込んだモノリシックなコードの方を分かりやすいと思い込む
妙な先入観があるようだ。
0834デフォルトの名無しさん
2009/08/14(金) 00:34:04>>825
クラス化することの利点の一つに「実装を隠蔽する」ってのもあります。
オラクルだったら、例えば
Class MyOracle
Public Shared Function GetDataTable( ByVal DbName As String, _
ByVal DbUser As String, _
ByVal DbPass As String, _
ByVal Sql As String) As DataTable
インスタンス作って、繋いで、SQL投げて、閉じて、データテーブルをリターン
End Function
Public hoge以下(ry
End Class
こんなのあったらADO.NETのアーキテクチャまったく知らなくてもSQL*Plus感覚で扱えるよね。
個人的には.NETFrameworkは素材であって、なんでも料理できるキッチンスタジアム的なもの。
そこから自分の料理(プロジェクト)に合った素材を下ごしらえするのがMyクラス的なものかなぁ
みたいな理解をしてます。
この例だと静的メソッドなのでこれはこれで多用すると問題なのですが、
インスタンスメソッドでも発想は同じかと。
でも>>825さんの例に挙げた実装は確かにクラス化のメリットをあまり享受できてない気はします。
0835820
2009/08/14(金) 01:42:51Open/Command/Reader等がひとつのクラスに納まっている場合もあれば、
それぞれ分割しておいて、さらにそれらをひとつのクラスに納めている、
なんていうのもありました
>>830,832,833
つい自分基準で説明足らずですみません
もちろん、複プロジェクトにまたがったり、コーダーが多い場合はそのようにすべきだと思います
でも5人にも満たない〜1、2ヶ月程度の1プロジェクトなら、たとえ専用の自作クラスを
所持していたとしても、.NETで用意されているクラスで事足りる場合は、
わざわざ自作クラスを作ったり参照する必要はないのではないかということです
>>834
「普段ADO.NETに触れない人たちでもコーディングできる」目的を持って
クラス化するのは、必要なことだと思います
なんというか、当人たちは「RegistryやSqlConnectionを知らなくても
コーディングできるじゃないか」と言うのですが、その代わりに
その人の自作クラスを、その人の説明で知らなくてはなりません
でも、それは目的が達成されても、なんら効率に影響がありません
覚える量もコードの量も大差ないのなら、RegistryやSqlConnectionを
覚えた方が、個人にとってもチームにとっても、今後のためになると
思えてならないんですよね
0836デフォルトの名無しさん
2009/08/14(金) 05:10:40覚える量とかコーディングの手間とかじゃないんだよ
お前がそれが効率的だっていうならそうすればいいさ
0837デフォルトの名無しさん
2009/08/14(金) 07:00:430838デフォルトの名無しさん
2009/08/14(金) 08:15:12実行時に、ある値の数だけタブコントロールの
ページとその上にデータグリッドビューを追加しています。
Datasourceをボタンを押すタイミングで
設定したいのですが、
動的に追加した複数のコントロールはどうやって
プロパティ等を指定するのでしょうか?
0839デフォルトの名無しさん
2009/08/14(金) 10:33:28言っちゃ悪いけど頭悪すぎる質問じゃないの?
0840デフォルトの名無しさん
2009/08/14(金) 12:43:31データグリッドビューを追加するタイミングでコレクションにも
追加しとけば良いんでないの?
0841デフォルトの名無しさん
2009/08/14(金) 12:49:54悪法でも法は法。
プロジェクト毎のルールに従うのがプロですよ。
そのプロジェクトのルールには良く考えられて作られたものもあるし
非常に残念なものもある。
良いものは参考にして悪いものは反面教師として自分がプロジェクトの
ルールを決められる立場になる時までじっと我慢なのですよ。
0842デフォルトの名無しさん
2009/08/14(金) 13:05:21まずどうやって動的に追加したんだ?
自分でコントロールを追加してるんだから、そのコントロールに設定すればいいだけだろ
0843デフォルトの名無しさん
2009/08/14(金) 16:29:33xからyまでzずつt秒毎に加算するプログラムを作りたいと思っています。
すべて定数で与えてしまえばTimerとFor文のなんてことは無いプログラム
ですが、textbox内の値をx,y,z,tそれぞれの変数として指定するとうまく行かずに困っています。
x = Val(textbox.text) とおくと、Tickイベント毎にそいつを読みに行って
yを足してzを出すので、値が常にz=x+yで固定されてしまいます。
(z=20のつもりでもx=2,y=3だったら常にz=5など)
FormにDim 〜 = Val(--) と置けたら便利なのですが、それも駄目なようです。
どのようにして実装すべきでしょうか?
0844デフォルトの名無しさん
2009/08/14(金) 16:33:310845デフォルトの名無しさん
2009/08/14(金) 16:53:34そもそもこれをどう書いてたのよ。
xyztが加算処理部分のローカル変数なのか、Formの変数なのかとかその辺を隠してどうする
0846デフォルトの名無しさん
2009/08/14(金) 18:41:38リセットボタンか、スタートボタンを作れば解決するんじゃないかな
0847デフォルトの名無しさん
2009/08/14(金) 19:29:44宿題は自分で考えなきゃ駄目でしょう。
単位あげないよ
0848デフォルトの名無しさん
2009/08/14(金) 23:54:30For文じゃなくIf文でしたが、Tick内のソースは
If x < y Then
x += z
End If
という教科書的なものです。
まだ試行錯誤段階なので結果がyになるかという計算は無視してます。
変数をValで定義しようとIfの前に定義しても、タイマーの繰り返しでまた同じ値が代入され、いつまでたっても同じ値のままです。
かといってFormでは定義できず、どうしたものかと。
ちなみにこれは測定器の制御プログラムです。サンプルが結果だけしか表示しないので、改良しようかなと勉強中です。
0849デフォルトの名無しさん
2009/08/15(土) 00:03:43x = cint(textbox.text)
If x < y Then
x += z
End If
textbox.text = cint(x)
0850デフォルトの名無しさん
2009/08/15(土) 00:04:37x = cint(textbox.text)
If x < y Then
x += z
End If
textbox.text = cstr(x)
0851デフォルトの名無しさん
2009/08/15(土) 00:06:360852デフォルトの名無しさん
2009/08/15(土) 00:11:58冗談はさておき
最初のTickイベントとか測定開始時にのみ、xにTextBoxの値を代入するようにすればいいだけでは
0853デフォルトの名無しさん
2009/08/15(土) 00:58:48なんか見てられないな。
君はプログラムが書けないんじゃなくて、それ以前の段階、
つまり仕様を明確にする段階で躓いてるんでしょ。
自分で自分がやろうとしていることがわかってないんじゃないの?
少なくとも、このスレの人間には誰にも君のやりたいことが正確に伝わってないようだけど。
まず、頭の中を整理して、仕様を明確にしたら?
それから、その仕様をポストする前に、最低10回は自分の文章を読み直して推敲してね。
>>843みたいな文章では君以外の誰にも通じるわけないだろ。
0854デフォルトの名無しさん
2009/08/15(土) 01:05:100855デフォルトの名無しさん
2009/08/15(土) 01:09:350856デフォルトの名無しさん
2009/08/15(土) 01:17:47普通にプログラムを作り慣れていないだけじゃないか?
0857デフォルトの名無しさん
2009/08/15(土) 01:23:40例えば、x(に対応するコントロール)が入力なのか出力(表示器)なのか
明確でなくても?
VB厨とかいうと荒れそうだけど、実際VB上がりの人はこういうノリで
コード書いてる人が多かったりするのでしゃれにならないな。
0858デフォルトの名無しさん
2009/08/15(土) 02:09:37だから、まずスタートボタンをつくれ
そして、スタートボタンを押したときに各変数にテキストボックスの値をセットするんだ
タイマーはスタートボタンを押したら有効にするのがいいな
0859デフォルトの名無しさん
2009/08/15(土) 02:13:29GoogleとインテリセンスとデバッガがあればMSDNなんて読まなくても良いのですよ。
0860デフォルトの名無しさん
2009/08/15(土) 02:18:22どっからどう見ても初心者の質問なんだが...
初心者に上級者と同じ基準あてはめて批判してどうするんだ
それとも、たんにVB使いをけなしたいだけか?
0861デフォルトの名無しさん
2009/08/15(土) 02:23:180862デフォルトの名無しさん
2009/08/15(土) 12:04:58サーバーサイドのプログラミングを始めたいのですが、
VB.NET 2005 でもできますか?
VB.NET 2005 で作ったプログラムを Vine Linux で走らせることはできますか?
0863デフォルトの名無しさん
2009/08/15(土) 12:34:42Vine Linuxが.net Frameworkに対応してるなら動かせるよ!
0864デフォルトの名無しさん
2009/08/15(土) 12:55:21サーバサイドとは具体的に何をイメージしてますか?
0865デフォルトの名無しさん
2009/08/15(土) 13:38:40VB2008にてプロセス間通信をやらなくちゃいけなくなってしまって、
なにを採用しようか迷っております。
自分で調べた限り.NETリモーティングってのが使えそうだなと思ってるんですが
(試しに作ってみたのですが結構実装も楽そうですし)
みなさんはどう思いますでしょうか?
WCF(?) = いまいち意味が分からなくて・・
0866デフォルトの名無しさん
2009/08/15(土) 14:09:01リモーティングで良いんじゃないですか。
別スレッドで動くのでスレッド処理の知識はいりますけど。
0867デフォルトの名無しさん
2009/08/15(土) 14:20:170868デフォルトの名無しさん
2009/08/15(土) 15:33:09silverlightアプリケーションとの通信を視野に入れるならWCF、
そうでないならremotingで十分だな。
0869デフォルトの名無しさん
2009/08/15(土) 15:49:16> サーバーサイドのプログラミングを始めたいのですが、
> VB.NET 2005 でもできますか?
できる。
> VB.NET 2005 で作ったプログラムを Vine Linux で走らせることはできますか?
頑張れば Mono で行けるかもしれん。が、基本無理。
0870デフォルトの名無しさん
2009/08/15(土) 16:04:18>VB.NET 2005 で作ったプログラムを Vine Linux で走らせることはできますか?
つ REALbasic
0871デフォルトの名無しさん
2009/08/15(土) 16:37:20ありがとうございます。
monoを使えば、.net Framework アプリケーションを動かせるのでしょうか。
>>864
Windows-Linux 間のチャットソフトを作りたいので、
チャットサーバーを作りたいと思っています。
チャットクライアント・サーバーソフトを Windows、Linux の両方に
作りたいのです。
>>869
ありがとうございます。
mono はあまりアテにできないのでしょうか。
0872デフォルトの名無しさん
2009/08/15(土) 16:42:320873デフォルトの名無しさん
2009/08/15(土) 16:45:54wineと同じくらいの互換性なのか。。
マルチプラットホームだとやはりJavaですな
0874デフォルトの名無しさん
2009/08/15(土) 23:35:24プロパイウィンドウの雷みたいなのを押してもイベントの一覧に
StatusTextChangedが無いのだけど何故なんでしょう、どうやったら出せるように
なりますか?
Visual Studio 2008 proです。
0875デフォルトの名無しさん
2009/08/15(土) 23:45:08プロパティウィンドウには出ないので自分でイベントにイベントハンドラを追加すること
具体的には「方法 : Windows フォーム アプリケーションに Web ブラウザの機能を追加する」
0876デフォルトの名無しさん
2009/08/16(日) 00:06:04これで今日はすっきりと眠れます。
0877843
2009/08/16(日) 03:24:50はじめは
Private x As UShort = Val(TextBox1.Text)
と置いていましたが、下のようにしたところうまく動作しました。
アドバイスどうもありがとうございました。
Public Class Form1
Private x As UShort Private y As UShort Private z As UShort Private t As UShort
Private Sub Button1_Click なんたら
Timer1.Enabled = True
x = Val(TextBox1.Text) y = Val(TextBox2.Text) z = Val(TextBox3.Text) t = Val(TextBox4.Text)
End Sub
Private Sub Timer1_Tick なんたら
Timer1.Interval = t
If x < y Then
x += z
End If
Label1.Text = CStr(x)
End Sub
End Class
Private x As UShort = 5 などはうまくいくのに、なぜテキストを代入するとうまくいかないのでしょう?
0878デフォルトの名無しさん
2009/08/16(日) 10:15:26Valの代わりにCShortにしてみりゃわかるべ。
0879デフォルトの名無しさん
2009/08/16(日) 10:17:030880デフォルトの名無しさん
2009/08/16(日) 11:02:290881865
2009/08/16(日) 11:38:31>>866
スレッド処理・・
そういうの嫌いなんだよなぁ
>>867
Windowsメッセージ?
MSMQって奴ですか?
プロセス間通信は初めて使うのでいまいち分からないっす。
実装が楽なものを採用したいと思います。
★やらなきゃいけない事は、
�@.常にユーザが使う(触る)
(更新・参照画面、帳票出力指示画面、他システム連携指示画面等)のEXE,
と
�A.常に↑の処理(印刷中・送信中)等のログ表示画面&実際処理するEXE
(大量の帳票・連携は処理に時間がかかるのでユーザの要望としては
指示のみ出して後は他の事をしたいとの要件の為、苦肉の策。。)
という理由からEXEを分離したいという感じなのですが・・
>>868
silverlightは使わないのでOKですね。
通常のクライアントサーバのシステムです。
0882デフォルトの名無しさん
2009/08/16(日) 12:42:58そんなもんならデータベースに処理状態を書き込む用のテーブルを
用意して�Aのプログラムからタイマー使ってポーリングすりゃ良いでしょ。
0883デフォルトの名無しさん
2009/08/16(日) 12:45:46BackgroundWorker使って非同期処理すればプロセス分けなくてOK
0884865
2009/08/16(日) 12:54:27レスありがとうございます。
その辺も検討したんですが
(ローカルDBを持つ Or ファイルを使う等々)
DBまたはファイルで連携をとるというのがどうもすっきりしないというか・・・
でもそういう方法がやっぱり一番いいのかな。
確かに製造でハマる心配は一番少ないと思います。
悩みどころです。
0885865
2009/08/16(日) 13:04:26レスありがとうございます。
BackgroundWorker!
そんなものがあるんですね!勉強になります。
.NETは奥が深いっす・・
BackgroundWorkerでの処理がどこまで進んでるかというのを、
独立したフォームで常にユーザに知らせるというような事は可能なんでしょうか?
0886デフォルトの名無しさん
2009/08/16(日) 13:15:19ttp://keicode.com/note/dn20.php
0888843
2009/08/16(日) 14:39:56そういう問題でもなさそうです。
単純なエラーかと思って内容までは詳細に書きませんでしたが、調べてみると
そうでもない事が分かりました。後出しで申し訳ないですが、今起きているエラーは
ttp://d.hatena.ne.jp/UoraTomort/20081018/1224337219
と同じものです。この原因は分かりますか?
本は数冊眺めましたが、このエラーについては発見できませんでした。
少なくとも私が読んでいるレベルの本では「Formのメンバ変数へ
(テキスト内の数値などの)変数の代入はできない」
までのことは扱っていないようです。
0889デフォルトの名無しさん
2009/08/16(日) 14:45:340890デフォルトの名無しさん
2009/08/16(日) 14:56:460891デフォルトの名無しさん
2009/08/16(日) 15:02:32そこのブログ主が泣くわww
0892デフォルトの名無しさん
2009/08/16(日) 15:06:01まだTextBoxが作られてない段階でTextBoxはアクセスできないだろ。
そういうときはFormのコンストラクタSub New()を書くんだ。
コントロールがいじれるのは、InitializeComponent()を実行してからだ。
0893デフォルトの名無しさん
2009/08/16(日) 15:09:37そのブログ主もかなり痛いな。。。
>>888 は暇をもてあました盆休み厨の遊びであるな。
皆、釣られてしまったわけであるがw
0895デフォルトの名無しさん
2009/08/17(月) 00:29:510897デフォルトの名無しさん
2009/08/17(月) 00:56:02経験者の脳内常識で判断されても回答になってないでしょ
質問内容を汲み取って回答するくらいしたっていいじゃない
単に「そこには定義できないよ」でいいじゃない
これでも十分学習になるでしょ?
こういうことを言うと、2chでまともな〜とか言うかもしれんがそれこそスレ違いだろ
0898デフォルトの名無しさん
2009/08/17(月) 01:41:38これがアホだから仕方ない
質問の内容ではなく、仕方や姿勢に問題があるのは、
どんな質問スレでも叩かれてしかるべき
0899デフォルトの名無しさん
2009/08/17(月) 03:41:01世の中には、
クラス変数の初期値を設定したい時には Dim 〜 As 〜 = 〜〜〜 って書きましょう
なんて書いてある紙束が市販されてるのか?
本を所持しておきながら、Sub Newに気付かないとかどんだけだよ
0900デフォルトの名無しさん
2009/08/17(月) 07:04:36しかし、質問をするにしても、あなた方を満足に理解させるだけの知識を
有していることが前提となっているなら今の俺には無理です。
そもそも、どう質問していいかすら手取り足取り状態なんだから。
現に、コンストラクタだ、Sub Newだと挙げてますが、俺からしてみたら、
逆にそんな内容が書いている本があるのかと問いたい位だよ。
現に手持ちの入門書にはどれもそんなことは触れてすらいない。
何でそれを使わないのかと問われても、それはあなたの脳内常識に過ぎないわけで。
0901デフォルトの名無しさん
2009/08/17(月) 07:08:41モノ知らないのを開き直って何がしたいんだ、つーの。
もっと謙虚に勉強しとけ。
0902デフォルトの名無しさん
2009/08/17(月) 07:27:39おっしゃるとおり勉強が足りないようですし、スレ汚しもこのあたりで失礼します。
0903デフォルトの名無しさん
2009/08/17(月) 08:42:210904デフォルトの名無しさん
2009/08/17(月) 11:47:21手持ちの入門書の名前晒してから言え無能
晒したら紙ごみとして捨てて来い
0905デフォルトの名無しさん
2009/08/17(月) 12:00:330906デフォルトの名無しさん
2009/08/17(月) 12:18:23Sub Newを挙げた人は、何でそれを使わないとか言ってねーじゃん
それに、お前が熟練者になって初心者に教えても、
さくっと○○使えばいいよなんて書いちまうぞ。
0907デフォルトの名無しさん
2009/08/17(月) 13:23:22おまえらはケチ臭いんだよ。
なんでもかんでも一人でこっそり知識を蓄えて優位に立とうとしてるだけだろ。
知識はみんなで共有するものだ。
そんなことだから足の引っ張りあいしかできないんだよ。
おまえらみたいな器の小さなちっぽけな連中をどれだけ改心させることができるかで
このスレの価値が決まる。
0908デフォルトの名無しさん
2009/08/17(月) 13:29:23そんな事いってるてめーが教えてやりゃいいんだよ
ま、その言い方からするに教えてるんだろうけど。
俺も分かる質問は答えるが、変に絡む奴をいちいち批判なんざしねえぜ
0909デフォルトの名無しさん
2009/08/17(月) 13:59:31何でもかんでも正解だけ教えるだけで、本当に質問した奴の為になるのか
ましてや、今回みたいなド素人の奴に
0910デフォルトの名無しさん
2009/08/17(月) 14:55:41自分が答える気にならないようなレベルの話だったら、
スルーという事でやっていけばいいんじゃないか。
名言集 その4
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ のID:PVAf+dux0 = 自動焼人 ★
> 965 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:02:09.35 ID:PVAf+dux0
> まぁ何だ。
> 俺の過去の経歴に比べたら、割れ厨なんて鼻くそレベルなんだけどなw
> 100人規模の集団サイバーテロの主犯とか、いろいろとな。
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0912デフォルトの名無しさん
2009/08/17(月) 19:20:100913デフォルトの名無しさん
2009/08/17(月) 20:15:01コピペ君って馬鹿だな、まで読んだ。
0914デフォルトの名無しさん
2009/08/17(月) 23:13:43そんなことどこにも書いてないし()
笑
0915デフォルトの名無しさん
2009/08/18(火) 01:23:14vb2005のExpressEditionを使用していまして、
1つのフォームやそのフォーム内の複数のTabpage内にLabelなどを大量に使用している画面があります。
(正式な数は数えていませんがLabelを3000個以上は使用しています。)
何度かデバッグを実行して問題が無いようなら、Labelと設定する値をソースに追加と繰り返していたら急に、
「'System.InvalidOperationException' の初回例外が testprogram.exe で発生しました。」
と出てデバッグが実行出来なくなりました。
設定ファイルを変えたりなど何か改善する方法ってありますか?
0916デフォルトの名無しさん
2009/08/18(火) 01:26:050917デフォルトの名無しさん
2009/08/18(火) 08:44:190918デフォルトの名無しさん
2009/08/18(火) 09:09:520919デフォルトの名無しさん
2009/08/18(火) 09:15:110920デフォルトの名無しさん
2009/08/18(火) 09:39:400921デフォルトの名無しさん
2009/08/18(火) 09:42:23じゃあお前はラベル3000個しょうがなく配置すんの?
0922デフォルトの名無しさん
2009/08/18(火) 09:49:040923デフォルトの名無しさん
2009/08/18(火) 09:56:06InvalidOperationかどうかは知らんが
0924デフォルトの名無しさん
2009/08/18(火) 11:46:580925デフォルトの名無しさん
2009/08/18(火) 14:37:42(といってもコンストラクタで。流石にンなもんデザイナ上で作れるか)
再描画するだけで 1.5 秒 (@Core 2 Duo 2.6GHz) かかるな。
>>919
間違いなく莫迦。
0926デフォルトの名無しさん
2009/08/18(火) 14:51:591.xの頃よりはマシになったが
0928デフォルトの名無しさん
2009/08/18(火) 16:42:03メソッドの外部で指定することはできますか?
例えば、そのクラスのプロパティに値がセットされたら
そのメソッドは実行できない、コード補完のリストにも出てこない
プロパティ値を戻したら、メソッドが使えるようになる…
というふうにしたいです
0929デフォルトの名無しさん
2009/08/18(火) 16:43:480930デフォルトの名無しさん
2009/08/18(火) 16:45:12書き換えたソースが間違ってると思うな
普通はデザイナで表示させれば間違ってるのはすぐわかるんだが...
まあ、3000個表示させてみれば
デザイナで3000個のラベル表示は普通に考えればプログラム設計がおかしいと思うぞ
動的コントロール追加で結果として3000個以上表示されるってんならまだわかるが
0931デフォルトの名無しさん
2009/08/18(火) 16:48:50プロパティに値がセットされるのはインスタンスが生成された後、つまり実行時
コード補完されるのはコーディング時。つまり実行されていない時
元のクラス継承して、そのメソッドが使えるクラスと使えないクラス作るんじゃだめなのか?
0932デフォルトの名無しさん
2009/08/18(火) 16:56:18メソッド実行前にプロパティ値で条件分岐させるとか、
メソッド内でプロパティ値によって条件分岐させときゃ済むんじゃ?
どうしてもやりたければ、メソッドが定義されている派生クラス1と定義されていない派生クラス2を用意しておいて
プロパティ値を変更する代わりにクラスを変えりゃいいんじゃねーの。イチイチキャストの必要が出て来たりしてパフォーマスン微低下したりするかもだが
単にいちいち打つのがめんどくさいなら辞書登録とかクリップボード拡張とかで対応汁。
0933928
2009/08/18(火) 17:02:44ありがとうございます
言われて「あ」と思った次第です
自作クラスをカプセル化して他の人が使うようにするんですが、
コーディングのときに補完に「出る・出ない」が動的に変えられたら
やりやすそうだな、と思ってヒラメイタつもりの愚考でした
0934デフォルトの名無しさん
2009/08/18(火) 17:06:54各項目で背景色やフォントのサイズや色を状況により変化させたく
やむをえずラベルを大量につかったことあった
あたかも表っぽく見せるためにやむを得ず
それでも3000個も必要でなかったがデザインの時に処理が重すぎて大変だったな
だから一概にデザインが馬鹿で結論を出すのもどうかと
まぁ3000個と聞けば何とかなるだろうと俺もシステム開発してる身だから最初は思ったけどさ
Expressの体験版使ったようだけどその制限がもしかしたらあるんではないかな
それか単にスペックの問題でオーバーフローしてるのでは無いかと予想
0935デフォルトの名無しさん
2009/08/18(火) 17:41:43>デザインの時に処理が重すぎて大変
こうなるのは容易に想像できるから、デザイン画面に3000個も配置するのは馬鹿だといわれてるんだが...
デザイン画面に3000個もラベル貼って何とかなると思うとは
よっぽど凄い開発マシン使ってるんだな
あと言っとくが、ExpressEditionは体験版ではないぞ
0936デフォルトの名無しさん
2009/08/18(火) 18:12:20>本来GridViewを使うところを
>各項目で背景色やフォントのサイズや色を状況により変化させたく
変化させる (ように作る) のが普通。
0937デフォルトの名無しさん
2009/08/18(火) 19:47:11や
ttp://dobon.net/vb/dotnet/datagridview/font.html
で済む話でね?
0938デフォルトの名無しさん
2009/08/18(火) 19:51:32趣味のプログラムならまだしも業務ならサードパーティーのコンポーネントを使えばいいじゃない
0939デフォルトの名無しさん
2009/08/18(火) 19:54:390940デフォルトの名無しさん
2009/08/18(火) 20:05:47ラベルとか使うよね。
まあ、そこまで行くと全部自前で描画のほうが早いけど
0941デフォルトの名無しさん
2009/08/19(水) 01:35:01Buttonなら、ShowFocusCuesをOverrideしてFalseを返せば消えるのですが、
TabControlの場合はShowFocusCuesをOverrideしてもそれを読まないみたいで・・・。
どうやったらFocusの線を消せるのでしょうか?
0942デフォルトの名無しさん
2009/08/19(水) 09:33:46工数うんぬん抜かせば
0943デフォルトの名無しさん
2009/08/19(水) 09:53:14DrawFocusRectangleをオーバーライドすればいいんでね?
0944デフォルトの名無しさん
2009/08/19(水) 14:08:26それか他にこんなので表が作れるよ、と言うのがあったらお願いします
0945デフォルトの名無しさん
2009/08/19(水) 14:17:23TableLayoutPanelは、さらにコントロールを中に配置しなけりゃならんし、
データを表示するのに、各コントロールにアクセスしないといかん。
0946デフォルトの名無しさん
2009/08/19(水) 14:23:14ありがとうございました
DataGridViewもなかなか難しそうなので調べてやってみます
0947デフォルトの名無しさん
2009/08/19(水) 14:46:440948デフォルトの名無しさん
2009/08/19(水) 14:48:030949944
2009/08/19(水) 23:29:28DataGridViewに入力してある物を計算に使うにはどうしたらいいでしょうか?
0950デフォルトの名無しさん
2009/08/20(木) 00:09:56PictureBoxを二枚重ねて、下層のPictureBoxにはWebカメラの動画を表示し、
上層のPictureBoxに点や線で簡単な絵を描きたいと思っています。
この時、上層の点や線以外を透明にして下層の画像が見えるようにすることはできますか?
よろしくお願いします。
0951デフォルトの名無しさん
2009/08/20(木) 00:13:360952デフォルトの名無しさん
2009/08/20(木) 00:17:06>950
上層を下層の子コントロールにして、上層のpictureboxを透過
0953944
2009/08/20(木) 00:19:10すいません
参考になるサイトがありましたら教えて頂けないでしょうか?
手持ちの教科書が2003ベースに作られていてDataGridしか無かったもので・・・
0954デフォルトの名無しさん
2009/08/20(木) 00:33:15http://www.google.co.jp/hws/search?hl=ja&q=DataGridView&client=fenrir&adsafe=off&safe=off&lr=lang_ja
0955デフォルトの名無しさん
2009/08/20(木) 00:33:21ttp://msdn.microsoft.com/ja-jp/library/e0ywh3cz.aspx
ttp://msdn.microsoft.com/ja-jp/library/ms171596.aspx
ttp://msdn.microsoft.com/ja-jp/library/yc4fsbf5.aspx
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview_members.aspx
0957デフォルトの名無しさん
2009/08/20(木) 01:35:14Case 10 To 9にする事で解決したんですが何ででしょうか?
0958デフォルトの名無しさん
2009/08/20(木) 01:38:43正しい指定方法はカンマで区切る方法なんですね;;
0959デフォルトの名無しさん
2009/08/20(木) 02:07:08別にToが間違ってるわけじゃない
条件のデータ型は何だ
0960デフォルトの名無しさん
2009/08/20(木) 02:10:05Stringですがダブルクォーテーション無しで行けてたので無視してました・・・
ダメですかね?
0961デフォルトの名無しさん
2009/08/20(木) 03:29:180962デフォルトの名無しさん
2009/08/20(木) 03:44:110963デフォルトの名無しさん
2009/08/20(木) 06:24:52option strict on にすれば少し不幸になって沢山幸せになれる。
0964デフォルトの名無しさん
2009/08/20(木) 08:29:40ヴビ厨でない人間がいるからこそ
回答が期待できるわけだが。
0965デフォルトの名無しさん
2009/08/20(木) 10:37:47管理ツールで登録したODBCデータソース名をセットして接続できますが、
SqlConnectionの場合、接続文字列にODBCデータソース名を
利用することはできないのでしょうか?
OdbcConnectionで一旦接続してから、
その接続文字列からサーバー名データベース名等を取得して
それをSqlConnectionに渡すしかない?
0966デフォルトの名無しさん
2009/08/20(木) 10:59:23なぜSqlConnectionを使わんといけんの?
0967デフォルトの名無しさん
2009/08/20(木) 11:01:370968デフォルトの名無しさん
2009/08/20(木) 11:02:120969デフォルトの名無しさん
2009/08/20(木) 11:04:570970デフォルトの名無しさん
2009/08/20(木) 11:09:30http://www33.ocn.ne.jp/~yfuku/vb19.html
0971デフォルトの名無しさん
2009/08/20(木) 11:23:11「ADO.NETを介して」が抜けてますよ。
0972デフォルトの名無しさん
2009/08/20(木) 11:36:23そんなんわざわざつける必要ねーやん。
0973デフォルトの名無しさん
2009/08/20(木) 13:12:47ODBC接続文字列から直接は無理だろうが、パースして個別にユーザー名とか渡してやれば、
だいたい要求に適うんじゃないかな
0974デフォルトの名無しさん
2009/08/20(木) 14:32:24幸せになれました!
0975デフォルトの名無しさん
2009/08/20(木) 18:33:28したいんですが、どのように書けばいいのでしょうか。
Sub New(Hikisu As String)
Try
If Hikisu = "" Then
Throw New Exception("ダメ絶対")
End If
〜通常の初期化処理〜
Catch ex As Exception
Console.Write(ex.Message)
(ここに何か書く?)
End Try
End Sub
0976デフォルトの名無しさん
2009/08/20(木) 18:41:140977デフォルトの名無しさん
2009/08/20(木) 18:47:39可能であれば、引数を列挙体で定義
0978977
2009/08/20(木) 18:55:56質問の意図を読み間違えたようだ
0979デフォルトの名無しさん
2009/08/20(木) 19:15:56Debug.Assertを呼んだ方が良いかも。
0980975
2009/08/20(木) 19:24:26ハンドルされない例外を起こせば、コンストラクタが完遂されないから
インスタンスの作成プロセスが途中で終わる、ということになりますね。
その「途中」までの残骸みたいなものがもしあるなら、それはプログラム実行中でも
きちんと破棄されているでしょうか?
また、その「ハンドルされない例外うんぬん」のシステムメッセージではなく、
自身で用意したメッセージのみを表示させることはできるんでしょうか?
>>977
可能な限り、Enum宣言することにしています。
0981975
2009/08/20(木) 19:33:38試してみたところ、メッセージが出ても「続行」ボタンを押されるとコンストラクタが
完遂されて、インスタンスが出来上がってしまうような…。
使い方間違ってたらすみません。
0982デフォルトの名無しさん
2009/08/20(木) 19:39:340983975
2009/08/20(木) 19:55:04インスタンスが作成されないということは、どっちみち
呼び出し元がその例外を捕まえないといけないんですよね。
メッセージも呼び出し元が「呼び出せなかった」と言うべきですね。
Newの中で最初の例外発生をその場でCatchするのは、
そのクラスのインスタンス作成開始から例外発生までの間で
使われたメモリを全て解放するため。
そのあとで、その場ではCatchされない例外を放れば役目は終わり。
こういう理解で良かったですか?
このとき不安なのが、メモリを全て解放できたか?ということですが、
クラス内の変数とByValの引数に対して、軒並み
文字列=""
数値=0
開いたもの.Close
作ったもの.Dispose
あたりを実行すれば大丈夫でしょうか。
他に注意すべき点はありますか?
0984デフォルトの名無しさん
2009/08/20(木) 20:01:02メモリ以外のリソースはDispose(とかClose)で早めに片付けるのが一般的だが
それ以外の>>983はただのおまじないで実効力はない
コレクションから削除し忘れとかそういうレベルで考えろ
Catchもメモリの解放とは関係ない
0985デフォルトの名無しさん
2009/08/20(木) 21:24:40そんな処理してるのなんか.NET Frameworkのクラスの中になんぼでもあるがな。
なんで悩むんじゃ?
0986デフォルトの名無しさん
2009/08/20(木) 21:29:240987デフォルトの名無しさん
2009/08/21(金) 05:27:470988デフォルトの名無しさん
2009/08/21(金) 13:16:51process.startを使ってurlをブラウザで開く時に、
ブラウザのウインドウサイズを固定したいのですが、
うまくできません。
いろいろ調べてみたのですが、わかりませんでした。
開く時に指定するのではなくて、
開いた後コントロールするものなのでしょうか?
0989デフォルトの名無しさん
2009/08/21(金) 14:46:14process.startは基本はファイルを実行するだけ
引数のProcessStartInfoで最大化・最小化程度の指定はできる
起動時に制御できたとしても、後から自由にサイズ変更できるから
結局はブラウザ側(WEB側?)の小細工でサイズ変更不可にしないと意味なくね?
0990988
2009/08/21(金) 15:24:49回答ありがとうございます。やっぱりそうですか。
では、あとからサイズ変更するようにします。
自分専用の自動処理アプリなので、
あとからサイズ変更を他人にされる事がないので、そういう形にしたかったのです。
後からのサイズ変更は、起動しているアプリケーションを取得して、
それにたいしてsetを使えばいいんですよね。
やってみます、ありがとうございました。
0991デフォルトの名無しさん
2009/08/22(土) 02:30:44他のオブジェクト指向言語の経験が十分にある技術者が、手早くVB.NETの言語仕様や
文法を習得するに適した本ってどんなのがありますか?
ひとまず "ひと目でわかるMicrosoft Visual Basic 2008 データベース開発入門 " なる本は
確保しようとしてますが、もっと前提のところを書いた本があまりにも選択肢が多くて困ってます。
0992デフォルトの名無しさん
2009/08/22(土) 07:58:53言語仕様や文法ならオンラインヘルプで十分。
クラスライブラリが膨大なので使い方はGoogle先生でドボンに聞け。
0993デフォルトの名無しさん
2009/08/22(土) 08:16:21PG初心者じゃないならMSDNで済む話ですな
0994デフォルトの名無しさん
2009/08/22(土) 09:14:340995デフォルトの名無しさん
2009/08/22(土) 14:03:13VBという言語の位置づけを考えればたぶんそういう本はないと思う。
フランチェスコバレナの本あたりを軽く斜め読みしたあと、
よくweb上にC#とVBの微妙な違いを指摘した類の文章があるから、
そういうのにも目を通した方がいいと思う。
(そうしないと、むしろプログラミング熟練者ゆえにはまる落とし穴にはまる
可能性がある。配列のサイズ指定とか。)
>>992-993
質問者の日本語読めてる?w
0996デフォルトの名無しさん
2009/08/22(土) 14:47:12そんな落とし穴にはまる熟練者は居ないな。
自称熟練者だとはまるものは続出しそうだがww
0997デフォルトの名無しさん
2009/08/22(土) 16:57:56For I = 1 To 10
[email protected] = ???
Next
というコードで@の部分に I を入れたいのですがどうすれば入れられるでしょうか
0998デフォルトの名無しさん
2009/08/22(土) 17:10:430999デフォルトの名無しさん
2009/08/22(土) 17:15:511000デフォルトの名無しさん
2009/08/22(土) 17:37:4410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。