VB.NET質問スレ (Part22 ..
[2ch|▼Menu]
697:デフォルトの名無しさん
07/08/18 15:07:21
VS2005のIDEですが、ソースコード・エディタ上でマウスであちこちクリックしたり、
検索で移動したり、「シンボルの検索結果」での選択で移動したり、とこれらの操作で
キャレットの位置が変わっていったとき、その位置を復元して逆たどるためのツールボタン
があったと思うのですが、

PCが壊れて、別のPCに変えて同じボタンと思われるものを使ってみたのですが、
同じその機能が働いてくれません。

この機能のボタンはありますよね。なんという名前のボタンかがわかりません。

(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)


698:デフォルトの名無しさん
07/08/18 15:13:24
そういうのって人に聞くより自分で実際やってみる方が早くないか?

それともIDEのメニューやツールバーのカスタマイズ方法を知らないの?

699:デフォルトの名無しさん
07/08/18 15:56:40
>>697

ですから、それをやってみたと書いていますが・・・。それでもできなかったもので。
           ↓
(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)


700:デフォルトの名無しさん
07/08/18 17:14:24
進む、戻る、かなんかのボタンだよね
俺も見つかられんのだわw


701:デフォルトの名無しさん
07/08/18 17:14:55
たしかすごい意外なとこにあった記憶はあるんだが…


702:デフォルトの名無しさん
07/08/18 17:46:36
分類:表示 の 一番下のほうにある 戻る か?

703:697
07/08/18 20:36:38
>>702

あー、それでした!!どうもありがとうございました!



704:デフォルトの名無しさん
07/08/20 01:05:24
質問なんですが、フォントスタイルに太字と斜体の両方を
設定した場合に、太字(もしくは斜体)のみを標準状態に
戻す場合のコードってどう書けばいいのでしょうか?

705:704
07/08/20 01:12:05
自己解決しました、お騒がせしました。

706:デフォルトの名無しさん
07/08/20 09:31:20
どれだけ下らなく稚拙な質問でも、同じ疑問を持ってるやつがいるかもしれないから、
自己解決した場合でも、解決法は書くべき。

現在のスタイル-太字
TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Xor FontStyle.Bold)

ちなみに
現在のスタイル+太字
TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Bold)

707:デフォルトの名無しさん
07/08/20 12:31:46
地獄への道は善意で舗装されている、という言葉の意味を706は噛み締めるべきだね。

そういう「善意」は、結局のところ、基礎の理解や自分の頭で考えることをスキップする
「コピペ馬鹿」を生み出すだけだと思うが。

708:デフォルトの名無しさん
07/08/20 13:14:31
>>707
善意から莫迦が産まれるとでも思ってんのか?
莫迦は元々莫迦なんだよ。

709:デフォルトの名無しさん
07/08/20 14:47:18
まあ少なくとも馬鹿を矯正するスレじゃないからね

710:デフォルトの名無しさん
07/08/20 16:43:07
質問答えたらだめじゃんw

711:デフォルトの名無しさん
07/08/20 17:36:01
コントロールを名前で選択するにはどうすればいいのでしょうか。

例えばForm1上にButton1があったとすると、
Dim btn As Button = hoge("Button1")
みたいなことがしたいのです。
ググると、Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
探すというのは見つけたのですが、名称からダイレクトに選択したいです。

712:デフォルトの名無しさん
07/08/20 18:27:44
またコントロールを名前で選択したいです厨か


713:デフォルトの名無しさん
07/08/20 20:42:55
>>711
>Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
>探す
という関数を作成すれば
>名称からダイレクトに選択
できますよ。

714:デフォルトの名無しさん
07/08/20 21:01:40
>>711
Form.Controls(string)
やめとけやめとけやめとけやめとけ

715:デフォルトの名無しさん
07/08/20 21:04:12
712じゃないけど(いや712は別に何も言ってないがw)
>>711みたいな「要求」は、ほとんどの場合勘違いの産物だと思うぞ。
ありていに言えば頓珍漢なんだよたぶん。

716:デフォルトの名無しさん
07/08/20 21:49:53
>>711は結局それで何がやりたいのだろう

717:デフォルトの名無しさん
07/08/20 21:53:11
ちゃんと理解してて目的があって使うならいいんだけど
>>711はそれ以外に方法がないと思い込んでるだけだろうな

718:デフォルトの名無しさん
07/08/20 23:06:46
ListView上をMouseでClickしたとき、何かのListViewItemをHitすると
MouseUpイベントが連続して2回立つ、ということはありうるでしょうか?

そういう現象が出て悩んでいました。

下に何もないところをClickしたときはMouseUpは正常に一回しか立たない
のですが、下にItemがあるところをMouseでClickすると、2回連続してMouseUpが
立つのでした。

そのためか、そのListViewItemは、選択された印のBackColorが付かず、
Selected状態になっているのかどうかわからないのでした。

MouseDownイベントを挟まずにMouseUpが2回連続するというのは変だと
思うのですが、どこを通ってきてそうなっているのかわからないのでした。
こういう現象になった方いらっしゃったら何かご指導ください。よろしくお願いします。



719:デフォルトの名無しさん
07/08/21 01:21:52
>>718
ありうるかどうかはdebug.printしてみればわかる。

720:デフォルトの名無しさん
07/08/21 07:53:11
DirextXを使用しているものから色を取得して判定したいのですが
Win32APIのGetPixel等では不可能のようでしたが、何か良い方法は
ないでしょうか。

721:711
07/08/21 09:20:41
>>714さんの方法でできました。ありがとうございました。

やりたいことは、

722:デフォルトの名無しさん
07/08/21 09:59:05
>>719
そうなのです、それをやってみた結果、それがわかったのでした。

