VB.NET質問スレ(Part30)at TECH
VB.NET質問スレ(Part30) - 暇つぶし2ch1:デフォルトの名無しさん
09/05/17 10:00:19
前スレ

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

テンプレは>>2

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

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

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

5:デフォルトの名無しさん
09/05/17 10:43:43
お久しブリーフ
>1 乙

6:デフォルトの名無しさん
09/05/17 11:53:23
皆さん配列はどう書いてますか?
Dim 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で動的に配列が作れるようですが処理が重いようなので、もっと効率よく動的な配列を作れないかと思っています。

7:デフォルトの名無しさん
09/05/17 12:00:34
失礼
Dim 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の数だけ動的に配列を追加したいということです。

8:デフォルトの名無しさん
09/05/17 12:13:33
>>1超乙乙乙

>6
arrayがSharedでもされてるの?
どうしても配列じゃなきゃダメってことでもないなら、素直にListやDictionaryを使う。

とりあえず、そのコードだとarrayの長さを固定しておく必要性が全く感じられないので、もっと良い例を頼む。

9:デフォルトの名無しさん
09/05/17 12:47:08
>>8
どうもです。
こんな感じで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

10:デフォルトの名無しさん
09/05/17 12:47:21
Config.iniの中身
[Test]
Test0=あああ
Test1=いいい
Test2=ううう

ReDim Preserveが重いという話を聞いたので、他に動的に配列を追加する方法はないかと思ったのです。
ListやDictionaryは使ったことがないんですが、どんな感じで使うものなんでしょうか?
また、ArrayListなんかはどうなんですかね?

11:デフォルトの名無しさん
09/05/17 13:23:39
ArrayListの方が速いらしいので、こんな感じにしてみました。

Dim 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

12:デフォルトの名無しさん
09/05/17 14:05:26
VBというかプログラミング自体初心者なんだけどこれを読めば上達するってゆうお勧めの本ってない?


13:デフォルトの名無しさん
09/05/17 14:21:11
プログラミングからして初心者なら、
VisualStudioのインスコ方法からスタートして、本に書いてある通りにコードを打ち込みながら簡単なプログラムを作っていくような本とか。
即効性は無いし効率も大して良く無いけど挫折はし辛い



14:デフォルトの名無しさん
09/05/17 20:47:53
ググッたのですが、うまく見つからないので
質問させてください

いまAxWebBrowserにinnerHTMLで
リンクを追加しようと思ったのですが、
innerHTML="<a href=""C:\Documents and Settings\hoge\hige[1].html"">hoge</a>"
のような場合だと書き込み時に空白や[]が
URLエンコード?されてうまくいきません。
このようなパスの場合は、どのように記述すれば良いでしょうか?

よろしくお願いします

15:デフォルトの名無しさん
09/05/17 21:13:58
innerText でやってみたらどう?

16:デフォルトの名無しさん
09/05/17 21:43:37
配列の要素数を固定にしないでRedim Preserve すればいいんじゃないか?

17:デフォルトの名無しさん
09/05/17 21:46:54
VB2005でマイクロ秒単位のタイマー制御したいって思ってるんだけど、
MSDNのヘルプ見たらデフォルトのタイマーだと1ミリ秒が最小と書いてありました。
ミリ秒より小さい時間単位は扱えないのでしょうか?
なにか良い方法を知ってる人いたら教えてください。

18:14
09/05/17 22:40:48
>>15
試してみましたが、正常に表示はされるものの
タグごと表示されるのであまり意味が無い感じですね

色々試した結果
Document.Write()でなら正常に書き込めるのですが
リンクをクリックしても反応しませんでした。。。

もうちょっと色々試してみます
ありがとうございました

19:デフォルトの名無しさん
09/05/18 03:52:14
>>1

>>5
3年ほど前経営版にいたきちがいオヤジ久


20:デフォルトの名無しさん
09/05/18 17:14:58
vc 2008 ee
新規でwindowフォーム作成、ツールボックスでメニュー追加。標準設定で初期化。
マウスのイベント組んでみると。


private: System::Void 新規作成NToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
MessageBox.Show("メインの2がクリックされたよ。");
}

error C2143: 構文エラー : ';' が '.' の前にありません。

どう修正すればおk?

21:デフォルトの名無しさん
09/05/18 17:22:29
自己解決

22:デフォルトの名無しさん
09/05/19 11:31:57
VB.NETスレに6分で自己解決するVCの書込みをするなんて素敵です

23:デフォルトの名無しさん
09/05/20 02:27:53
VBとVCのスレを間違えるなんて
まぁ、なんてあわてんぼうさんなのかしら

24:デフォルトの名無しさん
09/05/20 19:18:09
自分のパソコンだと
Me.PictureBox1.Image = Image.FromFile("C:\Documents and Settings\Owner\My Documents\普通.jpg")
のようにして画像ファイルを取得できますが、
プログラムとかと一緒に画像ファイルを入れたときは、画像のフルパスはどうやって取得すればよいのでしょうか?

いわゆる展開したフォルダの中にあるファイルを読み込みたいときにどうするか、が分かりません。
よろしくお願いします。

25:デフォルトの名無しさん
09/05/20 19:35:09
Application.StartupPath とか。

26:24
09/05/20 20:10:00
>>25
返信ありがとうございます。
Application.StartupPathをググってみたのですが、よく分かりません。

.slnファイルがあるフォルダに画像データを入れて、
Dim FolderName As String
FolderName = Application.StartupPath
Me.PictureBox1.Image = Image.FromFile("?\普通.jpg")

この?の部分に何かを入れるのでしょうか?

27:デフォルトの名無しさん
09/05/20 20:24:53
MsgBox(FolderName) ってやってみなよ。

28:24
09/05/20 20:34:52
>>27
できたんですが、おかしくなりました。
.exeファイルがあるフォルダの中に画像も入れて、

Dim FolderName As String
FolderName = Application.StartupPath
MsgBox(FolderName)
Me.PictureBox1.Image = Image.FromFile("Application.StartupPath\普通.jpg")

とやったら出来たんですが、MsgBox(FolderName)を消して実行してみるとエラーが出て、戻してみてもエラーが出るようになりました。
「アプリケーションのコンポーネントでハンドルされていないエラーが発生しました」と表示されます。

29:デフォルトの名無しさん
09/05/20 20:42:14
あきらめろ。

30:デフォルトの名無しさん
09/05/20 20:43:25
そもそもパスをリテラルで書く時点でプログラマの素養無い

31:24
09/05/20 20:48:36
>>29
>>30
そうですか。残念です。
諦めます。
いろいろとありがとうございました。

32:デフォルトの名無しさん
09/05/20 21:09:45
Me.PictureBox1.Image = Image.FromFile("test\普通.jpg")
これじゃ駄目なの?
実行ファイルがあるところにtestってフォルダ作ってそこに(ry

33:24
09/05/20 21:27:08
>>32
駄目でした。
再起動させても駄目でした。
初めはうまくいったのに。

レスありがとうございます。
みなさんのおっしゃるとおり、自分の素養を知らなければならないのかもしれません。

34:デフォルトの名無しさん
09/05/20 23:24:44
1. Application.StartupPath ってヒントをもらったんだから、ぐぐるとかの前に
 ヘルプで調べてみる。

2. 何かのプロパティってのはわかるから、中に何が入ってるのか調べてみる。

3. パスが入ってるのがわかるから、画像ファイル名と連結すればいい。

4. 文字列を連結するにはどうすればいいだろう?

5. Application.StartupPath & "普通.jpg" とかすればいい。

とかって展開するもんだろ、普通。

35:24
09/05/21 01:33:40
みなさん親身になって下さって本当にありがとうございます。
Application.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"")

なにぶん初心者ですので、みなさまから見たら「なんて下手なコードを書いてるんだ?」と思われるかもしれませんが、ヘルプは読みましたし、ひたすら検索しまくりました。
また何かありましたらよろしくお願いします。
ありがとうございました。

36:デフォルトの名無しさん
09/05/21 01:36:21
だからさ、何で中に何が入ってるか確認しないの?

37:デフォルトの名無しさん
09/05/21 01:37:13
あ。確認とか関係ないなw

文字列の連結方法がわかってないだけか。

38:デフォルトの名無しさん
09/05/21 01:43:50
読むべきヘルプの場所がわかって無いってオチかよ。

本を買えとは言わないけど、VB.netの基礎の基礎から解説してる適当なサイトを通読したほうがいいよ。基礎をすっ飛ばすとロクなものは作れない

39:デフォルトの名無しさん
09/05/22 00:01:37
vb6で組んだのを、2008アップグレードウィザード使って、ビルドすると以下のエラーが出る
どうすればいいですか、いくら調べてもわかりません。
エラー 29
COM 参照 "GridDTC" の依存関係を決定できませんでした。タイプ ライブラリ/DLL の読み込みエラーです。 (HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)) Project1

エラー 31
COM 参照 "VBRUN" の依存関係を決定できませんでした。種類が一致しません。 (HRESULT からの例外: 0x8002802A (TYPE_E_WRONGTYPEKIND)) Project1


40:デフォルトの名無しさん
09/05/22 06:10:07
必要なコンポーネントを手動で追加してみれば?

41:デフォルトの名無しさん
09/05/23 09:34:26
VB+.net 2.0でリモーティングのIPCチャネルを使って複数スレッド同時通信しようとしているのですが、
IpcClientChannelの生成はクライアントプロセスに一つだけでよいのでしょうか?
サーバー側はプロセス複数個を用意して各一つだけ要求を受け付けるようURIで割り振ります。

SAOで生成されるオブジェクトとクライアントチャネルの関係がはっきりしません。
IpcClientChannelに名前を与えて複数生成することもできるようですし…。