MouseUpというのはMouseDownが起きて初めて起こるはずなので、Upだけ
2回連続するというのは、理屈でいけばおかしいと思われました。

しかし、確かにDownを挟まずに、2回通っているのでした。

これは、どこかでDownに準じる何かが起きているが、それがおもてに
現れずにいるというようなことなのか、それとも、どこかまだ不明なところを
経由して再びMouseUpが実現してしまうという構造なのか・・・??

それで、そういったことは起こりうるのか、それが疑問になったのでした。

で、現実にItemが選択状態のBackColorにならない、ということは、その
2回連続しているMouseUpがおきてしまうことと関係があるのだろう、
と推測されたわけでしたが、どなたかアドバイスがありましたらお願いしますです。

723:デフォルトの名無しさん
07/08/21 10:14:55
>>720
DirextXを使用している「もの」って具体的に何
>>722
再現しなかったのでした。
そのListViewItemについて詳しく教えてほしいと思ったのでした。

724:デフォルトの名無しさん
07/08/21 10:19:28
>>723
スルーされるの覚悟ですが、フルスクリーンで動作するゲームです。
DirectXについて詳しくないのですが、普通にSpy++でハンドル調べて
Findwindow等で取得したハンドルを使ってGetPixelしたのですが
駄目でした。

725:デフォルトの名無しさん
07/08/21 10:29:50
普通にGraphics.CopyFromScreenでできない?

726:デフォルトの名無しさん
07/08/21 10:35:20
有り難う御座います。帰ってから試してみます。

727:デフォルトの名無しさん
07/08/21 11:31:28
行列クラスを作ろうとしています。今、
Dim ary(,) As Integer = {{1, 0}, {0, 1}}
Dim matrix As New Matrix(ary)
のようにやっていますが、
Dim matrix As New Matrix({{1, 0}, {0, 1}})
とやることはできないでしょうか。

また、a22 = matrix(2, 2) で a22に1が入るなどとやりたいのですが、
そういうことは可能でしょうか。

Array は Inherits できないようなので、無理なんですかね?


728:デフォルトの名無しさん
07/08/21 11:34:12
>>724
FPSゲームのチートソフトでも作る気かw

729:デフォルトの名無しさん
07/08/21 11:38:29
>>727
>Dim matrix As New Matrix({{1, 0}, {0, 1}})
コンストラクタの引数に配列をとる
>a22 = matrix(2, 2)
既定のプロパティ

730:729
07/08/21 12:00:46
すまん上の方はもうやってたな
Dim matrix As Matrix = New Matrix(New Integer(,) {{1, 0}, {0, 1}})
にするだけ

731:724
07/08/21 13:23:15
>>728
チートだなんてとんでも無い。ちょっとしたマクロ程度です。
>>725も試してみたんですが、上手く使えずWin32APIで
GetWindowDC(0)としてデスクトップ全体のDCからGetPixelしたん
ですが、DirectX(フルスクリーン)だと上手く行かないみたいですね。
今会社なので試せてませんが…。

ググってみると、どうも出来ないという話ばかりありました。

もう何て言うか、他のソフトで窓化してから組んだ方が手っ取り早い
気がしてきました。UWSCのPeekColorなんかだと出来るんですが
どうやって実現しているんだろう…。


732:デフォルトの名無しさん
07/08/21 14:23:02
DirectXとフルスクリーンには、何にも因果関係はないと思うが。

DirectXで描画しているDCを取得しないと駄目なんでないの?

733:デフォルトの名無しさん
07/08/21 14:39:07
WebBrowserコントロール内のドキュメントの反転範囲の取得は可能ですか?

734:733
07/08/21 14:40:27
連レスすいません、「クリップボードの利用は無し」が条件です。

735:デフォルトの名無しさん
07/08/21 14:43:37
>>733
可能です

736:733
07/08/21 14:45:27
>>735
ありがとうございます

737:デフォルトの名無しさん
07/08/21 14:54:33
VB2003で開発しています。

ここで質問していいかわからないので、もし他スレが適切なら
誘導をお願いします。


OSがWin2003Serverでドメインコントローラになっているサーバに
Everyoneでフルコントロールできる共有フォルダがあります。
この共有フォルダに、LANで繋がっているOSがXpHomeEditionのPC
からファイルをアップロードしたりダウンロードしたりするアプリを
作りたいのです。

使用するPCはちょっと特殊なPCでHomeEditionしかプリインストールされていません。
ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
しません。

クライアントがProfessionalEditionなら問題はないのですが、HomeEdition
なのでサーバの共有フォルダにアクセスしようとすると、ユーザ名と
パスワードを要求されてしまいます。

最初にエクスプローラから共有フォルダを開こうとしてユーザ名とパスワードを
通しておけば次からは要求されないので問題がないのですが、この開発中の
アプリからいきなり共有フォルダにアクセスしようとすると、ユーザ名と
パスワードが通っていないためにエラーになります。

プログラムからユーザ名とパスワードを認証させる方法はありますでしょうか?

738:724
07/08/21 14:55:53
>>732
そうなんですか。すいません。あまり詳しくなくて。。
URLリンク(oshiete1.goo.ne.jp)
この辺みて勘違いしてたかもしれません。

取りあえず、↓みたいな感じの関数で帰ってから試してみます。
有り難う御座いました。

Private Function PeekColor(ByVal x As Integer, ByVal y As Integer) As Integer

Dim ret As Integer

ret = GetWindowDC(0) 'スクリーン全体のデバイスコンテキストを取得
PeekColor = GetPixel(ret, x, y)
ret = ReleaseDC(0, ret) 'スクリーン全体のデバイスコンテキストを解放

End Function

739:デフォルトの名無しさん
07/08/21 15:00:47
>>737
WNetUseConnection


740:デフォルトの名無しさん
07/08/21 15:03:46
>>738
どんなフルスクリーンか知らんが解像度が変更されている場合もあるので気をつけれ
多分デスクトップのDCのピクセル情報はフルスクリーンキャプチャに移るのと一緒だと思うから一回撮ってペイントに貼り付けてみて確認してみるのもいいかも

741:デフォルトの名無しさん
07/08/21 15:16:15
>>737

>ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
>しません。

これだけの為にProにアップグレードするべきだとは思わんが、一応教えておく。
ドライバはHomeだろうがProだろうが一緒。互換性を心配するのは間違い。

742:デフォルトの名無しさん
07/08/21 17:20:47
VB2005です。
TextBoxで未入力のときに数値の0とみなしたいのですが、次のようなやり方以外に
簡単な方法はありますか?
if textbox1.text.length = 0 then
val = 0
elseif isnumeric(textbox1.text) then
val = cint(textbox1.text)
else
'error
end if

743:737
07/08/21 17:47:49
>>738
さっそくWNetUseConnectionをぐぐってみました。
で参考になるサンプルを見つけたので
URLリンク(64.233.167.104)
真似てやってみたのですが
その関数の戻り値が 487 となり、失敗します。

で、その戻り値を調べたら
ERROR_INVALID_ADDRESS 487 0x000001E7 無効なアドレスにアクセスしようとしています。
とありました。
しかし、そのアドレスは確実に間違っていないはずなんですが・・・。
そのアドレスをエクスプローラのアドレス欄に貼り付けるとちゃんと表示されます。

これ以上はスレ違いでしょうかね?
apiスレに移動したほうがいいでしょうか?


>>741
ドライバの互換性云々というのではなく、ドライバ類がOSの再セットアップ用に
提供されていないという問題なんです。
一応、ハードディスクにはリカバリイメージが格納されているのですが
隠蔽されているっぽいのです。
ドライバCDもなく、webでも公開もされておらず・・・

744:デフォルトの名無しさん
07/08/21 18:14:50
>>743
ヒント:上書きインストール

745:デフォルトの名無しさん
07/08/21 18:33:56
>>742
それで十分簡単だと思われ。

746:727
07/08/21 18:57:05
>>729
a22 = matrix(2, 2) はできました。ありがとうございます。
Dim matrix As New Matrix({{1, 0}, {0, 1}})
の方は、以下のようにしてみましたが、式が必要です
というエラーが出ます。対策を教えていただけないでしょうか。


Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim matrix As new Array2({1, 0})
End Sub
End Class
Public Class Array2
Public elements As Array
Public Sub New(ByVal ary As Array)
elements = ary
End Sub
End Class

747:デフォルトの名無しさん
07/08/21 20:15:26
>>743
Win32APIの意味や失敗の原因を調べるならWin32API質問箱スレに移動すべきだが、
Win32APIを呼び出すためのVB.NETの記述方法について知りたいなら、ここのままでも
よいのでは?

748:737
07/08/21 21:10:20
Win32API質問箱スレにいってきます。
ありがとうございました。

749:デフォルトの名無しさん
07/08/21 21:24:00
>>746
>>730

750:746
07/08/22 09:59:10
>>749
見逃してました。。。
うまく行きました。ありがとうございました。
型に配列就職誌をつけられるとは知りませんでした。

751:デフォルトの名無しさん
07/08/22 10:15:43
配列型という型なんだよ
変数名じゃなくて型名の後に括弧を付ける方がその意味では正しい

752:デフォルトの名無しさん
07/08/22 11:06:56
746はVBしかしたことないんかな

753:デフォルトの名無しさん
07/08/22 12:16:12
>配列就職誌
誤変換に生活史が見て取れる

754:デフォルトの名無しさん
07/08/22 12:44:18
Dim array As Int32() = New Int32() {1, 2, 3}
こう書いたらもうC#だなw

755:デフォルトの名無しさん
07/08/22 21:19:29
友達からVS2005をコピーしてもらったのですが、インストール方法がわかりません。
どうやらキーを入れるみたいなんですが、キーを教えてもらえませんか?

756:デフォルトの名無しさん
07/08/22 21:46:24
>>755
お前頭悪過ぎ

わざとボケたならすまない。
だが、ここでなく低脳スレに行くことをオススメする。

757:デフォルトの名無しさん
07/08/22 21:53:17
>>755
マイクロソフトに問い合わせればいいじゃん

758:デフォルトの名無しさん
07/08/23 11:13:09
VB2005を使っています。

フォームのNew()の中でInitializeComponent()が呼ばれますが、InitializeComponent()内で
設計時に設定したプロパティを設定するときに、それぞれのイベントハンドラが呼ばれたりします。

全てが初期化されるまでに呼ばれると困るイベントハンドラもあるので、今のところは
以下のようなコードでしのいでますが、VB2005に用意されている機能でこれを実現することはできますか?
Class Form1
  Dim mConstructed as Boolean

  Public Sub New()
    InitializeComponent()
    mConstructed = True
  End Sub

  Private Sub SomeEventHandler(...)
    If Not mConstructed Then
      Exit Sub
    End If
  End Sub
End Class

759:デフォルトの名無しさん
07/08/23 12:39:16
>>758
まあ別にそれでも良いんじゃない?
(ただ、未確認だけど自分で判定用のフィールド作らなくてもForm.Createdが使えると思う)

そういう場合はHandles句を使わずに自分でイベントを紐付けするのが正攻法だと思うけど。

760:758
07/08/23 13:04:41
>>759
前者の方法も知りませんでしたし、後者の方法も目から鱗でした!
ありがとうございました。