42:デフォルトの名無しさん
09/05/23 20:49:30
フォーム継承したアプリ作るとよくVisual Stadioがバグるんだけど仕様なのかね
基本仕様としてデザイナが開けなくなって、まあこれはいいとして(よくないけど)
継承元のフォームにNotifyIconを作成したら、そのプロジェクト起動時にデバッグ開始してないのに作成したNotifyIconが常駐するようになったんだが・・・
右クリックすると設定したContextMenuStrip出てくるから試しにApplication.Exit()やってみたら普通に異常終了したし

別に趣味でやってるからこんくらいのバグ許容できるけどさー・・・
物売るってレベルじゃねーぞ!

43:デフォルトの名無しさん
09/05/23 21:59:16
>>42
URLリンク(d.hatena.ne.jp)

44:デフォルトの名無しさん
09/05/23 22:50:50
DesignMode がわかってないバカ乙

45:デフォルトの名無しさん
09/05/23 23:52:42
>>43,44
ありがとう!勉強が足りなかった!
特に

46:デフォルトの名無しさん
09/05/23 23:54:32
特にDesignModeは目から鱗だった!
今までDesigner.vb直接いじってたから超楽になった!本当にありがとう!

興奮して途中で送信してしまいました。すいません。

47:デフォルトの名無しさん
09/05/24 02:28:44
罰として半年間ROM


48:デフォルトの名無しさん
09/05/24 16:17:59
突然ですが
2chのトリップを作成するプログラムを教えてください。
ライブラリでも何でもいいのでお願いします。

49:デフォルトの名無しさん
09/05/24 16:38:37
vbでハイパーターミナルを操作するライブラリを教えてください

50:デフォルトの名無しさん
09/05/24 17:54:54
回答者が過疎

51:デフォルトの名無しさん
09/05/24 18:05:44
>>48
URLリンク(kenmon.hp.infoseek.co.jp)

>>48
MSComm

52:デフォルトの名無しさん
09/05/24 19:58:07
>>51
超感謝でつ

53:デフォルトの名無しさん
09/05/24 22:13:49
初心者です。

フォームを印刷するプログラムを書きたいと思っていますが、
特定のラベルやフォームを印刷しないように設定することは可能ですか?

よろしくお願いします。

54:デフォルトの名無しさん
09/05/24 22:29:05
初心者であろうがなかろうが、なに使って印刷しているくらい書け。

55:デフォルトの名無しさん
09/05/24 23:48:42
印刷する前に非表示にすればいいじゃん。

56:デフォルトの名無しさん
09/05/25 00:57:18
53です。

すみません、自己解決しました。ありがとうございました。

57:デフォルトの名無しさん
09/05/25 01:13:22
死ね

58:デフォルトの名無しさん
09/05/25 01:51:34
>>57
許してやれ

59:デフォルトの名無しさん
09/05/25 03:14:10
>>58
もっとやわらかく諭しなさい?

60:デフォルトの名無しさん
09/05/25 23:47:41
デバッグはできるんですが、デザイナが表示できないんです

61:デフォルトの名無しさん
09/05/26 02:29:59
>>60
デザイナ閉じる→リビルド→デザイナ開く→(゚Д゚)ウマー

62:デフォルトの名無しさん
09/05/26 06:39:15
>>61
リビルド、ビルド回復不可/(^o^)\ 情報サンクス
しゃーないんで、ソースをまんま新しいプログラムに貼り付けたorz

63:デフォルトの名無しさん
09/05/26 17:38:19
フォルダの名前として、通常のパスに使われるフォルダ名でなくフォルダの
表示名をできるだけ素早く取得したいのですが、.NETFrameworkでサポートして
いましたら教えて頂きたく。

たとえば C:\Documents and Settings\All Users\Documents\My Pictures
の場合には、「共有ピクチャ」を表示したいなどですが、
あらゆるフォルダに対して毎回 Environmentクラスを使って「特殊フォルダ」
かどうかを調べて、該当したらあらかじめ用意しておいた文字列を割り当てる
方法ではなく、フォルダのフルパスを与えたら高速に一発で表示名を返してくる
ようなメソッドがあればありがたく。

Directoryinfoクラスではプロパティ、メソッドともに扱っていないようでした。
現状、.NETではこれはサポートしていないでしょうか?

64:デフォルトの名無しさん
09/05/26 18:58:16
msgbox createobject("shell.application").namespace("C:\Documents and Settings\All Users\Documents\My Pictures").name

65:63
09/05/26 20:19:40
ありがとうございました!!
Shell32.Shellオブジェクトを使うのですね、やってみたらできました!!
助かりました。またよろしくお願いします!


66:デフォルトの名無しさん
09/05/27 15:35:00
VB2005
クラスの追加で新しいクラスを追加、そしてそのクラスにクラスを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

67:デフォルトの名無しさん
09/05/27 15:51:16
>どうすればよいでしょうか。
波線にマウスカーソルを合わせ、表示されるメッセージを読む。

68:66
09/05/27 16:11:16
>>67
といわれましても、対処方は載っていませんし。
ググッてもでてこないので、わからないのですが

69:デフォルトの名無しさん
09/05/27 16:25:19
「クラスをロード」とか言うくらいだから根本的なとこで理解不足なんだろうけど
子供の使いじゃないんだからエラーメッセージを書くくらいはしようや。
とは言え、

  「新しいクラスを追加」したんなら、それは Form/Control/UserControl の
  いずれでもなく、基底クラスは Object のはず。なので、Load イベント
  なんかない。

くらいなら予想できるが。

70:66
09/05/27 16:44:25
エラーメッセージを書くのは忘れていました、すいません。
成るほど、このままではLoadは使えないんですね。
ありがとうございました。

71:デフォルトの名無しさん
09/05/27 16:52:48
全角英数書く奴がプログラマでございってのも何だかなとは思う

72:デフォルトの名無しさん
09/05/27 18:00:14
hallo じゃなくて hello にしようぜ

73:デフォルトの名無しさん
09/05/28 23:48:05
学校での宿題なんですが、プログラム上で取得した値を16進でメモ帳に出力したいのですが、色々調べたんですがわかりません。
バイナリデータの出力みたいなんですが…。


74:デフォルトの名無しさん
09/05/28 23:51:27
メモ帳はバイナリエディタではないので、無理矢理テキストとして表示します。
16進数の形でテキストとして出力するならOK。

75:デフォルトの名無しさん
09/05/28 23:59:01
プログラム初心者なので、もう少しバイナリデータ出力について教えてもらえないですか?



76:デフォルトの名無しさん
09/05/29 00:05:14
「16進数の形で」って十分なヒントがすでに書かれてるじゃねーか。少し調べりゃ教えてくれてるサイトぐらい見つかるだろ。

2chに書かれてる文字列以外理解できないならスマン

77:デフォルトの名無しさん
09/05/29 00:05:25
やです。

まず、何ができて何ができないのか、きちんと整理してきてください。

78:デフォルトの名無しさん
09/05/29 10:12:57
VB2008を使用しています。
ピアノの鍵盤をボタンで作っているのですが、黒鍵盤を白鍵盤の上に重ねようとすると、
黒鍵盤の大きさが途切れてしまい、小さくなってしまいます。
ボタンを重ねることってできないのでしょうか?
お解りになる方がおられましたらご教授ください。