761:デフォルトの名無しさん
07/08/23 15:11:07
タブコントロールを使っているのですが
タブが多くなり2段になりました。
どうせなら自分の好きなタブで区切り2段になるようにしたいのですが
タブ何個で段分割するとかいう指定はないでしょうか?


762:デフォルトの名無しさん
07/08/23 15:13:15
タブサイズ調整するしかないんじゃね?

763:デフォルトの名無しさん
07/08/23 15:54:00
あきらめました!

764:デフォルトの名無しさん
07/08/23 20:58:38
諦めんのはええぇぇぇぇwwwwww

765:733
07/08/23 22:05:44
あれから探して見つかったので、聞かれていませんが一応。
WebBrowser.Document.ActiveElement.InnerText
WebBrowser.Document.ActiveElement.InnerHtml
を使ってWebBrowserの選択範囲・クリックした画像のソース等の取得ができました。クリックイベントと併用したら便利でした。

766:デフォルトの名無しさん
07/08/24 11:56:51
質問させてください。
継承コントロールでプロパティを追加した場合、デザイナでそのコントロールの該当プロパティを選択した時の説明文
(例えばFormのTextプロパティなら「コントロールに関連付けられたテキストです」)は、どこに書けば反映されるのでしょうか?
プロパティの<summary></summary>に書けば良いのかと思いましたが、そうではないようです。
解かる方、ご教示お願いします。

767:デフォルトの名無しさん
07/08/24 12:16:58
DescriptionAttribute(属性)だったかな

768:デフォルトの名無しさん
07/08/24 12:37:22
というか、そんなの自分で調べる能力がない人間がコントロールなんか作ると
間違いなくハマるよw

769:デフォルトの名無しさん
07/08/24 12:44:16
.netでEE用のソースは問題なく使えますか?

770:デフォルトの名無しさん
07/08/24 12:58:39
いーいーっていったいなんのことかな?

771:デフォルトの名無しさん
07/08/24 13:00:02
いーいーではなくEEです。

772:デフォルトの名無しさん
07/08/24 13:14:48
Erotic Elementary school girl

773:766
07/08/24 13:19:07
>>767
ありがとう!

>>768
思いつく限りの単語で調べてみたけど、わかんなかったのよ!

774:デフォルトの名無しさん
07/08/24 20:59:58
>>773
TextBox プロパティ

これでググったりMSDN見たりする頭もないのか
先行き不安だな

775:デフォルトの名無しさん
07/08/24 21:12:15
>>774
>思いつく限りの単語で調べてみたけど、わかんなかったのよ!

776:デフォルトの名無しさん
07/08/24 21:15:27
>>774
MSDNのメンバの説明ではDescription属性は省かれてる

777:デフォルトの名無しさん
07/08/25 17:44:23
>>774
継承しているコントロールがTextBoxでも無い限り、そんな単語で検索しないと思うぜ?

778:デフォルトの名無しさん
07/08/27 17:06:12
VC++から書き込まれた共有メモリを
OpenFileMapping()、MapViewOfFile()にて読み出しております。

VC++から
struct data{
char str1[256];
char str2[256];
char str3[1024];
}

という構造体、または構造体の配列が書き込まれた場合、
VB側ではどのようにすればそれぞれを受け取ることができるでしょうか

779:778
07/08/27 18:03:29
一つ思い浮かびました

Private Declare Function MovePointer Lib "mydll" _
(ByVal ptr As IntPtr, _
ByVal movesize As Integer _
) As IntPtr

・・・他に真っ当な方法は無いでしょうか(汗

780:デフォルトの名無しさん
07/08/27 18:05:03
Marshal.PtrToStructure

781:778
07/08/27 18:31:03
>>780
ありがとうございます。
nAddress = MapViewOfFile(hOpened, FILE_MAP_READ, 0, 0, 0)
str1 = Marshal.PtrToStringAnsi(nAddress)
と先頭を取ることはできるのですが、

Public Structure DATASTRUCT
Dim str1 As String
Dim str2 As String
Dim str3 As String
End Structure
Dim cds As DATASTRUCT
cds = CType(Marshal.PtrToStructure(nAddress, GetType(DATASTRUCT)), DATASTRUCT)
ですと、
「オブジェクト参照がオブジェクト インスタンスに設定されていません」のエラーが出てしまいます。

Marshal.PtrToStructure()をどのように使えば宜しいでしょうか

782:デフォルトの名無しさん
07/08/27 18:47:35
>>781
MSDNライブラリ読めばいいのに。
たぶんDATASTRUCTの定義が不適切。
URLリンク(msdn2.microsoft.com)(VS.80).aspx

783:778
07/08/27 19:02:11
>>778
ありがとうございます。
どこを読めばいいのかさっぱりの状態でしたorz

Public Structure DATASTRUCT
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Dim str1 As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Dim str2 As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1024)> _
Dim str3 As String
End Structure

としたところうまくいきました!
構造体のメンバのサイズを宣言できるんですね!
(散々ググったページには「できない」とあったのですが・・・)

大変助かりましたありがとうございましたm(_ _)m

784:778
07/08/27 19:04:37
間違えました>>782さんでした。

>構造体のメンバのサイズを宣言できるんですね!
Stringのサイズ(固定長文字列)でした。。。

785:778
07/08/27 19:22:55
申し訳ありません。

この構造体が配列で渡されたときの受け取り方をお教えいただければ幸いです。

786:デフォルトの名無しさん
07/08/27 19:50:19
質問です。

エクセルの20個のファイルに(1a、2b・・・から20tとする)のファイル名
をそれぞれにつけて、とある1つのディレクトリにまとめて保存し
たそれらを一つずつオープンして、それぞれのファイルのSheet1
にあるセルの情報(それぞれのファイルで1行目(1,1)〜(1,40)に
まとめてある)を、情報をまとめるためのファイル「Answer」のSheet1に
1行ずつ出力するプログラムを教えていただけないでしょうか。
(最終的にはAnswerのSheet1は20行情報が貼り付けられることになります)

(ファイル名に規則性がなくても出来るのであればなお嬉しいです)

どうかよろしくお願いしますm(_ _)m


787:デフォルトの名無しさん
07/08/27 20:09:38
>>786
Excel操作はここら辺を参考にがんばって。
URLリンク(jeanne.wankuma.com)
URLリンク(msdn.microsoft.com)

788:デフォルトの名無しさん
07/08/27 20:11:33
>>785
>>782の前後に書いてる

789:デフォルトの名無しさん
07/08/27 22:10:29
programingなんてやめちまえよ。
たとえるなら、薬師みたいなもんだよ。
調合の材料を客先に持ち込んで、客に合わせて調合するんだ。
もちろん、調合の仕方を覚えてれば、調合は早いだろうけど、リファレンス見ながらでも誰も怒らないよ。
そんな覚える技術や努力なんて馬鹿みたいだし、そんなところにしか技術の差が出ないなんて悲しいよな。
てか、薬師よりおとるかもなぁ。。薬師なら、難病を治すために適切に薬を選べるけど、programmerは、言われたように作るだけだから。。

790:デフォルトの名無しさん
07/08/27 22:22:11
薬師三尊像、まで読んだ

791:デフォルトの名無しさん
07/08/27 22:26:37
薬で難病が治るまで読んだ。最後まで読んだ。

792:デフォルトの名無しさん
07/08/27 22:38:58
薬買いにいって
えーと……とかって本見ながら調合始めたら引くよな

793:デフォルトの名無しさん
07/08/28 09:39:51
>薬師なら、難病を治すために適切に薬を選べるけど、programmerは、言われたように作るだけだから。。