79:デフォルトの名無しさん
09/05/29 10:25:17
>>78
ご教授は出来んが、要は黒鍵が
はっけん (なぜか変換(ry) の下にもぐりこんでる状態?

80:デフォルトの名無しさん
09/05/29 10:45:32
ACCESSを使ったデータベースを作りたいのですが、クラスを作りそこにAccess
への接続をするコードを書いたのですが、それをどう入れたいフォームに呼び出す
のかがわかりません。どうしたらよいでしょうか、ちなみにバージョンは2005です。

81:デフォルトの名無しさん
09/05/29 11:02:10
>>79
レスありがとうございます。
そうです。白鍵盤の下に黒鍵盤の一部がもぐりこんでしまっているんですよ。
潔くボタンをあきらめた方が良いのかな、と思ってしまいます。

82:デフォルトの名無しさん
09/05/29 12:30:19
┏┓
┃┃
┃┃   こういう形のボタンを作るのがベストなんだろうけど
┃┗┓  それは茨の道なので、「.net ボタン Zオーダー」あたりで
┃  ┃  検索するよろし。
┃  ┃
┃  ┃
┗━┛

83:965
09/05/29 14:22:01
>>82
レスありがとうございます!!
勉強になります。参考にさせていただきます!!

84:83
09/05/29 14:23:20
↑名前が965になっていますが、間違いですのでスルーしてください。
連レスすみません。


85:デフォルトの名無しさん
09/05/29 19:27:56
ボタンの形変えるくらいなら鍵盤の画像貼り付けて
Clickイベントでどれが押されたか座標で判定する方が早くて綺麗

86:83
09/05/29 20:05:47
>>85
レスありがとうございます!
その方法は思いつきもしませんでした・・・。
試してみます!ありがとうございます!!

87:デフォルトの名無しさん
09/05/29 20:46:31
>>85
その場合「鍵盤が押された」表現はどうするのかな?

88:デフォルトの名無しさん
09/05/29 20:52:06
「鍵盤が押された」画像に切り替えれば

89:デフォルトの名無しさん
09/05/29 21:02:05
でも白鍵と黒鍵の組み合わせ考えると相当なパターン
用意しないといけない
(まあマウスでクリックだから複数鍵同時打鍵考えなくて
いいのは救いだが)

90:デフォルトの名無しさん
09/05/29 21:11:30
押された鍵盤の画像だけ切り替えれば

91:83
09/05/29 21:12:24
>>87-89
レスありがとうございます。
鍵盤が押された画像ですが、かなり用意しなければなりませんので確かに大変かもしれません。
言い忘れていましたが、マウス、キーボードどちらの入力も可能にしています。
マウスは複数同時に押すことはできませんが、キーボードからですと複数同時が可能となっています。
てんやわんやです。

92:デフォルトの名無しさん
09/05/29 21:33:02
鍵ごとに画像を分けてDrawImage
4つの鍵の形とそれぞれ押された状態で全部で8枚あれば足りる

93:デフォルトの名無しさん
09/05/30 14:26:38
時間を利用した暗号を作成するソフトを考えてるのですが
Timestringで時間を取得すると「00:00:00」という風になります
これを数字として認識できるように「000000」という風に区切り無しにする方法はあるでしょうか?
もしくは「00100100」という風に置き換えるという方法でもいいです

94:デフォルトの名無しさん
09/05/30 15:39:45
そもそもスタートから間違ってる
DateTime.Now.Ticks使えばいい

95:デフォルトの名無しさん
09/05/31 00:02:14
時間を利用した暗号ってなんだよ…
どういうものでどういう用途か知らんが
多分そういうのは暗号とは言わない方がいい。


96:デフォルトの名無しさん
09/05/31 01:30:48
ワンタイムパスワードなんてもあるけどね

97:デフォルトの名無しさん
09/05/31 10:57:06
開発環境
OS:WindowsXP ProSP3
Ver:Visual Basic .net 2002

実行環境
OS:WindowsXP ProSP3/HomeSP3
.NET Framework:1.070

フリーソフトを作ろうと思っています。
データベースについては、今はスタンドアローンでSQLServerとつないで動作確認をしているのですが、
配布する際に「クライアント側でもデータベースを入れてくれ!」というわけにはいかないので、
代替できるものを探しています。

ソースコード内部のSQLは極力変更したくないので、テキストファイルなどでの代替ではしたくないのですが、
可能でしょうか?


以上、よろしくお願いいたします。

98:デフォルトの名無しさん
09/05/31 13:51:32
>>97
.NET Framework:1.070で使えるかしらないけど、SQLite

99:97
09/05/31 20:37:09
>>98
やってみます。ありがとうございます。

100:デフォルトの名無しさん
09/05/31 20:41:57
2008Express使えばいいのに
無料でもさすがに2002よりはマシだろ

101:デフォルトの名無しさん
09/05/31 20:47:49
>>100
配信終了してたはず

102:デフォルトの名無しさん
09/05/31 20:50:10
終了したのは2005
2008は普通にダウンロードできる

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

ここからコンボボックスとデータベースを繋ぎ、登録ボタン押すとデータベース
に追加できるようにしたいのですが、繋ぐためのコードがよくわかりません。

URLリンク(hpcgi1.nifty.com)

こちらを参考にしたのですがどう繋げたらいいかわかりませんでした。お願いします。

104:デフォルトの名無しさん
09/05/31 23:48:37
なんか変だな。

とりあえず、INSERT 文でも投げれ。

105:デフォルトの名無しさん
09/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
とすることでしょうか?

106:デフォルトの名無しさん
09/06/01 00:14:29
やってみればいいじゃん。

それから、マルチポストは止めような。

107:デフォルトの名無しさん
09/06/01 00:18:22
たぶん自作のソースがタコなんだと思うんですが、4コア環境にするとこけます。

デバッグしても原因が見つからず、暫定的にプログラム側で使用コア数を制限したいのですが、
そのようなオプションはご存じないでしょうか?

assemblyの中に書くのかとは思うのですが見つけられず。

あと、外部接続するのですが、WindowsFWの初回警告を出させる方法ご存じありませんか?

どうぞよろしくお願いします。

108:デフォルトの名無しさん
09/06/01 00:20:53
ありがとうございます。
気をつけます。あせっていたもので気にせず投稿していました。すみません。

109:デフォルトの名無しさん
09/06/01 00:21:50
>>107
とりあえず、SetProcessAffinityMask() とか?

110:デフォルトの名無しさん
09/06/01 02:03:53
<DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
Public 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

で解決しました。ありがとうございました。

111:デフォルトの名無しさん
09/06/02 19:50:56
初歩的な質問ですいません
win32APIと.netはまったく別ものなのですか?win32api上に.netが載っていると思っていたのですが
URLリンク(www.atmarkit.co.jp)を見ました。
また、最近のVisual studioは.net上で動いているのですか_

112:デフォルトの名無しさん
09/06/02 20:13:39
.NETのGUIはWin32APIに皮を被せたもの
Win32APIネイティブのコントロールを使わない新しいGUIフレームワーク(WPF)も使える
VisualStudio自体は.NETアプリじゃないけど.NETに激しく依存してて.NETなしでは成り立たない

113:111
09/06/02 20:31:23
>>112
なるほど~、わかりやすい説明ありがとうございました

114:デフォルトの名無しさん
09/06/03 23:52:26
質問させてください

VB2008にてSeriaPortを使って通信を行うプログラムを書いています
それで、通信中に強制的に通信ケーブルを抜く操作を行うと、通信を停止後、再接続を試みるという処理を行わせたいのですが
通信中に通信ケーブルを引き抜くと、当然通信は止まってくれるのですが、その後、そのポートに接続を行おうとすると
「ポートにアクセスできません」といex.messageを受信してしまいます。
再び接続をするには、ソフト自体を立ち上げなおさないといけません
これをソフト上の処理で、再説z区できるようにしたいのですがどうすればよいと思われますか?

115:デフォルトの名無しさん
09/06/03 23:54:15
Hairetu(100,100)
Hairetu(100)()

の違いって・・・?
多次元配列?二次元配列?頭がこんがらがりそう

116:デフォルトの名無しさん
09/06/04 00:03:25
>>114
開きっぱなしになってるんだろうね。
具体的にどういう方法で通信をやってるの?

117:114
09/06/04 00:20:45
>>116
どういう方法と言いますと?
通信方法はこちらからコマンドを送って、相手の汎用機器から返信をもらう形です。
接続処理は普通に.open()と.close()です。
この場合、強制的にケーブルを外すので、close処理が行われないことになりますが。
それで再度openを行っても、おっしゃられるとおり、開きっぱなしになってるんだと思います。
よく分からなかったんですが、意味合い的にポートの開放(Dispose)とかやってみたんですが、これもアクセスが拒否されてしまいました

118:デフォルトの名無しさん
09/06/04 19:14:28
コントロールをダブルクリックしたときに自動生成されるコードを、
VB6のようにアルファベット順で出来るようにすることは出来ますか?

119:デフォルトの名無しさん
09/06/05 10:58:58
>>115
前者は、宣言した時点で 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)

でもメリットはメモリの節約くらい。
(速度にも影響するかもだが)

120:デフォルトの名無しさん
09/06/05 18:01:41
>>119
> でもメリットはメモリの節約くらい。
Array の各種メソッドが使えるってメリットは大きい
むしろ多次元配列こそメリットがないと思うね

121:デフォルトの名無しさん
09/06/05 20:35:19
ジャグ配列(後者)の方が大分速い
いろいろ多次元配列は冷遇されてるからそのうち公式に非推奨になるかもね

122:デフォルトの名無しさん
09/06/05 20:47:28
探しても見つからないので、教えてください。
VB.netでクラスの敬称などを使用していて、日本語でコメントしてあり、大規模である。

という条件を満たしているものをご存知でしたら、教えてください

123:デフォルトの名無しさん
09/06/05 20:54:00
VB.NETのオープンソースプロジェクト自体ほとんどないから諦めてC#読めるようになるといいよ

124:114
09/06/05 22:26:13
どなたか分かりませんでしょうか・・・

125:115
09/06/05 22:36:22
なるほど、そういうことになるんですね
私は前者は、データを格納するためのまんまデータの下駄箱のような配列として使用して
後者は、一時的にSplitなどで連続なデータを格納したいときに使用していました
使い分けてました
ちなみに、どちらが多次元配列とジャグ配列は別物なんですか?

126:114
09/06/05 22:41:23
>>115
多次元配列で二次などの要素数が不定期なものをジャグと

127:デフォルトの名無しさん
09/06/05 22:55:25
メモリの構造が全然違う
多次元配列は連続したメモリ領域
ジャグ配列は配列の配列
.NETでは通常区別する

128:デフォルトの名無しさん
09/06/06 17:46:02
Microsoft AccessのMDBファイルは、普通にAccessを使ってExcelファイルやCSVファイル
のデータをインポートしたり、クエリーの結果をExcelファイル形式でエクスポートした
りしてますが、Accessを使わずに、VB.NET等から同様のことってできますやろか。

129:デフォルトの名無しさん
09/06/07 09:54:00
VB.NETで作成したexeを動かすのにランタイムは必要になりますか?

130:デフォルトの名無しさん
09/06/07 09:55:33
VBランタイムはいらんが再頒布可能パッケージのインストールは必要だな

131:デフォルトの名無しさん
09/06/07 09:56:45
ありがとうございます。

132:デフォルトの名無しさん
09/06/07 13:53:55
C++で作ったコードをVB.netに変換してくれるような機能はありますか?

133:デフォルトの名無しさん
09/06/07 13:56:59
ありません。

134:デフォルトの名無しさん
09/06/07 13:57:39
そうですか、残念です

135:デフォルトの名無しさん
09/06/07 15:40:38
VB.NETでちょっと悩んでいるので質問させてください。
ComboBoxでスタイルをDropDownにした時、テキストボックス部を描画しているイベントは何でしょうか?
オーナードロウで描画する際DropDownListであればOnPaintで描画したものがそのまま出るのですが、
DropDownのときはOnPaintで描画したものがテキストボックス部の描画で上書きされて隠れてしまいます。
DrawItemは違うみたいで、ちょっと袋小路です・・・。

136:デフォルトの名無しさん
09/06/07 22:01:34
>>158
【魔力】書き込むと願いが必ず叶うスレ【強力】409
だろ

137:デフォルトの名無しさん
09/06/08 20:04:40
↑ちょっと書き込み位置がズレていないか?

138:デフォルトの名無しさん
09/06/09 11:08:11
単なる誤爆だろう。なんだ書き込み位置って。

139:デフォルトの名無しさん
09/06/09 12:21:52
はいっ
コモンダイアログのデフォルトパスを
「ネットワーク全体」にしたいのですが、
参考になるサイトがどうにもみつからないんですけど
どのようにすればいいんでしょうか?


140:デフォルトの名無しさん
09/06/11 13:45:57
::{208D2C60-3AEA-1069-A2D7-08002B30309D}\ネットワーク全体

141:、
09/06/11 21:27:39
VB2008で悩んでます。
exeへパイプでデータを流す処理を考えています。
どんどんデータが流れてくるのでexeはループでデータが来るのを待っているのですが
そのことによってexeのほかの処理が動けません。どうすればよいですか?

142:デフォルトの名無しさん
09/06/11 21:29:35
スレッド

143:デフォルトの名無しさん
09/06/12 10:50:23
VB2008を使用しています。
キーボードを押すと音が鳴るプログラムを作成しています。midiOutなどを使ってやっています。
音は出るのですが、うまくいかないことがあります。
例えば、キーボードの"A"を押すと、"ド"の音が出るようにします。それで、Aを押すと、"ド"の音は出るのですが、
長押しですと、ドーー ドドドドドドド…といった風に途中から連続して音が出てしまいます。
きちんと音を伸ばして鳴らしたいので、何か良い方法はありませんでしょうか?

144:デフォルトの名無しさん
09/06/12 12:17:53
KeyDownで鳴らし始めてKeyUpで止めればいいんだろ
そういうことができるAPIがあるかは知らんけど

145:デフォルトの名無しさん
09/06/12 15:46:54
Public Enum ScanDirection
x = -1
y = 0
z = 1
End Enum

列挙型で宣言した値は計算に使って値を変えていくことは可能でしょうか?

146:デフォルトの名無しさん
09/06/12 15:52:12
変数使えよ

147:デフォルトの名無しさん
09/06/12 16:17:50
>>146
ありがとうございました

148:デフォルトの名無しさん
09/06/12 20:29:26
>>143
ドーッって、音が鳴り終わるまで、入力されても無視するってすればいいんじゃない?
そのためには、音が鳴っている状態を取得しないとだと思うけど。

適当にググったら↓使えそうな気がする

【VB.NET】 MCIで音楽再生 その1
URLリンク(tenjiku.exblog.jp)

MIDI、MP3などの音楽ファイルを再生する
URLリンク(dobon.net)


149:143
09/06/13 08:50:35
>>144
ありがとうございます。KeyUp,KeyDownは使用しているのですが、うまくいきません。
もう少し試行錯誤してみます。
>>148
その方法があったとは・・・。ですが和音も鳴らしたいので、その方法だと和音が鳴らない気が。
むむむ、もう少し考えてみます。

お二方ともご回答ありがとうございました。


150:デフォルトの名無しさん
09/06/13 15:15:48
>>149
キーイベントを受けたとこで、どのキーがすでに押されているかを判定するってすればどう?
全部のキーイベントを無視するんじゃなくて。
押されていないキーの音は鳴らし、押されているキーの音は何もしない。


151:デフォルトの名無しさん
09/06/13 17:58:49
>>149
MIDIを使用する(VB.Net)
URLリンク(homepage1.nifty.com)

152:デフォルトの名無しさん
09/06/13 18:14:57
>>151 じゃダメだわ、スマソ

153:デフォルトの名無しさん
09/06/13 18:19:37
ReportViewerコントロール用のレポートファイル( .rdlc )のデザイナでの作成方法について色々解説してあるページとか参考書ってないでしょうか。

レポートウィザードで作れるピボットテーブルをベースに色々と追加したい要素があるんですが、どうやりゃ良いのかいまいちわからない。
一応、やりたいことは今年度のピボットテーブルに前年度の合計とか、前年度比とかの行とか列を追加することです。

154:デフォルトの名無しさん
09/06/13 22:14:15
MIDIってどうやって音出せばいいのか知らんかったけど、これ面白いね。
勉強になるわぁ。

155:デフォルトの名無しさん
09/06/13 22:59:08
>>149
MIDIプログラミング
URLリンク(eternalwindows.jp)
Windows MIDI プログラム入門
URLリンク(ourworld.compuserve.com)
MIDIを鳴らす
URLリンク(www13.plala.or.jp)
詳説MIDI規格
URLリンク(www.pluto.dti.ne.jp)
自作楽器「MIDIテルミン」の製作:CodeZine:
URLリンク(codezine.jp)
MIDI音源の利用
URLリンク(www2.pf-x.net)
VB.NET でMIDIOUTをOPENするには?
URLリンク(hpcgi1.nifty.com)
16進数、8進数、2進数の文字列を整数に変換する
URLリンク(dobon.net)


156:デフォルトの名無しさん
09/06/13 23:44:12
コールバック関数による出力デバイスの状態監視
URLリンク(maglog.jp)
MSDN midiOutOpen
URLリンク(msdn.microsoft.com)

デバイスは送られたデータの再生が終わるとコールバック関数にMM_WOM_DONEメッセージ(WOM_DONE)を送ります。


157:デフォルトの名無しさん
09/06/14 16:50:16
ちょっと質問です
text1、text2、text3というチェックボックスがあったとして、

For i = 1 To 3
If text[i].Checked = False Then
MsgBox("エラー:text" & i)
End If
Next

という風にしたいのですがtext1の1を動的に変えたい場合はどうすればいいのでしょうか?


158:デフォルトの名無しさん
09/06/14 16:55:46
配列に入れとけ

159:デフォルトの名無しさん
09/06/14 19:48:26
2002や2003じゃ駄目だがControlsを使うという手もあるかな

160:デフォルトの名無しさん
09/06/15 09:24:22
VB.NETでマルチコア対応のコードって書けます?

161:デフォルトの名無しさん
09/06/15 13:56:30
スレッド使えるだろ

162:デフォルトの名無しさん
09/06/15 14:36:14
意味分かってないと思われ

163:デフォルトの名無しさん
09/06/16 12:21:22
SQLを実行して、そのデータの表示方法を変えて出力したいのですが、どうすれば良いかわかりません。

164:デフォルトの名無しさん
09/06/16 12:29:34
0から全部説明しろってか。
せめて SQLDataAdapter や DataSet の使い方くらい入門書で勉強しなさい。

165:デフォルトの名無しさん
09/06/16 20:09:41
>>163
そのまま何回やっても勝手に表示方法が変わったりはしません。
どうすれば良いかと言うと、表示方法を変えるプログラムを作るしかないでしょう。

>>164
たぶんこのレベルの話かと

166:デフォルトの名無しさん
09/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")



167:デフォルトの名無しさん
09/06/16 23:53:21
どこにPInvoke使う必要がある。


168:デフォルトの名無しさん
09/06/17 01:11:12
LastError くらい確認しろよ

169:166
09/06/17 01:51:36
Daclareでやってみても結果は同じでした…。

LastErrorの値は、確認してみます。中途半端ですみません。


これに限らず、VB2005でAPIを使用する時に文字列を渡すと動作がおかしくなる傾向があるんですよね…。

うまく文字列が渡っていないのか、あるいは文字列を渡す時(Daclare等)の設定の他に、プロジェクト単位での設定等が必要になるのでしょうか?

結局、全てのAPIはVB2005で使用可能と考えて良いのでしょうか?

真剣に悩んでおります。。。
もう少しご教授ください。お願いします。

170:デフォルトの名無しさん
09/06/17 01:53:28
つーかなー。A か W かも明示的に指定してないし、マーシャリングも指定してないし、
適当に呼んどいて何言ってんだか、って感じだな。

171:162
09/06/17 02:18:35
Aliasですよね?
AもWも明示して試してみたのですが結果は同じでした…。

Marcialの指定は初耳です。どういう形で指定すれば良いのでしょうか?


分かる方から見れば、適当なだけかも知れませんが、不勉強なのは承知の上です。

すみません。教えて頂けますでしょうか。。。

172:デフォルトの名無しさん
09/06/17 09:20:45
VB2008を独習するのに、おすすめの書籍を教えてください

これまでVB6.0のフォームとモジュールだけでやってきて、
クラスとかオブジェクト指向とかはネットで読んで
「なんとなくこんなもんだろうか」程度の認識です

173:デフォルトの名無しさん
09/06/17 09:29:36
オブジェクト指向きっちり勉強したいならjavaでもやれば?
VBやC#の本ってその辺の概念はスルーまたはあらかじめ理解してる前提で書かれてるのが多い

174:デフォルトの名無しさん
09/06/17 09:33:25
>>166
>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
この場合は無指定で問題ない。

175:166
09/06/17 11:08:28
174さんの言う通り、アクセス権を設定したら取得出来ました。
本当にありがとうございました!

>Private Const EVENT_ALL_ACCESS As Integer = &H1F0003

こういうEnumの設定はどこで確認すればよいのでしょうか?
MSDN等、どこかに資料があるのでしょうか?


176:デフォルトの名無しさん
09/06/17 11:15:48
win32apiのC言語のヘッダファイル

177:デフォルトの名無しさん
09/06/17 11:16:23
>>4の「初心者から中級者のためのVB」のリンクきれてますよ

178:デフォルトの名無しさん
09/06/17 11:25:53
>>175
Enum じゃないし。
つか、API 呼び出しするのに API の仕様も確認しないとか…

>MSDN等、どこかに資料があるのでしょうか?
何を指定すればいいのかは勿論 MSDN ライブラリ等。
ただ、記号定数が実際にどういう値なのかは
ヘッダを覗くしかない。
(探すときは Visual Studio のファイル検索を使うと楽)

…ていうかね、>>174 でも書いたけど
>>167 の言う通り、API 呼び出し使う意味がないんだったら
Dim ev as EventWaitHandle = EventWaitHandle.OpenExisting("EVENT000")
とした方がいいと思うんだが。

179:166
09/06/17 13:37:01
なるほど、そういう事ですね。
もうすこし調査してみます。

本当にありがとうございました。名無しに戻ります。
それでは。

180:172
09/06/18 09:27:49
>>173
今現在、VB2008を学習しなくてはならない事情がありまして
何かカリスマとかバイブル的な書籍、というのは無いものでしょうか