言われたようにつくるだけのマもいるけど、「こんなことできないかしら?できたらいいな!」って言われて、それを成す為の最適な方法を考案するマだっているさ。
何も言われずとも「こういうものをつくったら売れるんじゃないか!?」って創作するマもいるし、病人がいないと作ったものが効果を発揮しない薬師より、マの方がいろいろ可能性はあるさ。
調合、調整、やり直しが楽なところもマの魅力。
給料は低いが!!!!(つД`)
給料の為に働いてるマも多いだろうが、自分は創る行為自身が楽しくてマをつづけている。

794:778
07/08/28 11:40:57
>>788
ありがとうございます。

プラットフォーム呼び出しによるデータのマーシャリング
URLリンク(msdn2.microsoft.com)(VS.80).aspx
配下を読んでみました。
「Marshal.Copyというものがありアドレスから整数配列を取得することが可能」
ということはわかりましたが、
アドレスから文字列を含む構造体の配列を取得する方法
についてはどうしてもわかりませんでした。

勉強不足で申し訳ございませんが、ヒントをいただけませんでしょうか。

795:デフォルトの名無しさん
07/08/28 12:44:00
>>794
とにかく一通りMSDNライブラリに目を通したほうがいいよ。

>>788がどういうつもりでああ書いているか知らないが、
恐らくArraysのサンプルが参考になるんじゃない?

あるいは、ドトネトのややこしいマーシャリングのルールに縛られるのが嫌なら、
アンマネージコードとの受け渡しは全部バイト配列でやって、Encodingとかその他使って
自分で必要に応じて手動で変換するのも一つの手かもね。

796:デフォルトの名無しさん
07/08/29 21:56:59
文字列のバイト数返す方法ないですか?

"abc123"なら6を、"テストテスト"なら12を、"あ12い"なら6
を返す感じで・・・

797:デフォルトの名無しさん
07/08/29 22:00:34
>>796
君はまず「文字列」の正体を勉強するのが先。
その後ではそういう「うかつ」なことは恥ずかしくていえなくなるだろう

798:デフォルトの名無しさん
07/08/29 22:01:11
どういうやりかたで各文字のバイト数を数えるのかが問題だ

799:デフォルトの名無しさん
07/08/29 22:05:40
>>798
ですよね・・・やっぱり無理か

800:デフォルトの名無しさん
07/08/29 22:09:49
>>797
知らないならすっこんでろ糞虫(笑)

801:デフォルトの名無しさん
07/08/29 22:11:50
string str = "シフトJISでは何byte?";

Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
int num = sjisEnc.GetByteCount(str);

Console.WriteLine(num);


802:796
07/08/29 22:16:51
>>801
即レスありがとうございます!助かりました!!
↑のレスは自分ぽいけど偽者です・・・

>>797
恥ずかしい奴、未だにC言語シコシコ組んでる人?

803:デフォルトの名無しさん
07/08/29 22:17:54
夏だなあ

804:デフォルトの名無しさん
07/08/29 22:20:06
>>802
本気で言ってるのか?
801がほのめかしているように、今時文字列のエンコーディングはANSI(S-JIS)
とは限らない。

まあ、こういう「幸せな馬鹿」に言っても通じないかな。

805:デフォルトの名無しさん
07/08/29 22:24:13
夏だなあ

806:デフォルトの名無しさん
07/08/29 22:26:20
少なくとも>>796
"abc123"なら6を、"テストテスト"なら12を、"あ12い"なら6
を見る限りにおいてはS-JISとみなしても正解だわな

807:デフォルトの名無しさん
07/08/29 22:35:42
「文字のエンコード」という概念を796が知っていれば、
当然Encodingクラスについても知っているか、知らなくても容易に発見しているはずで、
それならばそもそも796のような質問は発しないだろう。

質問の文面や受け答えから見て、どうみても旧VBプログラマにありがちな、
理解しもせずサンプルをコピペして使うタイプの「お馬鹿さん」だろう796は。

808:デフォルトの名無しさん
07/08/29 22:46:38
さしずめ>>797はそのお馬鹿さんの揚げ足を取って優越感を感じるタイプのカスかw


809:デフォルトの名無しさん
07/08/29 22:47:38
>>807
>「文字のエンコード」という概念を796が知っていれば、
>当然Encodingクラスについても知っているか、知らなくても容易に発見しているはずで、

おまえニュータイプかよおまえニュータイプかよ(ふかわ風に)

810:デフォルトの名無しさん
07/08/29 23:06:28
完全ド素人質問なんですけど、ラベルをキーボードの左を押したら左に自動で移動していって
それを左右上下できて、画面の端にいったら、反対側からでてくるようにするにはどうやったらいいんでしょうか?

サンプルソース等あればお願いします

811:デフォルトの名無しさん
07/08/29 23:39:37
完全ド素人スパゲッターなんですが
うまくソースを絡めるにはどうすればいいんでしょう?

ビニール樹脂製のサンプルなどがあれば、すごく…欲しいです

812:デフォルトの名無しさん
07/08/30 02:03:32
>>810
左を押したらなどはフォームのキーダウンイベントで取得
ラベルの移動はleftやtopをいじくる。
反対側から出てきるようにするにはleftとwidth、topとheightとか。
っていうかそれvbでやることなのか。

>>811
巷のプログラマーの間では
難しいプログラムをつくろうとすればするほどソースは絡みつく
と言われている。

813:デフォルトの名無しさん
07/08/30 02:13:56
>>812
学校の課題です
もうずっとやってるのにできない・・・



もうあきらめてアホみたいな量の追加課題をやるか

814:デフォルトの名無しさん
07/08/30 10:03:22
>>813
俺も勉強中の身なんで微妙だけど、こんなんでどうよ。

Private Sub MyBase_Down(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Select Case e.KeyCode

Case Keys.Left
If Label1.Left < -Label1.Width Then
Label1.Left = Me.Size.Width
End If
Label1.Left = Label1.Left - 1

Case Keys.Right
If Label1.Left > Me.Width Then
Label1.Left = -Label1.Width
End If
Label1.Left = Label1.Left + 1

Case Keys.Up
' 処理

Case Keys.Down
' 処理
End Select
End Sub

上と下も同じような考えでおkなはず。

815:814
07/08/30 10:11:24
追記。
これだと見えなくなってから出てくるまでに時間がかかるから、Ifの条件を弄った方がいいかも。

816:デフォルトの名無しさん
07/08/30 10:48:29
とりあえずラベルを2つ使え。
そーすりゃあとは楽勝だと思うが。

817:デフォルトの名無しさん
07/08/30 13:50:23
日本語でうまく説明できないやつは
ソースも糞な傾向が多い。

818:デフォルトの名無しさん
07/08/30 14:10:18
まずは日本語を勉強したまえ

819:デフォルトの名無しさん
07/08/30 15:09:53
まずVBの本を読め

820:デフォルトの名無しさん
07/08/30 17:42:41
>>810
それほんとにラベルを使わないといけないの?
どう考えてもGraphics使って自前で描画するべき

821:デフォルトの名無しさん
07/08/30 18:31:29
>>820
宿題を課したやつも素人なんだろw
Labelをキーで動かすことを学んで何の得になるんだろうなw

822:デフォルトの名無しさん
07/08/30 18:43:21
初学者にWinフォームの基本(例えばフォーカスを失うとキーイベントは発生しない、
クライアント座標の座標系はデカルト座標ではない、とか)を体感させるには
悪くない課題だと思うけどね俺は。

というか、たかが文字列一つ動かすために自前で描画しろ、っていう奴は
恐らく自分でそんなことやったことがないんだろうねw

「ちゃんと」やろうと思ったら意外と面倒だよ。
例えばフォームにコントロールが配置してあったらどうするの?
描画するものが他にあったら、表示のプライオリティや移動した際の再描画は
どうするの?

他の描画の処理が仮に重いものだったとしたら?
無効化する領域を指定しても完全には解決できない場合があるぞ。

823:デフォルトの名無しさん
07/08/30 20:35:55
今、マウスの移動できる範囲を制限するのをつくっているんですが
Windows.Forms.Cursor.Clip = New Rectangle(0, 0, 300, 300)
などとしているんですが、これだとほかの窓をアクティブにしたりすると
制限が解除されてしまいます。

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

824:デフォルトの名無しさん
07/08/30 21:19:48
そんな「悪意のあるソフト」ぐらい自力で作れよアホかw

825:デフォルトの名無しさん
07/08/30 21:53:43
悪意って言いたいだけだろハゲ
そのものズバリのWin32apiが公開されてんだろ低能

826:デフォルトの名無しさん
07/08/30 22:39:59
ClipCursorってのを使ってみたのですが
やはり解除されてしまうみたいです。

827:デフォルトの名無しさん
07/08/31 09:47:18
>>822
そこまで考えた課題には見えないし、より深く考えるならそれこそラベルなんぞを動かそうという発想自体がナンセンスになる。
多分スレ違いなんだよな、ここの住人は「素人」や「初心者」に過剰反応するから、優しい人が初心者スレでもつくってあげればいい。
叩きや煽りにいちいち反応してたら、ここのスレ見てらんないぜ?

828:デフォルトの名無しさん
07/08/31 12:44:37
>ラベルなんぞを動かそうという発想自体がナンセンスになる
だからラベルを動かすのは目的じゃなく手段でしょ。

何のための?
学習のためのだよ。

どうでもいいけど話の文脈(今何を話しているか?)を忘れるのは頭の悪い証拠だよ。
学校の課題として不適切、って寝ぼけたことを言う奴がいたから
必ずしもそうでもないだろって話をしてるんだけど。

829:デフォルトの名無しさん
07/08/31 13:09:11
>>828
>叩きや煽りにいちいち反応してたら、ここのスレ見てらんないぜ?

830:デフォルトの名無しさん
07/08/31 13:16:12
>>828
>学校の課題として不適切、って寝ぼけたことを言う奴がいたから
>必ずしもそうでもないだろって話をしてるんだけど。

質問スレで質問と関係ない話しないでくれる(^ω^;)?

831:デフォルトの名無しさん
07/08/31 14:16:04
>>828
なんの話だよw
帰れ

832:デフォルトの名無しさん
07/08/31 15:48:39
名前付パイプを使った通信をしております。
URLリンク(support.microsoft.com)
等を参考にして以下の通り作成いたしました。

Private Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Integer, _
ByVal lpBuffer As String, _
ByVal nNumberOfBytesToWrite As Integer, _
ByVal lpNumberOfBytesWritten As Integer, _
ByVal lpOverlapped As Integer _
) As Integer

Dim bool As Integer
Dim pipe As Integer
Dim size As Integer
pipe = CreateFile("\\.\pipe\mypipe", &H40000000, 0, 0, 4, &H80, 0)
bool = WriteFile(pipe, "ABC", 4, Size, 0)

以上を実行すると、受信側で"ABC"と4を取得し通信自体は成功はするのですが、
同時に送信側でエラーが発生してしまいます。

System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
at abc.AbcvMain.WriteFile(Int32 hFile, String& lpBuffer, Int32 nNumberOfBytesToWrite, Int32 lpNumberOfBytesWritten, Int32 lpOverlapped)

WriteFileのどこに問題がありますでしょうか。
どんな些細な点でもかまいませんのでご指摘下さい。

833:デフォルトの名無しさん
07/08/31 15:53:40
>>832
試してないが、
>ByVal lpNumberOfBytesWritten As Integer, _
これ API が書き戻すんだから ByRef じゃね?

834:832
07/08/31 15:56:22
>>833
なんておマヌケorz

エラーが出なくなりました!
ご指摘ありがとうございました。

835:デフォルトの名無しさん
07/08/31 17:31:11
自作クラスのString型プロパティを多言語対応させるには?

836:デフォルトの名無しさん
07/08/31 17:36:27
>>835
頑張れ★

837:デフォルトの名無しさん
07/08/31 18:36:52
>>835
イミワカンネ

838:デフォルトの名無しさん
07/08/31 20:06:35
このスレ糸冬

839:832
07/08/31 20:23:46
申し訳ありません。もう一つ疑問についてお教え下さい。
WriteFileEx()を用いて非同期の書き込み(読み出し)をしたいと思っております。
WriteFileEx()には関数のアドレスが必要なのですが、
それを得る方法がどうしてもわかりません。

URLリンク(dobon.net)
にも同様の質問があったため、上記ページ等を参考にして
以下のように作成いたしました。
---
Delegate Sub SampleDelegate()
Public Class sampleClass
Public Sub Method()
MsgBox("Method")
End Sub
End Class

Private Declare Function WriteFileEx Lib "kernel32" (ByVal hFile As Integer, ByVal lpBuffer As String, ByVal lpNumberOfBytesWritten As Integer, ByVal lpOverlapped As Integer, ByVal lpCompletionRoutine As SampleDelegate) As Integer

Dim instance As New SampleClass
' こちらは成功する
' bool = WriteFile(pipe, "ABCDEFG", 8, size, 0)
bool = WriteFileEx(pipe, "ABCDEFG", 8, 0, AddressOf instance.Method)
---
実行しますとWriteFileExでSystem.NullReferenceExceptionが発生いたします。

これはDelegateの扱い方が悪いのでしょうか?
それとももっと根本的なことが間違っているのでしょうか?

大変恐れ入りますがお教え下さい。

840:デフォルトの名無しさん
07/08/31 20:46:33
>>839
根本的に間違ってるね。
そもそも非同期とはどういう意味なのか、理解してないんじゃないの?
あるいは自動変数のスコープの概念を知らないのかな。

メソッドの中で作った'instance'への参照はメソッド抜けるとなくなる。
そこはOK?

ドトネドにはガベージコレクターというものがあって……という話は理解してる?

841:832
07/08/31 21:19:25
>>840
レスありがとうございます。

C言語レベルでしたらスコープ等は理解しております
VC++の非同期は多少は・・・知っているつもりです
ガベージコレクションがあることは初めて知りました。

ところで、メンバ変数/クラス変数として以下を宣言してみても同様のエラーでした。
Dim instance As New SampleClass
Dim m_address As SampleDelegate = AddressOf instance.Method

恐れ入りますが、他にポカがありましたらご指摘いただければと思います。

842:デフォルトの名無しさん
07/08/31 21:54:49
コールバックされるメソッドのシグネチャも合ってないよね。

843:832
07/08/31 23:29:29
>>842
レスありがとうございます。

VC++のように決まった形があるのかな、と意味も分からずに
Delegate Sub SampleDelegate(ByVal sender As System.Object, ByVal e As System.EventArgs)
Public Class SampleClass
Public Sub Method(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox("Method")
End Sub
End Class
としてみたところ、

System.Runtime.InteropServices.MarshalDirectiveException:
parameter #2 を集成できません。このクラスの型の定義にレイアウト情報がありません。

とエラーが変わりました。
この点調べてみたいと思います。

844:デフォルトの名無しさん
07/08/31 23:35:54
ADO.netでOracleに接続する場合、ConnectStringって何を渡せばいいんですか?
ネットで検索しても伏字になっているところに具体的に何が入るのかわからなくて困っています。

845:デフォルトの名無しさん
07/08/31 23:53:33
ListViewコントロールをArrayListにつっこんだんですけど、
そのつっこんだListViewのイベントって、どうやったらとれるのでしょうか?

Dim lvwFile As ListView = New ListView
arrLvwFile.Add(lvwFile)
arrLvwFile(arrLvwFile.Count - 1).View = View.Details

のばあいの、Listview1.mousedown とかほしいのでうs。

846:デフォルトの名無しさん
07/08/31 23:57:09
Listview1 ってなんだよ唐突に出てきたけど
とれるとかほしいとか意味がわからん

847:デフォルトの名無しさん
07/09/01 00:01:19
コントロール配列の場合は、

arrLvwFile(0) = New ListView
arrLvwFile(0).View = View.Details
AddHandler arrLvwFile(0).MouseDown, AddressOf test

でarrLvwFile(0)のMouseDownイベントでtest関数が呼べたのですが、
ArrayListに入れた場合がわからないのです。。

848:デフォルトの名無しさん
07/09/01 00:12:00
AddHandler は遅延バインディングには無理なんだっけ
キャストすればいいだろ

849:デフォルトの名無しさん
07/09/01 00:13:35
>>844
データソースとかの名前をどこから引っ張ってくるかという話しなら
以下のあたり見ておけばいいと思うけど。
URLリンク(otndnld.oracle.co.jp)

850:デフォルトの名無しさん
07/09/01 00:29:31
>>848
AddHandler DirectCast(arrLvwFile(arrLvwFile.Count - 1), ListView).MouseDown, AddressOf test
でできました!感動のあまりちんこの先がぬれました
ありがとうございます。

851:デフォルトの名無しさん
07/09/01 01:10:07
>>843
その調子じゃ、言っては悪いが調べても無駄そうだな。
>Public Sub Method(ByVal sender As System.Object, ByVal e As System.EventArgs)

こんなシグネチャがいったいどこから出てくるの?
アンマネージからコールバックされるのに、こんなドトネトのマネージコードの
イベントと同じシグネチャって変だとは思わないか?

WriteFileEx なんてドトネトが影も形もないころに仕様が決められたAPIでしょ。

852:デフォルトの名無しさん
07/09/01 02:02:58
>>844
基本的にはオラクル接続に必要な

USER
PASSWORD
SID

をわたせばおk。

853:デフォルトの名無しさん
07/09/01 02:16:47

どなたか Gilma (=ILMerge のGUIツール) および ILMerge を使ってる方が
居たら教えてください。

このユーティリティでは DLL がたくさんある場合のマージは難しいでしょうか?

比較的少なめの個数の DLL (数個程度) 使用では問題なくマージできるのを
確認していたんですが、10個ぐらい DLL が必要なものでやったところMerge が
最後まで行かず、 Done のメッセージが出ないまま、エラーのメッセージも出ずに
終了してました。結果として目的の Exe ファイルも作成されていませんでした。

最後の DLL のところで、Read successfully にはなっているのですが、その後の
2行目のメッセージが出ずに Log が終わっていました。そこで何かエラーしている
のかもしれないんですが、問題がなんなのかわかりませんでした。

もし似たようなことになったとき何か対策して解決されていた方いらっしゃったら
教えていただきたく。何卒よろしくお願いします。


854:853
07/09/01 02:19:49
(追記)

>>853 ですが、コマンドラインのテキストは、 DLL が少ない場合のときと同様
に規則通りできているようでした。

DLL マージ前の状態での動作確認は一応OKで、DLLが無くて動作しない、
という状況ではありませんでした。



855:デフォルトの名無しさん
07/09/01 02:31:56
なんでそんなにDLLって嫌われるんだろうね

856:832
07/09/01 03:27:10
>>851
レスありがとうございます。

恥ずかしながらアンマネージやらマネージやらは初めて聞きました。
色々調べてみます。

#Unix選手がゲイツを何も知らずにいきなり.NETってのはかなり無謀ですね・・・

857:デフォルトの名無しさん
07/09/01 04:20:06
つーかUnix使ってたらCつながりでC#に行かないか普通?
まあ仕事なら仕方ないがチーン

858:デフォルトの名無しさん
07/09/01 07:58:15
>>852
SIDは違うんじゃね。

859:デフォルトの名無しさん
07/09/01 09:43:39
tnsnameだね。sid渡すのはjdbcだね

860:デフォルトの名無しさん
07/09/01 09:59:08
>>849
>>852
>>858
>>859
ありがとうございます。
でもどのページを見ても
「データベースに接続したことはあるけど細かい設定があいまいな人」用って感じで
データベースに接続するのがまったく初めてで独学の人には難しいんですよ。
Common SQL Environment ってソフトでは
ユーザーIDとパスワードと接続文字列ってやつを渡すと繋がりますが、
ConnectStringにはこの接続文字列ってのは渡さなくてもいいんですか?


861:デフォルトの名無しさん
07/09/01 10:02:43
初心者で独学で、なぜにoracle

862:デフォルトの名無しさん
07/09/01 11:05:42
>>856
参考になるかどうか解らんが↓
  コールバック関数の実装
  URLリンク(msdn.microsoft.com)

863:デフォルトの名無しさん
07/09/01 11:09:11
すいません。一つ質問させてください。
VB2005でテキストボックスに入力されている文字が
10進数か判断するにはどうすればいいでしょうか?
IsDigitは1文字しか調べられないようだし
IsNumericは数字以外もTrue扱いだし・・・

864:デフォルトの名無しさん
07/09/01 11:13:30
一文字ずつIsDigitとか
まあ正規表現使った方が手っ取り早いけど
でもいわゆる全角の数字とか考えてるのかな


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

4741日前に更新/252 KB
担当:undef