特に学習しなくても、VB6.0の頃とほぼ同じ作り方ができてしまいますが、
それを払拭して、VB2008ならこう構成した方がよい、こう書くべき、
というセオリーみたいなところを勉強したいです

181:デフォルトの名無しさん
09/06/18 09:43:07
じゃC#勉強すればいいじゃん
自動的にVBも使えるようになるよ
VBの本である限りVB的なやり方というのはどうしても出てくる
VB2008というか.NET的に1番良いのは「C#と同じように使うこと」

182:デフォルトの名無しさん
09/06/18 15:08:21
VB.NET2005を使ってADOとかADOXを使いMDBファイルを作成するPGをwebにアップされている
サンプルを見つつ書いてみたのですが、どうしてもエラーが取れません。

' 他のフィールドの定義
With cat.Tables(strTable).Columns
  .Append("商品コード", adWChar, 10)
End With

のadWCharでエラーになります。この型を認識させるにはどこをいじればいいのでしょうか?

183:デフォルトの名無しさん
09/06/18 17:34:51
GUI(フォーム)をVB、コードをC++で書くことができると知ったのですが、
(スレリンク(tech板:1番))
方法があれば開設しているサイトなど、教えてください
また複数の言語を混ぜてプログラムを作ることをなんというのでしょうか?

184:デフォルトの名無しさん
09/06/18 19:23:24
IE では、「アクティブ コンテンツ」を制限する機能がありました。
「セキュリティ保護のため、このコンピュータにアクセスする可能性
のあるスクリプトやActiveXコントロールを実行しないよう、IEで制限
されています。オプションを表示するには、ここをクリックしてください」
という情報バーが出てくるものです。

この警告機能と、ダイアログを表示してユーザーが選択してから表示する
という機能を、WebBrowserにおいても導入するためにはどういった処理を
すれば良いでしょう?何か参照推奨のサイト等お教えください。よろしく
お願いします。

185:デフォルトの名無しさん
09/06/18 22:20:05
>>183
C++/CLIでアセンブリ作って参照に追加するだけ
と言えば簡単そうに聞こえるけど、C++と.NET両方の知識がないと厳しい。

186:デフォルトの名無しさん
09/06/18 22:34:15
>>185
ありがとうございます
C++/CLIでCILを作るのですね・・ややこしい><

187:デフォルトの名無しさん
09/06/19 01:45:26
昔のC++のコードを利用したいとかでなければまずメリットはないね
ものすごい科学技術計算でもするなら別だけどw

188:デフォルトの名無しさん
09/06/19 03:46:53
javaとか、昔の Basicって、1つの命令の後に、区切り文字
(";" や ";")を書けば、同じ行に続けて次の命令を記述できたよね。

VBって、それがないから、1行に一つの命令しか書けないでしょ?
1行に1つの命令しか書けないって、よく考えたら
ものすごく使い勝手悪い言語じゃない?


189:デフォルトの名無しさん
09/06/19 04:03:27
あるから問題ない

190:デフォルトの名無しさん
09/06/19 04:40:56
>>188

: で区切ればいいだろ

191:デフォルトの名無しさん
09/06/19 10:01:01
>>150-152
>>154-156
大変遅くなりました!レスありがとうございます。
どれも参考になるものばかりで、本当にありがとうございました!
頑張って作成したいと思います!!

192:デフォルトの名無しさん
09/06/19 10:02:21
( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \

193:149
09/06/19 10:02:42
↑↑149です。
連レスすみませんでした。


194:デフォルトの名無しさん
09/06/19 13:00:12
現在VB2008 expressでWindowsフォームアプリケーションの多言語化について勉強しています。

C#による多言語対応アプリケーション開発のコツ
URLリンク(codezine.jp)
を参考に、デザイナ、resxファイルを利用して多言語化を行うことができました。

この作業を実際に行ってみて思ったのですが、
.netには、ある言語に翻訳したい!と思った人がアプリ公開者を通さずに翻訳 > 配布 ということが簡単にできる仕組みは準備されているのでしょうか。

実際に多言語対応したアプリを公開した場合、個人レベルだと、
規定の言語で公開(またはVerUP) > 各言語の翻訳者による翻訳 > 翻訳を反映
という流れになると思うのですが、

VerUP等でresxファイル内のデータが増えた場合(翻訳作業が必要な文字列などが増えた場合)、
各言語のresxを(アプリ公開者が)入手 > (アプリ公開者が)ビルド > dll作成 > 配布

という方法で翻訳を反映するのがやはり一般的なのでしょうか。

なければ自前で、実行時に動的にカルチャに応じたXMLを読み込み(あれば)反映、といったような処理で多言語化を実装しようと考えています。

195:デフォルトの名無しさん
09/06/19 13:10:11
厳密名付けてなかったら翻訳者が勝手にresxをコンパイルしたdllでも読み込まれるな

196:デフォルトの名無しさん
09/06/19 15:39:40
DB側の接続文字列に変更があったとき、
DataSetにConnectionStringを追加していくと
前のConnectionStringが残ってしまうのですが・・・。

これ以前のConnectionSringを編集したい、
または以前のを削除したい場合はどうしたらいいのでしょうか?

197:196
09/06/19 15:50:19
app.configとSettings.settingsを手動で書き換えていいのかな・・・。

198:デフォルトの名無しさん
09/06/19 15:55:01
OK

199:196
09/06/19 17:13:01
バックアップ取ってやってみたら
app.configとSettings.settingsの書き換えだけで問題なかったようです。
とっとと自分で試せって話ですよね・・・w

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

200:デフォルトの名無しさん
09/06/20 09:57:22
環境:VB.net2003

GUIプログラムで、Windowsフォームの中にコンソールのようなCUIなコントロールを表示させたいのですが、
(AllocConsoleみたいに別途コンソールを開くのではなく)
そういったコントロール(以前に入力(実行)した内容は変更できない)はありませんでしょうか?
(標準でなくてもサードパーティー製でもなんでもいいです)
もし無いのであればRichTextBoxあたりでなんとかしてみるつもりです。


201:デフォルトの名無しさん
09/06/20 10:39:06
フォルダを複数選択するダイアログを作成したいと思っています。

こちらのページ
URLリンク(dobon.net)
こコピペでフォルダを選択できるようにはなりました。

'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プロパティがないようです。
どうすればフォルダを複数選択できるようになるのでしょうか?

202:デフォルトの名無しさん
09/06/20 10:55:49
代案があるかどうかは知らんがSHBrowserForFolderじゃ仕様上複数選択はどうやっても不可能だな

203:デフォルトの名無しさん
09/06/20 11:06:55
URLリンク(btmtz.mvps.org)

204:デフォルトの名無しさん
09/06/20 11:42:47
ありがとうございます。
USBメモリ・外部メール等禁止のため長いコードだと手打ちはしんどいので、FolderBrowserDialogでディレクトリを選択後checked listboxに
ディレクトリ一覧を表示、そこで複数にチェックを入れるという形にしようと思います。

205:デフォルトの名無しさん
09/06/21 03:15:14
繰り返せばええがな

206:デフォルトの名無しさん
09/06/22 19:50:49
一覧表示の親フォームから詳細編集の子ダイアログを開くようなDBアプリを作ってて
親のBindingSourceを子に渡して子の各フォームにバインドさせたいんだけど、
コードで直接書くんじゃなくてデザイナのプロパティで設定する方法ってないでしょうか?

207:デフォルトの名無しさん
09/06/22 19:53:30
s/子の各フォーム/子の各コントロール/

208:デフォルトの名無しさん
09/06/22 20:18:28
VB.NETからエクセルのマクロを作成したり
データの入力制限を編集することは可能ですか?

指定したエクセルの列に値の重複を禁止する入力制限を追加して
DBの主キーのような設定を持たせたいのですが
入力制限の編集をVB.net上で行う方法が見つからないので

209:デフォルトの名無しさん
09/06/22 21:18:07
マクロの記録で記録できるならできる。
記録できないのも、一部は可能。

210:デフォルトの名無しさん
09/06/23 19:50:53
VBAのマクロを生成できるから何でもできる

211:デフォルトの名無しさん
09/06/23 20:23:57
調べてもマクロ呼び出ししか出てこないけど。
VB.net上で書いたソースをどの参照からマクロ登録することが出来るんだろう。
どなたかサンプルソースがあるところ教えてください

212:デフォルトの名無しさん
09/06/23 20:38:49
>>211
URLリンク(officetanaka.net)

213:デフォルトの名無しさん
09/06/23 22:44:41
VB2005でftpクライアントの機能作ってます。
WebRequestMethods.Ftp でサーバにあるファイル名を取ってくるときに、
2バイト文字のファイル名だと化けてしまいます。
化けないで正しいファイル名を取得する方法はないでしょうか?

214:デフォルトの名無しさん
09/06/23 22:53:11
FTPではマルチバイト文字は未定義なのよね
TcpClient or Socket使って自分でFTP喋るしかないんじゃないかなぁ
まあどっかにその辺の対応も含んだ野良FtpClientがあるかもしんないけど

215:デフォルトの名無しさん
09/06/24 02:26:15
化けるって、どこでどう化けるんだ?

216:デフォルトの名無しさん
09/06/24 22:10:40
テキストボックスのD&Dで
テキストの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を取得するにはどのように書いたら良いでしょうか?

217:デフォルトの名無しさん
09/06/24 22:52:44
"UniformResourceLocator"でデータ取得
MemoryStreamにキャストしてそこからRead
Chr(0)を探してその直前までをEncoding.Default.GetString

218:デフォルトの名無しさん
09/06/24 22:54:22
あ、Chr(0)じゃなくていいか、単に0探すだけで

219:デフォルトの名無しさん
09/06/25 00:14:36
レスありがとございます。
その方法はアドレスバーのURLの左にあるアイコンをD&Dする方法ではないでしょうか?
HTMLのリンクになっているテキストはドラッグしても通行禁止のマークのままなのですが・・・

220:デフォルトの名無しさん
09/06/25 00:18:44
普通にa要素のD&Dを取れる
IEとFxで確認した
あ、EffectはCopyだけじゃなくてLinkも入れないと駄目かも

221:デフォルトの名無しさん
09/06/25 00:20:03
どぼんさんのHPにあるじゃないか
URLリンク(dobon.net)

222:デフォルトの名無しさん
09/06/25 00:20:17
ありがとうございます。
DragDropEffects.Copy→DragDropEffects.Link
の変更で受け取れました。助かりました。


223:デフォルトの名無しさん
09/06/25 02:06:49
OSを起動後に起動時の処理(スタートアップのプログラムの起動など)の一番最後に
(PCがアイドル状態になったら)自分のアプリを起動したいのですが、
OSが起動後にそのような状態になったというのはどのように調べたら良いでしょうか?
ちなみにWindowsXP-PROです。

224:デフォルトの名無しさん
09/06/25 14:03:50
hint
wmic path Win32_Processor get LoadPercentage

225:デフォルトの名無しさん
09/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)良い案があれば教えて下さい。

226:デフォルトの名無しさん
09/06/25 14:16:31
DBのテーブルは与えられてるもの?自分でいじれるもの?

227:225
09/06/25 14:17:56
連投すみません。
フィールド名を変数で定義出来れば多分出来るかなと思います。

1月の場合、変数に"1月"と代入しその変数=trueのレコードを取得とするような
クエリにぶちこめば動くようにしたいです。


228:225
09/06/25 14:20:31
>>226
DBは自分でいじることが出来ます。
本当にド素人なんでどういったやり方がスマートなのかわかってないので
、こういうプログラムを作るときは普通こういった方法をする
と言ったアドバイスを頂けたらと思います。
よろしくお願いいたします。

229:デフォルトの名無しさん
09/06/25 14:23:31
Accessを使ってるとフォームを作りやすいようなイメージでテーブルを
作ってしまうのだろうけどそこが誤りだろうな。
日付によって読みに行く場所が違うというのが異常だからそこを直すべき。

230:225
09/06/25 14:58:45
>>229
つまり1月~12月、1日~31日のフィールドっていうのが異常って事ですよね?
むずかしいです・・・

231:デフォルトの名無しさん
09/06/25 16:24:00
まず、フィールドってのがRDB上の属性(カラム)なのかGUI上のコントロールなのかよくわからない
可能ならとりあえず現状のスキーマとSQLクエリでも晒してくれ

232:デフォルトの名無しさん
09/06/25 16:30:58
RDBの流儀でいえばこんな感じのスキーマになると予想

スケジュール表 [ 日付, 業務種別ID, 実業務ID ]
業務マスタ [ 業務種別ID, 業務名, 実業務テーブル名 ]
(実業務表) [ 実業務ID, 必要な情報・・・ ] ←業務ごとに作成


233:デフォルトの名無しさん
09/06/25 17:39:47
>>225
プログラムで動的にSQLを生成して実行する
フィールド名も動的に変更できる

>>229
今回の要件なら、俺でも1-12月のフラグと1-31日のフラグもつかもしれない
まあ、ホントは後で書くスキーマのようにするのが正解だろうけど

>>232
登録するのは、業務の繰り返し頻度であって、業務のスケジュールそのものじゃないぞ
そのスキーマだと、日ごとスケジュールの生成って作業が必要だな
そして繰り返し頻度を変更した場合、今あるスケジュールを全部けして再生成
さらに何年先までのスケジュールを生成していいのか不明

俺の予想スキーマ

業務マスタ(業務ID,業務名,その他必要な内容)
業務頻度月(業務ID,業務実行月)
業務頻度日(業務ID,業務実行日)

指定月日の業務を知りたければ、この三つを業務IDでjoinして
業務頻度月.業務実行月=指定月日の月 and 業務頻度日.業務実行日=指定月日の日 を検索

まああれだ。DB設計の話は板違いだな

234:デフォルトの名無しさん
09/06/25 22:34:03
DBも気になるけどチェックボックスが大量に並んでいる画面を想像してぞっとした
あ、チェックボックスのリストコントロールとかもあるか・・・

235:デフォルトの名無しさん
09/06/26 04:16:35
大量って言っても、12個+31個だからなぁ

カレンダー系のマスタメンテとかで、31個のチェックボックスを
並べるのなんて結構やってるし

まあしかし、>225からここまで1回もvb.netって言葉が出てないじゃないかw


236:デフォルトの名無しさん
09/06/26 13:36:39

おい、出すなよ。

237:デフォルトの名無しさん
09/06/26 16:00:18
DB的な使い方をしない前提なら、
スポットで1日分だけ読み込もうとせずに、
1年分くらい全部読み込んでおけってことになるね。

238:デフォルトの名無しさん
09/06/26 18:18:29
VB.NETでスレッドを扱いたいんです。
同時に20個ほどスレッドを起動させ終了を待ちたいのですが、
どうすればいいのでしょうか?
.joinでは無理ですよね?
よろしくお願いします。

239:デフォルトの名無しさん
09/06/26 18:21:09
別にJoinでも問題ないと思うが

240:デフォルトの名無しさん
09/06/26 18:49:10
そんなにスレッド起動させてどうすんの?
SNS巡回ツールでも作んの?


241:デフォルトの名無しさん
09/06/26 23:46:59
大量のラベルコントロールを書き換えがしたくて
label1 label2 label3...のような感じで連番にして繰り返し処理で
一気に書き換えようと思うのですが思うようにできません
target = Cobj("label" & i) のような感じにしたのですが
エラーが出てとまってしまいます
どうしたらよいのでしょうか?

242:デフォルトの名無しさん
09/06/27 00:02:44
>>241
label1 label2 label3...をListに入れる

243:デフォルトの名無しさん
09/06/27 00:03:16
テンプレに入れたいぐらい良く出るな、この類の。

配列に入れとけ

244:デフォルトの名無しさん
09/06/27 00:13:42
Controls()からLabelをさがせばいいんじゃない

For Each child As Control In Me.Controls
 If child.Text Like "Label*" Then
  child.Text = child.Text & "でんがな"
 End If
Next

245:デフォルトの名無しさん
09/06/27 00:34:12
正直、こんな命令があったんだとか
こんな使い方があったんだとか
他人のプログラムやサイトを見て知ることが多く
それを踏まえてみると自分の書いたコードがとても無駄だったみたいな経験があるんですが

みなさんはどうやって、こんな命令があるこんな使い方があるみたいなものを学んでるんですか?

246:デフォルトの名無しさん
09/06/27 00:36:46
MSDNのサンプルを読破しようと思ったこともありました
挫折しました
というわけで他人のプログラムやサイトw

247:238
09/06/27 01:31:43
>>238です
スレッドが終わるタイミングはまちまちです。
終わったスレッドから終わったあとの処理をしていきたいのです。
.joinだと制御が戻ってこないので困っています。

248:デフォルトの名無しさん
09/06/27 01:33:33
コンストラクタ内のstatic変数ってそのクラスのオブジェクトすべてで共通じゃないの?
オブジェクトに通し番号をつけようと思って以下のように書いたんだが、毎回0になるのだが・・・

Public Class Form1
 Private Class Foo
  Public Sub New()
   Static Sequence As Integer = 0
   Sequence += 1
   (毎回0に初期化されてこの時点で1になる

249:デフォルトの名無しさん
09/06/27 02:16:37
>>248
Static (Visual Basic)
URLリンク(msdn.microsoft.com)(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

250:デフォルトの名無しさん
09/06/27 02:28:03
>>249
thnx
staticなのにインスタンス別とは・・・

251:デフォルトの名無しさん
09/06/27 03:39:00
>>247
やっぱ、スレッドが終わるとき自分で終了通知する、とかじゃないかね

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

252:225
09/06/27 08:11:33
皆さん、教えていただきありがとうございました。
DBの設計を見直した方が良かったのですが、時間的な関係で今回はこのまま行く
事になりました。
結局プログラムでレコード1件ずつ読み込んで、指定日付の月、日に
対応するフィールドそれぞれのデータがtrueなら取得。
取得したデータを別テーブルに追加していってスケジュール表を作りました。

申し訳ないのですが、別のことでもう少し教えて頂きたい事があります。
スケジュール表を更新した日付等、ちょっとした情報を保存しておきたいのですが、
その為だけにわざわざ新しいテーブルを作るっていうのはおかしいですか?
保存しておきたい情報としては、更新日付、いつから~いつまでのデータを
スケジュール表に取得しているかという情報くらいです。
スケジュール表は3種類あるので保存するレコード数は3件以上には絶対にならないので
たった3件の情報の為だけのテーブル作るっていうのは、変なのかなと思いまして
皆さんのご意見をいただけたらと思います。
お願いします。

253:デフォルトの名無しさん
09/06/27 11:14:59
DBを使うのはやめてOSファイルに書き出すのはどうだろう。
DataSetに全部突っ込んでテキスト(XML)で保存するのもいいアイデアだと思う。

254:デフォルトの名無しさん
09/06/27 12:59:33
いい加減、VB.NET関係ない話は該当するスレ(板)で聞け


255:225
09/06/27 15:13:48
>>254
VB.NETで作ってるので、関係ないとは一概に言えないと思います。

256:デフォルトの名無しさん
09/06/27 15:30:58
関係ないだろ。

257:デフォルトの名無しさん
09/06/28 13:18:40
>>252
書いてあることだけみると、他の人のアドバイスを元にDBから作り直せば3時間くらいで作れそうな気がするんだけど、
それでも「時間的な関係で」って結局そのままつくり続けるならここで聞く意味ないんじゃないか?

とりあえず更新日付等の情報を保存するためにテーブルを作るのは別に問題ないと思うけど、その程度の情報なら、
更新が起きたときにそのテーブルのレコードをUPDATEするんじゃなくて、INSERTしてログ的な使い方のほうが、そのデータをほしいって言った人の要求に近いんじゃないか。

更新対象のスケジュール日付、更新した人、作業内容(追加、修正、削除等)、更新日

みたいな感じのログにしておけば当面の要求はこなせると思う。
毎月1日実行のスケジュールを追加したら12個ログができるような感じで。

業務スケジュールっていうことだし、多分そんな頻繁に変更がないから、容量もそんなにくわないと思う。

258:デフォルトの名無しさん
09/06/28 15:03:59
質問させてください。
vb.netで開発したwebサイトを実行環境から確認しようと
IISを利用してアクセスしたのですが、
以下のようなエラーが出てしまいました。


BC40056: インポート 'Oracle.DataAccess.Client' で指定された名前空間または型が、
パブリック メンバを含んでいないか、または見つかりません。
名前空間または型が定義されていて、
少なくとも 1 つのパブリック メンバを含んでいることを確認してください。
また、インポートされた要素名がエイリアスを使用していないことを確認してください。


開発環境からは正常に実行できていたのですが、
実行環境からだとこのようなエラーが出てしまい困っています。
どなたか助けてください。


使用しているソフト等
windows xp
VWD
ODBC
ODP.NET
Oracle11g

259:デフォルトの名無しさん
09/06/28 15:07:36
machine.config か web.config に参照設定を記述しろ、ってなかったか?

260:258
09/06/28 15:20:02
>>259
「参照設定を記述しろ」っていう表示はどこにもなかったです。

261:デフォルトの名無しさん
09/06/28 16:03:09
URLリンク(otndnld.oracle.co.jp)

とかは違う? IIS への発行はどうやったの? 実行環境に、Oracle のクライアントはインストールしてある?

262:258
09/06/28 16:17:05
>>261
IISへの発行は、コントロールパネルの「プログラムの追加と削除」→「コンポーネントの追加」からIISを追加して、
ネット検索を経て、設定を済ませました。
URLリンク(<)ローカルホスト> でIISが表示されるようになっています。

OracleDBサーバーと、実行環境が同じPC上で行われています。
Oracle11gがインストールされているPCなので、
Oracleクライアントは必要ないかと判断しました。

また、リンク先のページを拝見しましたが、いまいち理解ができません;


263:デフォルトの名無しさん
09/06/28 16:21:00
んで、開発環境と実行環境は別 PC なのね?
どちらも 32ビット?

Oracle DB が入ってても、クライアントがインストールされてなきゃダメ。
まずはそこを確認してみて。

264:258
09/06/28 16:27:54
>>263
ありがとうございます。
開発環境と実行環境は別PCです。
どちらも32ビットです。

今からOracleクラインアントを
OracleDBサーバーにしているPCにインストールしてみまつ。

265:258
09/06/28 16:49:52
>>263
確認したのですが、OracleDBサーバーにしているPCに
クライアント10gがすでにインストールされていました。



266:デフォルトの名無しさん
09/06/28 17:52:33
皆さんは帳票の出力はCrystalReportを使用してますか?
現在帳票はACCESSで使用しています。
今回、フォームをVB.NETで作成しなおし、DBはACCESSを使用することにしました。
帳票がかなり複雑でビジュアル的にも良くできているのですが、それを
VB.NETで作り直すのがかなり困難だということをひしひしと感じております。
皆さんだったらどうしますか?

267:デフォルトの名無しさん
09/06/28 18:00:13
クリリポ、Active Reports、iText あたり。

268:258
09/06/28 18:09:14
Oracleクライアントはインストールされているのですが、
未だに上手くいきません。

269:266
09/06/28 18:10:13
ActiveReoprts良さそうなんですが会社で買うことが出来ないので
無料ツールはありませんか?

270:デフォルトの名無しさん
09/06/28 18:14:35
どうもこうもPrintDocumentでガシガシ書くだけだわな

271:デフォルトの名無しさん
09/06/28 18:15:41
つーかこのage厨は…

272:デフォルトの名無しさん
09/06/28 18:21:47
>>268
アプリの web.config はどうなってんの?

273:258
09/06/28 18:28:44
>>268
すみません。
「どうなってんの?」というのは具体的にどの部分のことを指しているのでしょうか?

274:デフォルトの名無しさん
09/06/28 18:32:13
つーか、参照設定がおかしいんじゃね? って言われてるんだから、
そこを調べろよ。

275:デフォルトの名無しさん
09/06/28 18:38:01
まぁ、どうやって調べたらいいんですか? とかだろうなw

276:258
09/06/28 18:44:03
>>274
参照設定は既に設定済みです。
「.NET」タブから一覧を表示させ、
「Oracle.DataAccess」が追加されています。

277:デフォルトの名無しさん
09/06/28 18:46:11
それは開発環境の話だろ・・・

278:258
09/06/28 18:56:37
>>277
すみません。
勘違いしておりました。
どの箇所の参照設定なのか教えて頂けますでしょうか?

279:デフォルトの名無しさん
09/06/28 19:14:42
ここで質問したからには、
他コミュで質問できないからな?
某掲示板や某フォーラムなどですると
「マルチ禁止!」のレスがつくからな
気をつけろよ・・・



280:266
09/06/28 19:59:32
PrintDocumentとCrystalReportはどちらの方がおすすめですか?
今回私の作りたいのは、1週間のスケジュール表になります。
日ごとに四角の枠を配置し、その中にその日の予定をテーブルから
書き出すことになります。
CrystalReportでとりあえず作ってみたものの、印刷プレビューで表示
すると実際の配置とかなりずれて表示されるので、本当に実現できるのか
不安になってきました。
予定表のテーブルから日をキーにしてレコードを取得後、日(曜日)ごとにDataSetを
作成してデータを突っ込んでます。
1週間分なので曜日のDatasetが7個できる形になります。
それをCrystalReportに渡して、曜日ごとの枠に収まるようにレコードを入れていきたい
のですが、全然綺麗に配置出来ないし、途方も無い作業でへこんでます。
だからといって皆さんに愚痴ってもしょうがないんですが、あまりにもレポート機能が
しょぼすぎて、ACCESSよりも劣ってるなんて残念でしょうがないです。
基本的にやり方としては間違ってないですか?

281:デフォルトの名無しさん
09/06/28 20:11:56
ある程度フォーマットが決まってるならクリリポ。
変なフォーマットなら、自由度の高い PrintDocument だな。

282:266
09/06/28 20:14:30
>>281
PrintDocument使うって事は、コードのみで書いていくんですよね・・・
例えば、エクセルで作るような表(網掛けなど)も可能ですか?

283:デフォルトの名無しさん
09/06/28 20:17:10
Box の塗りつぶしでできるレベルだな。

つーか、Access がいい、っていうなら、Access でやれよ。

284:デフォルトの名無しさん
09/06/28 20:29:01
>>278
Web.configにいろんなDLLの参照設定が書かれてないか?
それとサーバにODP.NETはインストールしてるのか?


285:266
09/06/28 20:36:31
>>283
会社でVB.NETで作るっていることに決まったんで、
ACCESSで作る事ができません・・・

286:デフォルトの名無しさん
09/06/28 20:43:33
だったら文句言わずにやれよ。
文句言うくらいなら、会社のやつらを説得すればいい。

287:266
09/06/28 21:01:55
>>286
はぁ?CrystalReportで作ってるってさっきから言ってるだろう。

288:デフォルトの名無しさん
09/06/28 21:08:20
じゃ、Crystal Reports スレでも行けよ。スレ違いだから。

289:266
09/06/28 23:04:43
こりゃしっけいいたしました

290:266
09/06/28 23:13:36
ってCrystalReportすれないじゃないか。騙された。

291:デフォルトの名無しさん
09/06/29 12:18:06
先生方~馬鹿な私にアドバイスをください orz

VC++2008のWin32プロジェクトで開発した共有メモリのDLLを
VB.net2008から呼び出すプログラムを製作しています。

DLL内部で保持している構造体を参照渡しして共有する仕組みです。
ですが、下記記述だと構造体内部の配列(stSub1~3)が
Nothingの状態になったままです。VB初心者の私にアドバイスをお願いします
ちなみにOSはWinXPです。よろしくお願いします。

※記述は改行数の関係上、次の書き込みに書きます

292:291
09/06/29 12:19:57
続き(2/3)
見づらいと思いますがご了承ください 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)


293:291
09/06/29 12:22:28
------------------------
VB記述 抜粋
------------------------
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

294:291
09/06/29 13:05:52
293のPublic Structureは
ST_AREAじゃなくST_SUBだった o..rz


295:デフォルトの名無しさん
09/06/29 13:37:07
MSDNのアンマネージ コードとの相互運用の中にあるサンプルみれ

296:デフォルトの名無しさん
09/06/29 21:11:52
そもそも違うプログラム同士で、変数の値などを共有(メモリの共有)をするにはどうしたらいいんでしょうか?
どこかに解説サイトないでしょうか

297:デフォルトの名無しさん
09/06/29 22:55:08
つーか、宣言が全然おかしいじゃん。

メモリマップドファイルとか、プロセス間通信系かな。>共有

298:291
09/06/30 09:34:04
>>295
ありがとです。
PVOID*なのでクラスにしてちと試してみます

>>296
C++ならCreateFileMappingとかあるみたいですよ。
ほかの言語はわかりません。


299:291
09/06/30 10:34:29
連続申し訳ないです。。。

C言語なら

ST_AREA *pStArea
MemOpen(&pStArea);
pStArea->stSub1[3].s2 = 10;

とかやれば直接書き込みできるのに
VBってこういうことできないんですか?

IntPtrのようなもので受け取らないとだめですかね?

300:デフォルトの名無しさん
09/06/30 10:52:14
つ「構造体のサンプル」

301:291
09/06/30 13:51:15
>>300
先生ありがと!

サンプルを元にやってみたけど
他アプリから値を変えても値が変わらない。。。
値渡しになってる?
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

302:291
09/06/30 13:54:35
End StructureじゃなくてEnd Classだ o...rz

Openしたときは最後に書き込んだ値が取れます。
VB側から書き込んでも相手の値は変わらず。。。

303:291
09/06/30 16:17:43
お、落ち着くんだ私。

Declare Function MemOpen Lib "xx.dll" (ByRef Address As ST_AREA) As Integer
だな。

Cで書かれてるDLLの引数の型がPVOID*だから構造体でなくクラスで合ってると思うけど
オープンした時のみ値が取得できる状況です。。。

助けてティーチャー orz

304:デフォルトの名無しさん
09/06/30 16:31:44
ByValArrayは構造体専用
構造体にしてByRef IntPtrで受けるか、配列の要素を全部フィールドに展開するか

305:デフォルトの名無しさん
09/07/01 02:11:46
DataSetてどういう場合に使用するものなのでしょうか?
mdbファイルにadoを使いデータを抽出(SQL文を使用)
この抽出結果を一時的に保管しておく器とかに使うものなのでしょうか?

306:デフォルトの名無しさん
09/07/01 07:34:02
>>303
> Cで書かれてるDLLの引数の型がPVOID*だから構造体でなくクラスで合ってると思うけど

意味がわからん。P/Invoke のサンプルからやり直せ


307:デフォルトの名無しさん
09/07/01 07:34:13
>>305
そんな感じ。

308:デフォルトの名無しさん
09/07/01 10:02:21
>>306
ポインタへのポインタが必要だから参照型(構造体ではなくクラス)の参照渡しにすればいいんだよ
理屈は間違ってない

309:デフォルトの名無しさん
09/07/01 10:39:35
>>305
SQLでの問合せの結果(複数行)をとっとくのがDataTable、
DataSet は DataTable のコレクション+αの機能。

310:デフォルトの名無しさん
09/07/01 10:41:48
>>308
すごく…おかしいです。

311:デフォルトの名無しさん
09/07/01 10:57:19
おかしいも何も、MSDNに書いてある

312:291
09/07/01 11:26:45
>>308さんのおっしゃるとおり
URLリンク(msdn.microsoft.com)(VS.80).aspx
上記サイトの
アンマネージ シグネチャ  マネージ宣言 1 レベルの間接参照 class MyStruct(…);
DoWork(MyStruct** x);   DoWork(ByRef x As MyStruct)
部分をみて構造体ではなくクラスにしないといけないのかなと判断してます
解釈が間違ってますかね?

>>304さん
>構造体にしてByRef IntPtrで受けるか
この意味が私の考えで合っているのかわかりませんが、
IntPtr型でポインターのアドレスを受け取り
構造体にキャストして割り当てるということなのでしょうか?

それとは別に、クラスにしてByValArray以外の方法(参照渡しができる方法)で
配列を作って引数に渡すことができればなぁと考えています。

考え方がC言語に偏っているので変なことを言ってるかもしれませんが
先生方、どうか温かい目でアドバイスをお願いします m(_ _)m

313:デフォルトの名無しさん
09/07/01 11:40:47
クラスなら配列の要素と同じ数だけフィールド並べるしかないんじゃないの

314:デフォルトの名無しさん
09/07/01 11:56:18
構造体として定義して、その配列を参照渡し(ByRef)してみるのはどうだろう
でも配列渡すならアドレス固定しないといけないから、IntPtrで受けてMarshal.PtrToStructureの方がまだ簡単確実

315:314
09/07/01 12:03:44
アドレス固定したら結局IntPtrで渡すことになるな
一行目撤回

316:デフォルトの名無しさん
09/07/01 13:12:57
>>299
>VBってこういうことできないんですか?
P/Invoke で外部関数呼び出し時には引数の変換がされるが、それ以外のタイミングで
Managed なコードから Unmanaged な領域を弄る簡単な方法はない。
おとなしく Marshal の共有メソッド (Read~/Write~等) に IntPtr を渡す方法を試せ。

317:デフォルトの名無しさん
09/07/01 13:14:58
やっと理解できた
VBのメンバを通してC側に直接書き込もうとしてたのか
マーシャリングでは無理だ
VBでは構造体も使えない
IntPtrで受けてMarshal.WriteByteでも使って直接書き込むしかない

318:291
09/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
ありがとうございました~

319:291
09/07/01 16:00:09
XXX = stArea.s1
はできたけど
stArea.s1 = 10
はできてなかったorz
まぁでも何とかなりそうです^o^

320:デフォルトの名無しさん
09/07/03 20:13:21
XmlDocumentのSaveメソッドで「'」を「'」として書き出す方法ってないのかな?


321:デフォルトの名無しさん
09/07/03 20:51:09
ウィンドウと内部処理(DLL)を別のプロジェクトで作成しました。
質問は、DLLからFormに張ってあるコントロールのプロパティを変更する方法です。
Labelの文字を変える程度でいいのですが。

よろしくお願いします


322:デフォルトの名無しさん
09/07/03 21:19:41
>>321
フォームから DLL にコントロールの参照を渡してやれば OK

323:デフォルトの名無しさん
09/07/03 22:15:41
VS2005です

ユーザーコントロールに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になってます

ほわい?

324:デフォルトの名無しさん
09/07/03 22:28:19
なってます、ってどうやって確認したの?

325:デフォルトの名無しさん
09/07/03 22:34:02
>>324
ありがとうございます。
DataGridviewの設定はすべてデザイナでやってますので

326:デフォルトの名無しさん
09/07/03 22:37:02
改行したら送信してしまいました
つづきです

デザイナでやってて、Columnもデザイナであらかじめ追加してます
デザイナ上でのプロパティではAutomaticになっております

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

みたいにしてみるとか、エラーが出たときにウォッチしてみるとか、
その辺で確認してみたら?

328:デフォルトの名無しさん
09/07/03 23:07:50
了解っす

329:デフォルトの名無しさん
09/07/04 00:02:23
うまく行きました!
データがない状態の時NotSortableになってんのかな?
ありがとうございました

330:デフォルトの名無しさん
09/07/04 00:19:06
>>320
そんなに大きくないならStringWriterで文字列に書き出して置換すれば

331:デフォルトの名無しさん
09/07/05 14:28:39
DataGridViewにdataset内部でリレーションシップを設定したTableA TableBのフィールドを表示したいんです

TableAとTableBは1対多結合になります
フィールドは同一のDataGridViewで表示したい
TaleBを連結したDataGridViewに非連結列を追加してTableAのフィールドを検索して貼り付けることはできそうですが
なんかデザイングリッド上でぱぱっとやれそうな気がしておたずねしました

何とぞよろしくお願いいたします

332:デフォルトの名無しさん
09/07/05 15:31:23
ググっても見つからないので質問させてください。
Textboxに入力されたデータから特定の行(ex:15行目から20行目)だけを取り出したいのですが、何か方法はないでしょうか?
よろしくお願いします。

333:デフォルトの名無しさん
09/07/05 15:36:17
>>332
どう検索したのか興味がある

Linesから適当に取得すればいいっしょ

334:デフォルトの名無しさん
09/07/05 15:50:04
>>333
初心者故に文字列の取得方法が分かりません。
申し訳ないです。

335:デフォルトの名無しさん
09/07/05 16:16:51
答え出てるじゃんw

336:デフォルトの名無しさん
09/07/05 16:18:49
DataGridViewをほぼ同じような表な形で印刷したいのですが、自分でライン書いて表の中のデータを書くというっ事をしなければならないんでしょうか?
DataGridviewをそっくりそのままの形のレイアウトで印刷してくれるようなもっと簡単なのがあってもよさそうなのですが・・・

337:デフォルトの名無しさん
09/07/05 16:22:09
>>335
すいません、Linesはどのように扱えばいいのでしょうか

338:デフォルトの名無しさん
09/07/05 16:24:10
表形式で出力できるレポートツールを使う、ってのが一般的かね。

おれはグリッドそのまま出せてもなんもうれしくないから、必要性を感じないな。

339:デフォルトの名無しさん
09/07/05 16:28:42
>>337
URLリンク(msdn.microsoft.com)

↑を見て、何がわからないのかきちんと説明しろ。

340:デフォルトの名無しさん
09/07/05 16:54:21
>>339
ごめんなさい
これを別の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

341:デフォルトの名無しさん
09/07/05 16:54:58
Form右上の×ボタン押したときに終了するか確認メッセージ出して、
終了の場合は閉じるようにしたいんですが、closingイベント以外で実装
はできませんか?
今やりたい事は、フォームA→フォームBを呼び出してそこから終了
した場合、上記の確認メッセージを表示して両方のフォームが落ちるようにしたいです。
フォームBを×ボタンで閉じる動作を行うとフォームAをcloseという処理を走らせたい
のですが、フォームAにも上記のclosingイベントを実装する為
フォームB終了確認メッセージ後に、フォームAの終了確認メッセージが表示されてしまいます。
closingイベント内でフラグ立てて回避出来るかなと思ったら、無限ループに陥ってしまい無理でした。
どのような解決方法があるか教えていただけると幸いです。
よろしくお願いいたします。

342:デフォルトの名無しさん
09/07/05 17:19:49
FormB : FormClosingでキャンセルかどうか決める
FormA : FormBのFormClosedで自分をCloseする
    FormClosingでFormBが閉じられたときに呼び出された場合確認ダイアログを出さない

343:デフォルトの名無しさん
09/07/05 17:20:14
>>341
> Form右上の×ボタン押したときに終了するか確認メッセージ出して、
> 終了の場合は閉じるようにしたいんですが、closingイベント以外で実装
> はできませんか?

できない。

> 今やりたい事は、フォームA→フォームBを呼び出してそこから終了
> した場合、上記の確認メッセージを表示して両方のフォームが落ちるようにしたいです。
> フォームBを×ボタンで閉じる動作を行うとフォームAをcloseという処理を走らせたい

Closing イベントで閉じられる理由を確認すればいいんじゃね?


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