1 :
デフォルトの名無しさん :
2011/04/03(日) 20:02:29.09
>>1 乙
前スレ
>>998 997の言うとおり絶対的な最大値は存在しない
Debug.Print(IIf("a" < ChrW(&HFFFF).ToString(), "a", "b"))
例えばこれはOption Compare次第で結果が変わる
Panelに大量のラジオボタンが置いてあるんですが、それのどこがチェックされてるかを調べるためにFor eachで以下のように回そうとしたらエラーがでてしまいます。こういうやり方じゃ出来ないのでしょうか? For Each rbtn As RadioButton In Panel1.Controls Next 型 'System.Web.UI.LiteralControl' のオブジェクトを型 'System.Web.UI.WebControls.RadioButton' にキャストできません。
7 :
デフォルトの名無しさん :2011/04/03(日) 23:32:46.86
絶対的な存在値が存在しないなんて Stringはそんなに特殊なのか…
>>6 PanelからRadioButton以外を全部消せ
>>7 equalsとかCompare系を使えばカルチャは無視できるよ。
String.Equalsはカルチャ非依存だけどString.CompareToはカルチャ依存だよ
>>6 For Each rbtn As RadioButton In Panel1.Controls.OfType(Of RadioButton)()
>>8 aspと記述されてるやつは全部消したんですが、出るんですよね
残ってるのはtableくらい
>>11 ラジオボタンがPanel1.Controlsで認識されませんでした。
たぶんPanel1.HtmlTable.ラジオボタンって感じになってしまいます。
どうしたらいいでしょうか。テーブルは消したくないんです・・・デザインが崩れちゃう
>>13 意味なく行を減らそうとか下らないことを考えるのを止めて、
ベタにキャストするだけ。
>>13 全てのコントロールを再起で検索してラジオボタンの場合だけ処理
Private Sub DoSomeThing(ByRef cons As Control)
For Each con As Control In cons.Controls
If TypeName(con) = "RadioButton" Then
' コントロールがラジオボタンなら
Dim rbtn As RadioButton
rbtn = DirectCast(con, RadioButton)
' やりたいこと
End If
If con.Controls.Count <> 0 Then
' 子のコントロールを持ってれば再起
DoSomeThing(con)
End If
Next
End Sub
' 呼び出し元
DoSomeThing(Panel1)
ああコンテナ内のコントロールね 再帰処理とか考慮しないと全部取れないからControlCollectionの拡張メソッドで対応したりするね
普通にHTML吐き出す時にHiddenとかにコッソリ名前の一覧記述しといちゃうとか 綺麗さとか考えると当然ループだとは思うけど
Select Case Checked Case RadioButton1 Console.writeline("fuck") End Select
まずその大量のラジオボタンどうやって作成してるんだ? 静的にhtmlに書いてるなら事前に一覧作れるだろ 動的に作成してるなら、作成したときに配列なりに突っ込んどけ
20 :
デフォルトの名無しさん :2011/04/05(火) 18:09:35.14
メニューに「拡大」って項目作ってShortcutKeysを割り当てようとしてます。 Ctrl+Add でテンキーの+ボタン Ctrl+OemPluse でメインキーの+ボタン はできるんですが両方同時に設定はむりでしょうか? 因みにプロパティ画面でShortcutKeysにCtrl+Add, OemPluseってやると 勝手にCtrl+Zoomに勝手にかわったので「おぉーできるのか」って思った んだけど両方の+ボタンに反応しないというダメの結果に・・・。 そもそもZoomキーってなんなんでしょ。Keysには定義されてるけど。
ShortcutKeys単独じゃ無理 ShortcutKeyDisplayStringに適当に設定して キー入力はFormのProcessCmdKeyをオーバーライドして処理する Zoomはキーボード次第でそういうボタンがある AddとOemplusの合計値がたまたまZoomと一致しただけだな
>>20 メニューにショートカットキーが表示されなくてもいいなら、
ショートカットキーのためだけの非表示のメニュー作っちゃうとか
VBでWPFアプリ作れますか?
作れるけど情報がゼロに近いのでC#の方が無難
asp.netでamazonのアソシエイトツールでもつくろうと思うんだけど、なんか良いサイトないかな
VBA+α的な簡素業務アプリならWPF+VBで書いてるよ グリッド引いてパコッとコントロールはめるのは気持ちがよい 趣味の世界に近い位置調整の作業工数が減った
27 :
デフォルトの名無しさん :2011/04/07(木) 13:01:58.05
VB2005でWindowsアプリを作成しているのですが DataGridView上に「上」「下」ボタンを用意し アクティブな行をボタンが押されている間は、 一定間隔でそのボタン押下処理(押しっぱなし処理) ※例えば、「上」ボタンが押された場合にはカレント行と上部レコードの値を入替える を判定し上記処理を行なうにはどうすれば良いでしょうか?
質問させて下さい VBからコマンドプロンプトを使いたいのですが Shell("cmd.exe /k cd 変更したいディレクトリ") として ディレクトリ変えたんですが、その後続けてコード入れたいんですがどうすればいいですか?
ListViewとかの入れ替えと何かかわるっけ? その辺参考にどうぞ そんな難しいと思わんが
30 :
デフォルトの名無しさん :2011/04/07(木) 16:50:42.67
>VBからコマンドプロンプトを使いたいのですが VBScriptとかJScriptを使ったWSHアプリを実行 することを推奨
>>27 Button1.MouseDownでTimer1.Start、Button1.MouseUpでTimer1.Stop
後はTimer1.Tickに好きなように処理を
(但しTickの間に処理が終わらないとワヤになるので間隔を調整するか
処理中はTick無視するか)
よくあの日本語を読み解けたな
33 :
デフォルトの名無しさん :2011/04/08(金) 11:44:08.34
>>31 やりたかった事が出来ました。
ありがとうございます。
>>32 あなたの様に、日本語の理解出来ない人には厳しいかもしれませんね。
何だただの葛か
意図が読めないほどではないだろ DataGridView上にどうやってボタンを配置しているのかは気になるけど
読み解く以前に、日本語がかなり不自由な子が書いた文章だってのは理解できる
いや、あれ日本語じゃないだろ 文法がぐちゃぐちゃw
VB2010でツイッター用のアプリをサンプルコードを探し出して作成しているのですが、 PINコードを内部で自動取得し使えるようにしたいのですが、ネットで調べても出てこない。 だれか教えていただけませんか?
VB2010でドットインパクトプリンタを用いた一行印字の処理を 実現したいのですが、何か良い方法があれば とりあえず、テキストボックスの中身を印字出来ればいいのですが… どなたか教えて頂けないでしょうか?
>>40 ページを教えていただきありがとうございます。
>利用者はウェブブラウザでTwitterの認証ページにパスワードIDを入力し、アプリケーションの許可ボタンを押し、PINコードを取得します。
と書かれており、この作業を内部で処理したいと思っていますので、ダメでした。
>>42 Pinなんかはpinの表示されるページの要素みたら名前決まってるから取得できると思うんで
ボタン押すのがネックてことでおk?
>>43 おk。
もうWebBrowserコントロールを使って処理しようかな。
45 :
デフォルトの名無しさん :2011/04/12(火) 00:41:25.35
テスト
46 :
デフォルトの名無しさん :2011/04/12(火) 00:49:38.04
どなたか教えて下さい。困ってます。 他人のPCではローカルサーバで動かせるVBのWEBサイトがあります。 それを自分のPCにコピーして、WEBサイトを開くとするとエラーになります。(WEB.configのエラー?) 考えられる原因って何かありますか?
WEB.configがエラーなんだろ
せめてエラーの内容を貼り付けれ
49 :
デフォルトの名無しさん :2011/04/12(火) 05:11:21.07
>>47 >>48 ブラウザ表示しようとすると、下記のエラーが表示されます。
ひょっとしてフレームワークのバージョンが違うのでしょうか?
パーサー エラー
説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。
パーサー エラー メッセージ: ファイルまたはアセンブリ 'System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
フレームワークと言うとフレームワークという そうして、あとでおかしいなと思って 「アプリケーションフレームワーク」って言うと「.NETでしょ?」っていう こだまでしょうか いいえ、ちがいます
せめて落とし所は作れよ
>>51 25点 居残り決定な
ComboBoxなんかにディクショナリバインドすると SelectedItemがストリング返したりKeyValuPair 返したりするんだがどうやって判別すればいいのだろう
とあるURLにポストしてその返り値を取得したいのですが、どうしたらいいのでしょうか? ちなみに返り値はxmlファイルです。
>>54 Dictionaryは順序不定だからバインドはやめれ
>>55 HttpWebRequest
vb.netで印刷させたら、異常に遅い・・・ printodocument.print を呼んで、応答が返ってくるまで数分かかる。 プリンターは共有だけど、同じPC環境でVB6だったら、 まったく問題なかったのに。 .netとvb6とでは、印刷の仕組みが違うのでしょうか? vb6並に早くする方法があったら教えてほしいです。
どこで時間が掛かっているかだな プリントスプーラに突っ込むんだ後が長いのかPrintPageイベントまでが長いのか
スプーラってなんだよw スープラなら知ってるが
スプーラに突っ込んだ後が長いです。 印刷内容はどちらも同じ内容で、ジョブ名が表示されるのは同じぐらい、 でも、実際に印刷が始まるのは、.NETの方が時間がかかる。 うーむ、分からん。
それだと.NETが悪いわけじゃなさそうだけど とりあえず仮想かなんかでもローカルのプリンタで試してみるとか
ありがとうございます。 ローカルにしたら、.NETの方も問題ない速さでした。 そしたら環境なのかと思ったけど、だったらなんで VB6版の方は早かったんだと・・・。うーむ。 スプール処理とかネットワークで、VB6と.NETで なにか違うのかな。
64 :
デフォルトの名無しさん :2011/04/14(木) 17:47:14.19
セキュリティ関係がくさいな とテキトーこいてみる
質問です。 環境はvisualstudio2005を使用しています。 フォームAに、テキストボックスなどで構成されたユーザ定義のコントロールを 複数載せています。 それぞれのコントロールには、名称が同じユーザ定義のプロパティ1があります。 フォームAで記載するコードからは、各コントロールのユーザ定義プロパティに対して、 「コントロール名.プロパティ名」でアクセスできます。 今回、複数のコントロールの内の1つ(のコード)から、フォームに載ってあるコントロール のユーザ定義プロパティにアクセスし、プロパティの値を変更したいと考えています。 このようなことは可能でしょうか? このように回りくどい事をする理由は、1つのコントロールで上記の動きを定義し、 各フォームでそのコントロールを使い回したいと考えているからです。
>>63 スプールの設定を、全ページスプールしてから印刷する設定にしたら同じぐらいの速度にならない?
.NETで印刷かけると、ページ単位で印刷する設定にしても全ページスプールしてからしか印刷できないと
どこかで見た気がするんだが、もしかしたらまったくのデマかもしれん
>>65 My.Forms.フォームA.コントロール名.プロパティ名
>>65 絵に書いたようなダメなコードだね。
もうコードって英語の意味を誤解してるんじゃないのかと....
69 :
デフォルトの名無しさん :2011/04/15(金) 13:59:09.07
VB2010使ってます。 あるプログラムを今日本で作って、海外(中国)の会社で使ってもらおうとしています。 msgboxで選択肢を「vbokcancel」にして、 msgbox表示時に「はい」と「いいえ」になりました。 これを中国の会社のPCで使用した場合、 選択肢は「はい」「いいえ」になるのでしょうか? それとも向こうのPCの設定に依存して中国語で「はい」「いいえ」になるのでしょうか? msgboxの言語設定ができたりってしますか?
あのへんは勝手にローカライズされるだろ
>>69 中国語ででるよ。
MsgBox使う時はOSの設定から言語呼び出すからね
72 :
デフォルトの名無しさん :2011/04/15(金) 19:58:59.45
>>70 ,71
そうでしたか。それは安心しました。
「Yes」「No」ならまだしも、日本語が文字化けして
読めなくなるのが心配でした。
ありがとうございました。
仕事でやるのなら対象言語バージョンのWindowsぐらい用意した方がいいと思うよ... っていうか、グレードにもよるけどVista以降のOSはどの言語バージョンでも MUIでUIの言語を自由に入れ替えられるようになってるんだけど、知らないのかな。
知らないから聞いてるんだろ。
>>64 >>66 ありがとうです。
結論から言うと、両方だったのかも
プリンタ繋げてるPCでspoolsv.exeをファイアウォールから除外したら早くなったし、
.NETでの印刷がVB6に比べてモッサリしているのも、全ページスプールしてからってのを
聞くと納得がいく。
.NETで大量に印刷するようなプログラムは向かないってことなのかなぁ
つか、これって改悪じゃん。
mdbの更新パラメータクエリにしたら更新しなくなったんで 随分悩んでいたが何のことはないsql文に書いた順番と パラメータをaddした順番が違ってたってオチだった orz
>>69 APIのMessageBoxExで言語を直接指定する事もできるよ
APIだから面倒だけど
質問です。環境はvisualstudio2008を使用しています。 文字列から連続して複数あるラインフィード文字の位置を 取得する方法はないでしょうか? IndexOf(VbLf) で書いてみたのですがうまくとれなくて 下記のような現象になります。 strA = "文字 Vblf 文字 VbLf 文字" → ふたつとも位置が取得できる strB = "文字 Vblf VbLf 文字" → ひとつしか位置が取得できない
使い方が悪いだけだろう IndexOfで問題ない
VBの初歩知識でプログラマーに就職するにはどうすれば
ハッシュテーブルのキーをfor eachで回したときにOrderbyしたいんですが、どうしたらいいでしょう
Dictionary(Of TKey, TValue)はIEnumerable(Of KeyValuePair(Of TKey, TValue))だから 要素のKeyプロパティを使えばいい
>>80 ITドカタの現場なら初心者レベルがごろごろいるけど。
>>78 Dim hoge As String = "012" & vbLf & "45" & vbLf & vbLf & "89"
Dim index As Integer = hoge.IndexOf(vbLf)
Do While index > -1
Console.WriteLine("vbLfIndexOf:{0}", index)
index = hoge.IndexOf(vbLf, index + 1)
Loop
VSがコンパイルしたらソース壊してくれてデザイナは表示しないコンパイルすると 循環参照してるとか言われデバッグしても止まらないともうどうすればいいのか… まあスレチだが
86 :
78 :2011/04/19(火) 20:55:29.75
何言ってるかわからない
型付データテーブルに行を追加する方法を教えてください
型付データテーブル.Rows.Add(DataRow) もしくは 型付データテーブル.Rows.Add(New Object() {"id", "name"})
日付型は Dim D as Date でも Dim D as DateTime でもいいってこと?
VB.NETではDate型はDateTime構造体のエイリアスだから全くの同等。
標準コントロールを継承してオリジナルコントロールを作りたいです。 Public Class OriginalDataGridView Inherits System.Windows.Forms.DataGridView End Class 標準の DataGridView では ReadOnly = False がデフォルトだと思いますが OriginalDataGridView では ReadOnly = True をデフォルトにしたいです。 ・OriginalDataGridView が貼られたときのプロパティ表示でリセットすると True になるように ・プロパティの文字、True が普通で False が太字 OriginalDataGridView の New の中に Me.ReadOnly = True と書いただけでは所望の動作をしません。 どんな風に書くと良いのでしょうか?
>>92 ReadOnlyプロパティをoverrideしてDefaultValue属性をTrueにする
ありがとう。 たとえば Visible プロパティをデフォルト False にしたいときは Visible を override すると標準の VisibleChanged イベントが起きなくなってしまうと思うが その辺はどうカバーしたらいい?
>>93 すみません、以下と同じ要領で Visible の件も出来そうでした。
<System.ComponentModel.DefaultValue(True)> _
Public Overloads Property [ReadOnly]() As Boolean
Get
Return MyBase.ReadOnly
End Get
Set(ByVal value As Boolean)
MyBase.ReadOnly = value
End Set
End Property
標準のイベントはMyBase.OnVisibleChanged overrideした中で呼ぶ
vbでssh使えねぇのかカス
int32 integer と同じだわな なんでわざわざ混乱するようにやっちまったかねぇ・・・
Integerが16ビットでLongが32ビットのままだったら、 .NETのライブラリの引数やプロパティなどの型がLongだらけになるんだぞ VBだと自動的な型変換に無頓着な人が多いから、 Integer型の変数へLongを代入しようとしてオーバーフロー発生しまくり
そういう意味じゃなくて、なんでDateTimeって型があるのに それとまったく同じなのに違う名前のDate型を作る必要があるんだ?って話じゃないのか
いくらVB6と互換性が無いっていっても気分的な互換性ってあると思う C#もintとか無かったらCっぽくないしな まあC#のintならタイプ量も減るけどIntegerは逆に増えてるが
VB6ユーザーを取り込めるかどうかは、最重要課題だったからな。 安心感を持って貰うためにあらゆる手段を講じたのだろう。
メモ帳で開発しているわけでもないのにタイプ量とかどうでもいい
整数はしょっちゅう使うんだからタイプ量少なければ楽だろ int i;なんてインテリセンスに頼るまでもない
型推論使えばintegerとか打つ必要ないな。
遅延バインディングと型推論の区別ができない奴が見たら発狂するから無理
Asを省略するだけじゃなくてDimを他のキーワードにすればよかったのに
C#のvarも、variantや動的型と区別つかないやつが少なからずいるから dim以外にしても同じ結果だと思われ。
何のためにだよ。
>>107 少なくとも遅延バインディングだと思う奴はいないだろう。
遅延バインディングの意味勘違いしてるな
Dim a = GetA() a.Hoge() じゃあこれは遅延バインディングかそうでないかわかる? オプション見ないとわからないだろ
それは推論
>>111 だからそんな奴はいないって。
分かってないのはあんたじゃないかw
Dim a as Object = GetA()
a.Hoge()
これなら遅延バインディング。
Function GetA() As Object End Function Dim a = GetA() a.Hoge() 古い人なら普通に書きそうだな
Option Strict Offなら
>>111 は遅延バインディングだ
分かってない奴がいることが
>>113 自身によって証明されたな
実際
>>111 見ただけでは絶対に分からない
Option Infer Onなら推論 Offなら遅延 推論するかどうかはStrictじゃない
いやInferがOnでもStrictがOffでGetAの型がObjectなら遅延
(´・ω・`)知らんがな
>>115-116 なんかもう無茶苦茶。マジで言ってそうで怖いな。
VBの場合、Option Explicit Offで変数は宣言なしで使用でき、
その場合その変数の型はObject型となる。
また当然そういう変数を使ったメソッド呼び出しは遅延バインディングになる。
VB6の場合も似たような仕様で、それゆえにVBは.....なんて言われたわけだけど
そういうケースの問題と勘違いしてるんじゃないの?
じゃあ試せよw
InferのOn/Offに関わらずStrict Onなら
>>114 は通る。
Option StrictがOffの場合、aに対するコンパイル時に解決できないメソッド呼び出しが
遅延バインディングとして許されるかどうかはaの変数宣言の型がObject型かどうかで決まる。
明示的にAs Objectとして宣言するのも、Explicit Offで暗黙的に宣言するのも、
型推論でObjectになるのも同じこと。
122 :
121 :2011/04/21(木) 22:31:24.09
訂正
InferのOn/Offに関わらずStrict Offなら
>>114 は通る。
>>120 いまは宣言してない変数を問題にしてるんじゃなくて
型を指定してない宣言のある変数の話をしてるんだが?
仮に変数が宣言されてるかどうかの話だと思ってたとして
どうして
>>111 が遅延バインディングじゃなくて
>>113 なら遅延バインディングだと思ったのか教えてほしいな
ASP.NETのツールを作ってるんだけど、NETで公開するときってデバッグで動作させた時より高速になるよね?
>>124 >>111 は遅延バインディングじゃなくて、それだけでは解らないって言ってるんだが?
最終的には
>>121 が言うようにaの型がどうなるか
>>113 はきっぱりObjectで宣言してるが、
>>111 は型を指定してない
今のVBには型推論の機能があるから、型推論されてObject型以外になる可能性がある
推論した結果Objectになる可能性も、推論されずにObjectになる可能性ある
System.Net.Dns.GetHostAddresses() を使って、ホスト名を正引きできるかどうかの関数を作ってます。 正引きできない場合は例外が出るので Try Catch で処理してますが 例外が出るたびにイミディエイトウィンドウに 'System.Net.Sockets.SocketException' の初回例外が System.dll で発生しました。 が表示されます。 激しくウザいんですけど、何か属性を付けたるすることで この関数に関してのみ、イミディエイトウィンドウへのエラー表示を止めること出来ませんか?
イミディエイトウィンドウを消す
129 :
129 :2011/04/22(金) 16:55:48.74
<System.ComponentModel.TypeConverter(GetType(System.ComponentModel.ExpandableObjectConverter))> _ Public Class IntString Private _IntValue As Integer Private _StringValue As String Public Property IntValue() ... Public Property StringValue() ... End Class Public Class OriginalControl Inherits System.Windows.Forms.UserControl Private _IntString As IntString Private _IntStrings(0 To 9) As IntString <System.ComponentModel.DesignerSerializationVisibility(ComponentModel.DesignerSerializationVisibility.Content)> _ Public Readonly Property IntString() As IntString Get Return _IntString End Get End Property <System.ComponentModel.DesignerSerializationVisibility(ComponentModel.DesignerSerializationVisibility.Content)> _ Public Readonly Property IntStrings(index As Integer) As IntString Get Return _IntStrings(index) End Get End Property End Class
130 :
129 :2011/04/22(金) 16:56:32.37
自作クラスを内包するユーザーコントロールを作りたいのですが 非配列の場合はデザイナ(プロパティウィンドウ)で表示・修正できるのですが、 配列にしてある公開プロパティは表示すらされません。 OriginalControl.IntString はデザイナで見えて、+を広げて中のプロパティを弄れます。 OriginalControl.IntStrings をデザイナで見せて表示・修正できるようにするにはどうしたら良いのでしょうか
超初心者です おねがいします
Dim req As HttpWebRequest = CType(WebRequest.Create(), HttpWebRequest)
Dim res As WebResponse = req.GetResponse()
Dim sr As IO.StreamReader = New IO.StreamReader(res.GetResponseStream(), Text.Encoding.GetEncoding(932))
sr.ReadLine()で要求したURLのソースを読ませたのですが、一部が読み取れません
URL=
http://imepita.jp/20110325/834560 ソース
ゲルデク背中<br><img src="/image/20110325/834560?b09a87875e27fb82cdfa0dc56c24eb05" width="480" ><br><br><br>
このうちの"b09a87875e27fb82cdfa0dc56c24eb05"の部分が抜けてしまいます
この部分を読み込むにはどうすればいいのでしょうか?
質問させて下さい。 VB2005(SP1)で、ブレークポイントを設置しても 「ブレークポイントは現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれません」 と表示され、ブレークポイントが使えません。 ・構成マネージャ→Debug ・クリーン→リビルド ・[元のバージョンと完全に一地するソースファイルを必要とする]をオフ は試したのですが…やはりダメです。 何か解決方法はありますでしょうか。
>>131 抜けていないソースはどうやって取得したんだ?
ブラウザで開いてソースを見ても含まれていないのだが。
>>133 今FIREFOXにてソース表示
<img src="/image/20110325/834560?e37a7e09cd1f9b81fb625164d9aa9a76" width="480" >
↑の行の?以降は可変らしく、一定時間で文字列が変更されるみたいです
抜けているというのは、まったく同じ文字列ではないということですよね?
それとも <img src="/image/20110325/834560" width="480" >と表示されていますか?
目的はソースから直接画像のアドレスを求めようとしております
>>131 わたすの環境だとsr.ReadLine()じゃ最初の一行(<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 〜)しか読み込まれないな。
まぁsr.ReadToEnd()にしたらいいんじゃない?
136 :
133 :2011/04/22(金) 20:32:14.08
>>134 IE9やIE10PPだと?以降は付いていない。
ブラウザによって処理が違うのかなあ。
>>135 省いてしまいすいません。最後の行まで読むように処理はしております
>>136 IEで調べてみたところ?以降がありませんでした
IEだと?以降が無くても画像のアドレスが表示可能みたいなので、目的へと一歩進めそうです
皆様お答えありがとうございました
質問させてください(VB.net 2005) バグフィックス中のアプリケーションで以下の現象が発生しています。 タブに配置したテキストボックスの入力値が不正な場合、TextBox.Validating内で以下の処理を行っています。 if TextBox.Text > 100 OR TextBox.Text < 0 Then '値が0〜100でない場合、フォーカスロック&エラー出力 e.Cancel = True MessageBox.Show("","") End If タブページを変更しようとした際に、このValidating処理が発生すると、 テキストボックスの値を0〜100に修正しても、同じタブ上のボタン・チェックボックスなどがクリック出来なくなってしまいます。 正確にはクリックできているが、ボタンを押した際の処理が一切行われない状況です。 回避策としてMessageBoxを表示しないか、フォーカスロックの際にTextBox.Focusとしてやれば現象は発生しないのですが、 上司が「エラーの要因をはっきりさせなければ対応済みとして扱わない」の一点張り。 理屈を説明しなければ納得しそうにないのですが、検索では今回の現象と合致するような情報が見つけられず困っています。 どなたがこの現象が発生する理屈が説明できる方が居れば、助力のほどお願いします。
フォーカスロックなんて言葉初めて聞いたよ。 俺様用語じゃないのそれ?
1眼レフではよくある
文字列と数値比較している時点でゲンナリ
143 :
天才 :2011/04/24(日) 19:21:52.98
タイマーコントロールを多く使うとマルチタスクになると思うんだがどうよ?
<a class="555" href="777">AAA</a> の文字列を正規表現でAAAのみにすることは可能でしょうか?
aってタグを除きたいってこと? せめて条件くらい書けよ
そうです。 アンカータグを削りたいです。
>>140 現場で常用されているため通用すると思い込んでいました。以後気をつけます。
>>142 失礼しました。処理の概要を提示するために打ったコードなのでそこまで気が回っていませんでした。
>>139 ありがとうございます、参考にさせていただきます。
>これだとタブ変更できてしまうわ、うちのところだと
タブコントロールを継承したカスタムコントロールを使用して、Deselectedイベントで以下の処理を行っているのを忘れていました。
if Me.FindForm.ActeveControl.Name = Me.Name Then
e.Cancel = True
End If
>>146 <a[^>]+>((?!</a>).+)</a>
多分こんな感じかな
キャプションを取得するようにしている? .NETだとGroups(1).Valueだったかな
>>150 こうやってるんですが、だめですか?
str = System.Text.RegularExpressions.Regex.Replace(str, "<a[^>]+>((?!</a>).+)</a>", "")
とおもったらできました お騒がせしました
>>148 3点。やり直し
× <a>...</a> にマッチしない
× <a href="..."></a> にマッチしない
× <a href="...">...</a>...</a> にマッチする
お前がやり直しておけよ
<a[^>]*>(.*?(?=</a>))</a> これで
× <a>...<a>...</a> にマッチする
<a[^>]*>(?!.*<a[^>]*>)(.*?)</a> aタグ入れ子にするなって言うのは無しか
異なるコントロールを変数で指定ってできないですかね? 例えば hoge(1)=TextBox1 hoge(2)=Label1 みたいな
List(Of Control)じゃダメ?
Windowsを再起動、シャットオフ、ログオフできるコントロール 壁紙を変更できるコントロール マウスの速度を変更できるコントロール とかかんじんなコントロールがなさすぎる
なにいってんだおまえ?
新しい概念はえてして常識を知らない者により創られるんだ
全部OSの機能だろ タスク仕掛けたりレジストリいじれば実現できるけど どこにコントロールって考えがあるのか理解に苦しむ
バッチ叩けばいいじゃん
きっと160はVBで組む時コントロールの設置しかしないんだよ よく言えばプログラマーではなくデザイナー
LabVIEW使いか
イベント発生で渡されるsenderの特定ってどうやってますか? 一々IfとIs演算子で比較する記述をするのがかったるいので Select Case sender.Nameでやってるのですが、 もっとスマートなやり方ないですかね? GetHashCode使ったりした方がいいんですかね?
リテラル使うとデザイナで名前変えたときにハマる
お願いします、現在登録したデータを一覧表示させるプログラムを作成しております。 最初はラベルに表示させていたのですが、選択できないのが不便で テキストボックスをReadOnlyにして使おうとしたら、 テキストボックスでは背景色に透明が設定できませんでした。 背景を透明にして更に選択可能な文字を表示できるコントロール、 もしくは変則的でもいいので方法はありませんか?
フォームの背景色と一緒にすればいいんじゃない Me.TextBox.BackColor = Me.BackColor
ああコンテナとか考慮するならParent.BackColorの方ね
>>170 ありがとうございます、
フォームの背景に画像を使用しているので透過のような機能でないと具合が悪いんです。
説明不足申し訳ありません。
<a href="..">松井玲奈</a>と <a href="..">仁藤萌乃</a>が <a href="..">大好き</a>です を正規表現で 松井玲奈と仁藤萌乃が大好きです に加工したいんですが、どういう風に書けばいいでしょうか?
174 :
172 :2011/04/29(金) 01:03:17.14
調べてみましたが少なくとも自分では見つけられず、 もしすぐできる方法があるなら(この時間帯でこの程度の時間がたてば)書かれていると思いますので、 一般的な方法では不可能と結論を出しました。 透明は諦めて適当な色にしようと思います、ありがとうございました。
>>173 Dim str As String = "<a href="".."">松井玲奈</a>と" + vbNewLine + _
"<a href="".."">仁藤萌乃</a>が" + vbNewLine + _
"<a href="".."">大好き</a>です"
Dim result As String = Regex.Replace(str, "<a[^>]*>(?!.*<a[^>]*>)(.*?)</a>", New MatchEvaluator(Function(m As Match) m.Groups(1).Value))
result = result.Replace(vbNewLine, String.Empty)
Console.WriteLine(result)
172は何をそんなに生き急いでいるんだw とりあえずWPFのテキストボックスなら透過できるから それをElementHostでホストしてやりゃ出来ると思うけど
177 :
172 :2011/04/29(金) 01:41:41.21
>>176 ・ここができないと他の部分がものすごく作りにくい
・透過しなくてもデザイン的にも機能的にも特に問題ないがただのこだわり
程度だったので。
ありがとう、WPFちょっと調べてみます
>>175 これだとこうなっちゃいます
<a href="..">松井玲奈</a>と
<a href="..">仁藤萌乃</a>が
大好きです
>>180 すいません、できてました。
以下の場合はどうなるのでしょうか?
<a href="..">松井玲奈</a> と <a href="..">仁藤萌乃</a> が <a href="..">大好き</a> です
Gridviewに表示してあるDataGridViewComboBoxColumnのselectedindexを設定したいのですが、どうしたらいいのですか? あと、DataGridViewComboBoxColumnにItem(nameとid)を追加したいのですが、なんていうクラスを使えばいいですか?
>>168 それは
>>167 へのレスですか?
.Nameだったらsender.Nameとcontrol.Nameで
文字列の比較→まず参照が行われるから、
senderの型推論以外は低コストで行えると思ったのですが…。
>>183 俺は
>>168 じゃないけど、話が全然噛み合ってないよ。
ついでに言っておけば、Is演算子を使うとNameを使うより「かったるい」という
感覚が理解できない。
あと、Windows Formのコントロールの話なら明示的にそう書いておくべき。
>>183 sender is Hoge
sender.name="Hoge"
上はデザイナでHogeの名前変えても勝手に変わってくれるが
下は変わらないので自分で探して変えないといけない
彼はElseIfをしらないんじゃないだろうか つか、イベントで発生元を特定する場面なんてそんなにあるのか? どっから呼ばれてるか解らん汎用的なイベントってことだろ 違うイベント紐つけとけばいいだけじゃないのか
>>181 こうしておいて、後でスペースを取れば?
Dim str As String = "<a href="".."">松井玲奈</a> と " + _
"<a href="".."">仁藤萌乃</a> が " + _
"<a href="".."">大好き</a> です"
Dim result As String = Regex.Replace(str, "<a[^>]*>(.*?)</a>", New MatchEvaluator(Function(m As Match) m.Groups(1).Value))
result = result.Replace(vbNewLine, String.Empty)
Console.WriteLine(result)
>>186 テキストボックスのenterとかleaveとかkeyxxとかの処理使い回しする
ことはけっこうあるが?
コントロールによって違う処理もあるがあちこちに散らばると保守しにくいし
共通部分もあるし
>>187 それだとやっぱりこうなっちゃいますね
<a href="..">松井玲奈</a> と <a href="..">仁藤萌乃</a> が 大好き です
>>189 入れ子を考慮すると反復しないと無理ぽ、考慮しないなら
>>187 ので動く
Dim str As String = "<a><a href="".."">松井玲奈</a></a> と <a href="".."">仁藤萌乃</a> が <a href="".."">大好き</a> です"
Dim result As String = Regex.Replace(str, "\s", String.Empty)
Dim pattern As String = "<a[^>]*>(?!.*<a[^>]*)(.*?)</a>"
Dim m As Match = Regex.Match(result, pattern)
While (m.Success)
result = result.Substring(0, m.Index) + m.Groups(1).Value + result.Substring(m.Index + m.Length)
m = Regex.Match(result, pattern)
End While
Console.WriteLine(result)
>>191 そういうことだったのですね、
理解しました。
無限ループさせることにします。
みなさんありがとうございました。
お騒がせしました。
じつはタグ全部消せばよかったというオチマダー?
改行タグとかは消したくないので、これでいいですよー
195 :
182 :2011/04/29(金) 17:11:38.13
あげ
196 :
デフォルトの名無しさん :2011/04/29(金) 17:42:29.11
教えてください Aはストリング型 Aにはフォーマット関数である年月が入ってます つぎに、Aに関して以下のようにDateAddしましたがエラーになってしまいます 理由がわかりません…誰か教えてくださいませんか A = Format(DateAdd(DateInterval.Month,1,CDate(A)),"yyyyMM")
197 :
デフォルトの名無しさん :2011/04/29(金) 17:45:34.84
すみません フォーマット関数である年月とは、フォーマット関数を使って以下のようにテキストボックスの値を変換しているということが言いたかったです A = Format(CDate(b.text & "/" & c.text & "/01"),"yyyyMM")
処理を一つずつ分解して何処で問題が発生してるか確認 あとエラーメッセージを読む
キャストでミスってるぽいのはわかるんですが、だからどうやって直すのかがわかりません Cstrしてみるなど行ったのですが…
Aが既にyyyyMMならCDateでコケないか?
>>184 必要のない記述(この場合、If句における比較対象の片方)を書くのって嫌じゃないですか?
それが単純な値ならともかく、何かの戻り値なんかの場合はそのコストも気になりませんか?
(良く出来たコンパイラなら、変更が無ければ前回の値を記憶して使ってくれるかもしれませんが。)
え?Dimして変数作って代入してから比較しろって?
それもやっぱりコストが気になりませんか?
>>185 sender.Nameとcontrol.Nameの比較にはそういう記述の出番はないんでは…
Select Case sender.Name
Case control1.Name
ほげほげ
Case control2.Name
ほげほげ
で大丈夫だし。
特定の型のコントロールに接頭辞とかをつけて、IndexOf使って型に合わせた処理を行いたい、
というのなら納得しますが、今回はそういうのではなく、
単に発生オブジェクトの特定が行いたいだけです。
Selectが=を内部で使ってくれてるのはまぁありがたいんだけど、参照の比較が出来ない、というのは嫌らしいなと思う。
Object.referenceとか作ってくれないかしら?
>>201 無駄口が多すぎて何が言いたいのかよく分からない。
>それが単純な値ならともかく、何かの戻り値なんかの場合はそのコストも気になりませんか?
とか、今回の質問に全く当てはまらない話が唐突に始まるのとか何なの?
まあいいや。
イベントハンドラーを複数でシェアする場合、ほとんどはsenderに対応するパラメータを
選択して同一の処理を実行することになるはずだから、どうしてもIsで参照を比較するのが嫌なら
コントロールのTagかDictionaryにでもパラメータを突っ込んでおいたら?
>>202 質問を簡潔にすると、
Select文で参照を直接比較する方法は無いのか?
無ければ参照の直接比較の代替としてはどの様な方法があるか?
という事です。
>コントロールのTagかDictionaryにでもパラメータを突っ込んでおいたら?
それは勿体ないんで(Tagとかまた型推論必要だし)、
sender.Nameとcontrol.Nameで比較する事にします。
結局このスレのレベルじゃこれが限度なんね。
CLRの仕様とかILレベルで説明してくれるかと思ったけど、無理か。
なんか自分を棚に挙げて凄い言い草だな。 荒れそうだからこれ以上突っ込まないが....
何の関係もない型推論とかILとか言っちゃう子だから…
質問者が自分の質問力レベルを自覚できてないとか良くあるよね。
思ったんだが比較演算子をオーバーロードしたら select case ってオーバーロードした方でチェックするのだろうか? =をオーバーロードしてisと同じ動きにすればいけんじゃね、とか思ってみた
208 :
デフォルトの名無しさん :2011/04/29(金) 21:11:44.56
Gridviewに表示してあるDataGridViewComboBoxColumnのselectedindexを設定したいのですが、どうしたらいいのですか? あと、DataGridViewComboBoxColumnにItem(nameとid)を追加したいのですが、なんていうクラスを使えばいいですか?
> DataGridViewComboBoxColumnのselectedindexを設定したい 列自体にSelectedIndexなんてあるとも思えないが何の話? > DataGridViewComboBoxColumnにItem(nameとid)を追加したい 意味分からん 追加してどうしたいのさ
210 :
デフォルトの名無しさん :2011/04/29(金) 21:47:06.35
Gridviewの1列をコンボボックスにして その中身にA,B,Cを入れて、初期表示時に一番上のAを選択させておきたいってことです
>>208 SelectedIndexは無いんじゃない。
変えたいならComboboxで選択できる値をValueに入れたら変わる。
他のもの入れたらArgumentException
Dim cmb As New DataGridViewComboBoxColumn
cmb.HeaderText = "ヘッダ"
cmb.Items.Add("A")
cmb.Items.Add("B")
cmb.Items.Add("C")
DataGridView1.Columns.Add(cmb)
DataGridView1.Rows.Add()
DataGridView1.Rows(0).Cells(0).Value = "A" 'Aを選択する
質問 〜 その@ 〜 VB2005で、DataGridViewとDataTableとをバインド表示させ ようとしています。 DataTableの中では定義している3列目の FULL_FILE_NAME 列の 値を、DataGridView上には表示しない様にしたいのですが プロパティでは何を設定すれば良いでしょうか? ※以前にやった記憶がありますが忘れてしまいました。
質問 〜 そのA 〜 【DataGridView】 1列目:DataPropertyName: NUMBER 2列目:DataPropertyName: FILE_NAME 【DataTable】 1列目:NUMBER 2列目:FILE_NAME 3列目:FULL_FILE_NAME ※2chの仕様変更の様で一度に投稿できる文字数が減っていたので 2回に分けて投稿します。
DataGridView.Columns("FULL_FILE_NAME").Visible = False
>>214 ありがとうございます。
ただ、列を隠すのではなくて
デザイナ画面のプロパティよりAuto***何とか(?)を設定する事により
データソースのバインド時に
DataGridViewのDataPropertyNameに指定されていない
DataTable内の列がバインドされない設定があった筈なので
それを知りたいです。
DataGridViewのAutoGenerateColumnsでござるか
フォームAの宣言部で public test_A as hoge Public Structure hoge test as integer end structure フォームAから呼び出されたフォームBでtest_Aを使おうとすると 'test_A'は宣言されていません。アクセスできない保護レベルになっています とエラーが出ます。 publicで宣言した変数はどのクラスからも使用できると思っていたのですが違うのでしょうか?
>>217 イエス&ノー。
掲示板で質問するより本でも買って真面目に勉強した方がよさそうだ
グローバル宣言と間違えてるんじゃねか
220 :
217 :2011/05/01(日) 22:52:39.29
まさにグローバル変数として使いたかったのですが 指摘されてググるとVB.netではグローバル変数の宣言とかないんですね・・・ 一応スタチィッククラスを使用して擬似的にグローバル変数的に使う方法が説明されたサイトが見つかったので そちらを参考にしてみます 10年以上ぶりだとウラシマ状態ですw
モジュールに書けばいいと思うが そもそもその構造体の宣言はコンパイル通らんだろ
222 :
217 :2011/05/01(日) 23:02:32.04
モジュール使えばいいだけでした スレ汚しすみませんでした
フォームA.test_Aで行けんじゃね その場合のインスタンスがお前の思うインスタンスがどうかしらんが
224 :
デフォルトの名無しさん :2011/05/02(月) 12:08:46.36
IndexOfとInStrって両方検索だと思うのですが、 どうやって使い分ければいいのでしょうか
>>224 Stringクラスはindexof てだけじゃない?
なぜかindexofで検索できずにinstrで行ける時が昔あった気がするけど
今は普通にいんでxOfしか使ってないなぁ
C#にした時も簡単に乗り換えできるし
MSDNでInStrを見たけど、textモードとbinモードの違いが分からない。
227 :
225 :2011/05/02(月) 13:13:04.20
なぜんかとは書いたけど 内部での処理が違うんだろうなとは思ってる String.IndexOf (Char, Int32) String.IndexOf (String, Int32)を で結果が違うことあった気がしたからUnicode文字とかの解釈の違いなんじゃないかと思ってるけど 素人すぎすまん だれか正確に知ってる人居たら回答頼む
>>228 よく分からない。
String.Equalsの、CurrentCultureとOrdinalに対応するとか?
「ABCDE」と「abcde」 バイナリ:異なる文字列 テキスト:同じ文字列 「ABCDE」と「ABCDE」 バイナリ:異なる文字列 テキスト:同じ文字列 「あいうえお」と「アイウエオ」 バイナリ:異なる文字列 テキスト:同じ文字列 こういうことじゃないの?
>>230 いやな仕様だな。
どういう文字を同一視するかちゃんとした仕様が確認できないと使えないじゃん。
だからカルチャを明示的に指定しろよ たしかFxCopだとカルチャ指定せずに文字列比較やろうとすると警告出るぞ
カルチャを指定できないinstrは使うなってこと?
なんとなくそれっぽく動けばいい、みたいな時代のVBの名残りだろ それでいいときもあるし、それが嫌ならVB関数なんて使うべきじゃないよ VBなんてそういうもん
っていか
>>228 >>230 は本当なのか。
>>228 とか、あったとか言うから見てみてもinstrにぜんぜん触れられてなかったし。
面倒だから自分で調べないけど。
InStrってそんなのあったっけ、と思ったらVB6互換ライブラリのメソッドかよ.... 何でわざわざそんなの使うの.... っていうか、バイナリで比較と文字列として比較の違いが分からんって頭悪すぎじゃないのか。
InStrはCompareMethodを指定できる(省略可)から比較方法を明示して正しく使うことはできるはず ほとんど省略されてるだろうけど
仕様を確認できなかったら分からないって言うほうが普通。
VB6の互換なら、変な引数増やさなきゃいいのに。
VBの文字列比較で、バイナリ・テキストって聞いただけで挙動が分かるのかね。 VB6の時代からやってる人には当たり前だとか? CurrentCultureとOrdinalに対応するのかなって程度なら推測できるけど、 当たりかどうかはよく分からない。
>>240 Textモードの仕様の詳細はもちろん分からないが、binaryモードは自明だし、
BinaryとTextの意味的な違いも自明。
これが分からないのは説明がないからだ、と本気で思うようならちょっと反省した方がいいよ。
>>241 なんだ、やっぱテキストモードは分からないのかよ。
>>241 世間がGW中に仕事で1人クレーム処理して嫌な思いしているのは判るが
ちょっとは優しくなってやれよw
OrdinalとCurrentCultureどうこう言ってるのにバイナリの挙動も 理解してないって決め付けて煽るのって、煽ってるほうがアホだろ。
具体的にどのカルチャやCompareMethodに対応するのかはっきりとは書かれてないな VB独自の秘密の実装なのかもしれない
>>230 が本当なら、カルチャは関係ない実装だな。
>>244 面白い冗談だね。
>>226 鳥頭ってこういう人のことを言うのか。
Binaryの意味が分かればTextモードとの違いも自ずから分かる。
VB2010でエラー回避の引数チェックに自作関数MyNumericを使いたいんだけど 少なくとも1フレームにつき一回は呼び出すので、結構負荷がかかりそう 数値なんで:d^len(value)をセットした正規表現を使うかと思ってるけども、注意することありますか?
>>247 結局細かいことは説明できないんだし、そういう言葉尻とらえて
自分が正しいみたいな言い訳って悲しくない?
>>249 そうかもしれんが(いや俺は全然そう思わないが)、
ならあんた自身がやってることは何なの。
自分棚上げ馬鹿かよ情けない
>>248 漠然とし過ぎでは?
っていうか":d^len(value)"って何?
普通に"^\d+$"じゃだめな理由が分からない
正規表現に慣れてないんで変な使い方してるのかな MSDNによると 数値は :n 繰り返しは ^数値 とあった 昔は\d{数値}とか使ってた記憶があるんだけど
本当に正しいページ見てるのか? どう見ても、それは「.NETの」正規表現じゃない
>>250 instrのバイナリとテキストモードの挙動が普通のPGには自明のことで
オレだけが分からんってことなら、オレがバカなのかもしれんけど、
そうでもないみたいだし、別に自分はバカだとは思わない。
「instrのバイナリとテキストの挙動の違いってなんだ」
「違いは分かりきってるだろw お前バカ(仕様はわからないけど)」
↑こういうのはアスペの揚げ足取り。
>>254 繰り返しになるけど、少なくとも文字列をバイナリで比較する、って言われて
意味が理解できない人間はプログラマ失格。
これは大げさでも煽って言ってるのでも何でもない。こんなのは常識以前だよ。
誰が意味わからないなんて言ってるの?
>>240 はどう見ても text と binary の字面上のイメージは理解してるように見えるけど
で、具体的にtextとbinaryはどのカルチャやCompareMethodに対応するんですか?
下らない意地を張っても恥の上塗りになるだけ。
それが本当なら
>>226 のようには書かないね普通。
Textモードの具体的な仕様ってどうなってるの?と書くだろう。
>Textモードの具体的な仕様 そんなもん環境依存に決まってるじゃん 今はInStrとIndexOfの違いを問題にしてるんだろ? 比較方法とカルチャを指定しないときのIndexOfはCurrentCultureが使用されるというのはMSDNに明記されてる。 そして、InStrは比較方法を指定しない場合Option Compareによる。これもドキュメントに書いてある。 じゃあOption Compareはどのカルチャに対応するのか?というのは当然の疑問だと思うが
ダメだなこりゃ。
どうせ匿名なんだからそんな無理して自己弁護しなくてもいいだろうに。
>>226
ある程度形式が決まっているんなら正規表現のが遅いかもね 便利だけど
>>255 バイナリの意味は分かってるよ。
MSDNに仕様が載ってないってのを、よく分からないて言っただけじゃん。
それをバイナリが分からないって解釈するのがアスペだって言ってるの。
まあ実際アスペじゃなくて、揚げ足取るポイントがそこしかないから
むりやり言い張ってるだけなんだろうけど。
>>255-259 あとでCultureとOrdinalに触れてるんだからそんなもん分かってるに決まってる
だろ。
やたらと
>>226 だけあげつらって、ほんとアスペの振りした揚げ足取りはタチが
悪い。
まあキチガイのふりするやつは、ふりじゃなくてキチガイなんだけど。
>>253 うん、間違ってたゴメス
次の二つを呼び出して5000000回試行したら、平均して1が5.5秒、2が6秒程度だった。
さすがにここまでいくと、あんまり早さにこだわる必要なさそうですね。
Function CheckNumeric(ByRef MyNumber As String) As Boolean
Dim MyCheckRegPattern As String
If Len(MyNumber) > 0 Then
MyCheckRegPattern = "\d{" & Len(MyNumber) & "}"
If Regex.IsMatch(MyNumber, MyCheckRegPattern, RegexOptions.Compiled) Then
CheckNumeric = True
Else
CheckNumeric = False
End If
Else
CheckNumeric = False
End If
End Function
その2 Function CheckNumeric2(ByRef MyNumber As String) As Boolean Dim CountMyNumber As Long CountMyNumber = 0 If Len(MyNumber) > 0 Then For CountMyNumber = 1 To Len(MyNumber) If Not Mid(MyNumber, CountMyNumber, 1) Like "[0-9]" Then CheckNumeric2 = False Exit Function Else End If Next CheckNumeric2 = True Else CheckNumeric2 = False End If End Function
っていうか
>>251 が一番早かったし判り易いですね
.NETでパフォーマンス気にするならCかC++でライブラリでも自作すりゃいいんじゃないの
パフォーマンス気にするならC++使えとかいう人ってほんとにやって測定したことあるんだろうか .NETのままでもやり方を工夫すれば軽く10倍速くなったりするケースはよくあるけど 全く同じことをC++でやったところでせいぜい10%速くなるとかそんなもん
元々C++の100倍遅かったものが10倍速くなったとしても、10%速いC++の11.1倍遅いってことか。
そもそも本当にパフォーマンスが必要なんかなって気もするけどねw
「フレーム」って何のことか分からないけど、たぶん
>>248 がそう思い込んでるだけじゃないのかと。
本当にパフォーマンスが必要ならまず関数呼び出し形式は止めた方がいいんじゃないか。
あと聞いた感じでは普通はTryParseを選択する場面なんじゃないかと。
正規表現はどうやったって遅いだろう。
しかし、
>>263 のコード見てちょっと思ったけど、スタティックメソッドのIsMatchでリテラルじゃないパターン文字列で
RegexOptions.Compiledを指定した場合ってどういう動作になるんだ?
正規表現のコンパイルは実行時に行われるので リテラルかどうかなんて全く関係ないぞ
関係はあるだろう。 Compiledオプションの意味分かってる? リテラルの場合は同じインスタンスを使い回すぐらいの最適化はしてるはず。
それはリテラルかどうかではなく、同じ文字列かどうか、だ Regexクラスは実行時にILを動的に生成してるの
リテラルならまさに常に同じ文字列ってことじゃないかw
>>272 の言うとおりならIsMatchを実行するたびに、それまでに指定したパターン文字列との
比較が行われることになるが、文字列の比較はそれなりに高価なのにそんな実装するかね。
するんだなこれが ちなみに、キャッシュのキーに使われるのはパターンに加えてオプションなどの情報などを結合した文字列で つまり常に新しい文字列が検索キーに使われるのでリテラルかどうかは本当に全く動作に影響しない 常に文字列の値比較で検索が行われる
そんな話はしてないよ あとコンパイルは起動時ではなくRegexの使用時な
>>275 あーそのドキュメント、アップデートされてたんだな知らなかった。
スタティック版のIsMatchでRegexOptions.Compiledを指定した場合の動作は
その文章で理解できたけど、パターンにリテラルを指定した場合に
VBのコンパイラレベルで最適化が何も行われないとは思えないねやっぱり。
それについてはそのドキュメントでも触れられてない。
Regexのソースコード見てみなよ。公開されてるんだから。 それと、VBでRegexを使ったときのコンパイル後のアセンブリをildasmで調べればはっきりするでしょ。
>>277 中間言語にコンパイルするときには、それほど最適化は行われないよ
リテラルで指定しても、実行時にキャッシュされるだけだと思う
中間言語というかJITの段階でもRegexの特別な最適化なんて行われないよ キャッシュはあくまでRegexクラスが勝手にやってること Lightweight Code GenerationていうCLRの機能をつかってILを書き下してる
281 :
デフォルトの名無しさん :2011/05/04(水) 11:21:54.88
デバック中に一時停止をしたいのですが、 Ctrl+Pause/Breakだと「利用可能なソースがありません」というタブが でてきてしまいます。 これを表示させない方法はありませんか? 2008かVB6には「続行」と「デバックの停止」の間に「一時停止」というボタンがあったと思うのですが、 あれと同じことがしたいです
282 :
デフォルトの名無しさん :2011/05/04(水) 11:22:16.69
すいません、環境はVSEE2010です。よろしくお願いします。
>>216 すみません。返事が遅くなりました。
ありがとうございます。
はい、確かにに以前は AutoGenerateColums = False と指定する事により
勝手にDataGridViewにDataTableのみでしか定義されていない列が描画される
のを防止する事が出来たのですが、
なぜかプロパティにも見つからず、プログラムで指定しても描画されてしまいます。
一体何が原因なのでしょうか?
>>281 デバッグのオプションでマイコードのみにチェックしてみる
でも普通よほど時間のかかる処理中に止めでもしない限りは偶然うまいこと
ユーザーコードで止まってくれることなんてまずないと思うけど
>>283 デザイナで列が自動追加されるなら
リソースに追加されてる設定を削除すれば自動追加されなくなるけど
実行時の話なら分らん
LinkButtonに C:\test\directory という文字列を設定しているのですが クリック時にエクスプローラーが起動しません。 どうすれば起動する様になりますか?
Windows Formsですよね?
.Netアプリをネイティブアプリに変換してくれる様な ソフトはありませんか? .Netアプリの起動時間の遅さが我慢出来ません。
ngen .NETは必要だが起動は速くなる
>>290 とっくに ngen は試しましたがネイティブアプリに比べると起動速度がやはり遅いです。
なら諦めろ そもそも.NETのコールド起動時間はDLLのロードの際のIOがほとんどだからどうにもならん スタートアップにこっそり仕込んどけ
命令口調クンって馬鹿だな、まで読んだ。
スタートアップに仕込むとか最悪です やめてください
スタートアップとかスパイウェアだろwレベルが低すぎるwww
最低だけどスパイウェアは言いすぎ。 AdobeにしろMSにしろ、少なくともかつては常套手段だよその手法。
ネイティブかどうかとか関係なく、ディスクから読む量に比例して遅くなるだけで 仮に事前にネイティブコンパイルできたとしても早くはなりません
ネイティブアプリ早いだろうが
ドドネトアプリも、余程巨大なの以外は初回起動以外は結構早いんだよね。
この場合、
>>297 はバイナリがメモリーにキャッシュされてるとでも思ってるのかしらw
>>300 .NET Frameworkだけじゃなくてユーザーアプリもキャッシュされるのか....
いやすまん。
ボトルネックになるのはユーザーコードよりもGACにあるライブラリやCLRのロードの方なんじゃないの JITエンジンのロードで遅くなる場合があるとか書いてあるくらいだから 一般にユーザーコードの量なんて知れてるんだろ
詰まってしまった、おねがいします 相対パスでファイルをメモ帳等で開く処理を作成しております ├[exeのあるフォルダ] | └exe ├[フォルダA] | └ファイルA.txt └[フォルダB] └ファイルB.txt ファイルAを開きたいとすると、exeを起動したばかりの時は"../フォルダA/ファイルA.txt" のパスで開けます。 しかし別の処理で (初期フォルダBで)OpenFileDialog を使い、ファイルBを選択した後に 同じ相対パスで開こうとすると、フォルダBが対象になってしまって開けません。 (「/フォルダB/フォルダA/ファイルA.txtは存在しません」と出てしまいます) exeファイルから見た相対パスとして設定できていないせいだと思いますが、 用語が思いつかずうまく検索できません。 どなたか解決法か、参考になるサイトをどうかお願いしますorz
> exeを起動したばかりの時は"../フォルダA/ファイルA.txt"のパスで開けます。 ショートカット使って起動フォルダいじるだけで開けなくなる 実行ファイルのパス取得してPath.CombineとPath.GetFullPath使ってパスを解決
305 :
303 :2011/05/07(土) 00:20:31.72
>>304 求めている処理ができました!
ありがとうございました、1日悩んでないで早く聞けばよかった・・・
悩んだからこそ記憶に残るもんじゃよー
Private Sub Test(ByVal dt As DataTable) For Each dr As DataRow In dt Next End Sub なぜかdtでエラーになります。 なぜでしょうか?普通はいけますよね?
普通にいけない 型付DataTableと混同してる?
型付と同じように使えないんですか? 逆にどうやったらエラーが消えますか?
・型付DataTableの基底クラスであるTypedTableBase(Of T)クラスとDataTableクラスの宣言の違い ・DataTableのメンバ一覧 をMSDNで調べれ
Rowsで回せよ
MSDNは英語版を読むもの。翻訳版は地雷
今回の件に見づらいとか関係ないだろうに
>>313 ロートル乙
315 :
デフォルトの名無しさん :2011/05/07(土) 03:04:16.11
OpenFileDialogでPictureBoxにロードした画像を SaveFileDialogで保存しようとしても空っぽのjpgファイルが出来るだけで画像の保存が出来ません。 Dim sfd As New SaveFileDialog() sfd.FileName = OpenFileDialog1.FileName sfd.FilterIndex = 2 If sfd.ShowDialog() = DialogResult.OK Then Dim stream As System.IO.Stream stream = sfd.OpenFile() If Not (stream Is Nothing) Then Dim sw As New System.IO.StreamWriter(stream) sw.Write(PictureBox1.Image) End If End If 何か根本的に間違っているのでしょうか、、、、
>>315 ・Writeしただけじゃ保存されない。FlushかCloseしないと。
・Stream、StreamWriterは、必ずCloseするか、Usingを使う。
・StreamWriterは文字を書き込むためのもの。
・Imageの保存は、Image.Saveを使うといいと思われる。
317 :
デフォルトの名無しさん :2011/05/07(土) 11:54:39.83
>>316 いただいたヒントを元にがんばってみます。
ありがとうございます。
Using ってのは一生使わなくても生きていけるよね?
VBってのは一生使わなくても生きていけるよ
With は避けて通れるけど Using は普通に使うだろ まー個人的には With が好きだが
Using使わないならTry-Finallyが必須だぞ 余計に面倒
>>320 with使うとオーバーヘッドが減るってどこかで見てからなるべく
使うようにしてますが
そんな大昔のBASICみたいなことは一切ありえませんw
ただまあusingやwith多用するとインデントが深くなって ソース見づらいのが欠点ですがw ところでDB処理するときConnectionやCommandやDatareaderで using使いまくってるんだけどConnectionとか使い回すべきだろうか… (パフォーマンス的に)
>>324 > ただまあusingやwith多用するとインデントが深くなって
> ソース見づらいのが欠点ですがw
いや、むしろブロック化されて分かりやすいけど・・・
Usingの糞なのはコンストラクタで発生した例外をキャッチできないことだろ Try Using x As New Hoge() End Using Catch e As IOException 例外処理 End Try アホらし
ちょっとスレ違いかもしれませんが、 ここ最近VBA(マクロ)を実行するとプログラムの実行中に途中でなぜか中断されてしまいます。 続行ボタンを押せば問題無く続きから実行されるのですが、 一体何が原因なのでしょうか? OS:Windows Vista Excel:2002
ちょっとではありません VB.NETとVBAは全くの別物です
VBAだと変数は毎回スコープを外側に向かって検索するから、
Withブロックで参照を固定するとオーバーヘッドを減らせるとかあったような。
VB.NETだとコンパイル時に確定するからパフォーマンスは変わらないだろうな。
>>326 Usingは例外のハンドリングが目的じゃない。
>>325 Usingはカンマ区切りで複数書けるのでネストが深くなるのを防ぐことができる。
さらにVB10なら継続行を省略できる。
Using gpath1 = New GraphicsPath(),
gpath2 = New GraphicsPath(),
gpath3 = New GraphicsPath(),
gpath4 = New GraphicsPath()
:
End Using
>>330 あーそんな書き方できたっけ。
まあそんなに必用な場面はないと思うけど
継続行の _ 、省略できるならできる できないならできないで統一してほしいなぁ
エラー想定処理だけですっげえ疲れる まあ汎化出来たから後は組み込むだけだけど
>>331 普通にSystem.Dataとか使うときに利用すんだろ
コネクションとかコマンドとかトランザクションとかアダプターとか
それら全部を個別に宣言していったらネストが深くなってやってられん
VB.netで文字列の末尾に付着してしまった VbCrLf を削除するにはどういうコードをかけばスマートですか?
固定数ならRemove 不定数ならTrimEndかRegex.Replace
文字列が,正規表現文字(" . "," [ "など)かを判定する方法はありますか? やってること 文字列と正規表現を渡すと,マッチの真偽を返す関数を作成。 数値,文字列,郵便番号など定型オプションの拡張 mach,replaceなどの変則オプションの拡張 ' これは別個に用意するか検討 を予定しています。 引数として渡されたパターン文字列が,正規表現として使えるかを判定する必要があります。 ---- Function CheckString(ByVal BVRegStr As String, Optional Byval BVRegPatternStr As String = "^\d+$") As Boolean 'BVRegPatternStrで判定正規表現をオプションで直接指定できる。 'デフォルトで数値。 'Option BVRegNumLngで数値を受け取り,BVRegPatternStrに正規表現パターンを格納する。 '/**** ここで引数BVRegPatternStrが正規表現として使用できるかをチェック。 ****/ If Regex.IsMatch(BVRegPatternStr, BVRegPatternStr) = True Then CheckString = True Else CheckString = False Exit Function End If End Function
Regex.IsMatchが例外投げるかどうかじゃ駄目なの?
想定出来るエラーなんで例外処理は最後の手段にしたいんです オリジナルエラーログの作成もするので
想定できるエラーだからCatchするんじゃないか まあ表現そのものが正しいかどうかはタイミング的にはIsMatchじゃなくて Regexコンストラクタ使った方が良いかもしれないが
なるほど、RegexOptionsに投げれば処理の場合分けも不要ですね 個人的に例外処理したくないのもあるし、規約があるんで手が抜けない TRYはonERROR GOTO よりは使いやすいんだろうけど
正規表現として使用できない文字列の規則なんてあるのか? メタ文字以外の文字はその文字そのものにマッチするはずだよな つまり原則どんな文字でも使えるはずだと思うんだが 単に思うようにマッチしないだけだろ
括弧の呼応が不整合とか
DataGridViewでPageUp(PageDown)キーによる行の移動を無効化したいのですが、 どうすれば良いでしょうか?
KeyDownイベントでHandledする しかしどっからそんなゴミUI仕様の発想が出てくるんだろう
たぶんゴミ言語を使用するよう決定したあたりからじゃないかな
ListBoxにファイルのフルパスをずらずらと表示させて それを エクスプローラのコピー機能 とおなじにコピーするにはどうすれば
>>347 VBスレに粘着するお前はもっとゴミだがなw
DataGridViewでバインドしたデータセットをFillした後Columns.Addした カラムが一度目は表示されず(しかもデバッグするとちゃんとセルの値は 変更されている)2度目にFillすると表示されるってのは何故なのだろ?
VBというよりもアプリケーションの設定だと思うんですが、 とあるプロジェクトだけ、例外が起きなくなってしまいました。 Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim a As Integer = 100 Dim b As Integer = a / 0 Console.WriteLine(b) End Sub これでエラーが出ません。 Console.WriteLine の行は実行されず、フォームが開いてしまいます。 まるで Try Dim a As Integer = 100 Dim b As Integer = a / 0 Console.WriteLine(b) End Try してるような動きです。 frmMain がスタートアップなのですが、何が考えられますか? 新しいプロジェクトを作ると正しく例外が出ます。 (開発環境が壊れたわけではない)
大方frmMain_Loadが実行されていないだけだろ そもそもConsole.WriteLineの位置がエラー発生元の後に置いているのは何故? それとTry 〜 End Tryってのは何? CatchもFinallyも無いのはコンパイル通らんだろ
On Error Resume Next してるとか
Console.WriteLine(b) は表示されてるの? 表示が無いなら分からんが、表示されてるなら予想がつく。 次に起きている例外が0除算例外でなくオーバーフローなら間違いない。 整数のオーバーフローチェックが無効になってるかどうかが異なっているはず。 a / 0 の / は実数の除算演算子なので、結果は実数の無限大になりここで例外は起きない。 その結果を整数型の b に代入するときにオーバーフローする。 ここで整数のオーバーフローチェックが無効であればオーバーフローの例外が起きない。 >Dim b As Integer = a / 0 は本来、Dim b As Integer = a \ 0と書くべきで、これならゼロ除算例が起きる。
x64Windows上で.NETをx86で動作させてデバッグした場合に、 ハンドルされない例外が無視される現象が起きるみたいだ。 AnyCPUかx64でデバッグする分には、普通に引っかかる。 VS2010で既定がx86になったので、表面化してきたっぽいなあ。
357 :
デフォルトの名無しさん :2011/05/16(月) 01:20:44.57
すいません、どういう風に作ればいいのかが分からないので教えてくださいませ
今はゲームのマップエディタをつくろうと思っています。
(探せば多分あるとおもうのですが、勉強がてら自分でつくろうと思いました)
http://www1.axfc.net/uploader/Img/so/115633.jpg 最終的にこんな画像を出力する予定です。
ですが、描画方法で詰まってしまいました
自分の構想では、画像を床と通路を分けてそれぞれ描画し、
背景を透明にして通路画像の上に床画像を重ねれば良いと思っていたのですが、
pictureboxコントロールには透明の背景がありません
また、↓のページの
(続きます)
http://homepage.mac.com/tuyano/VBNetTutor/VBNetTutor3.html Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles Button1.Click
Dim g As Graphics
Dim p As Pen
Dim b As SolidBrush
Dim r1, r2 As Rectangle
g = PictureBox1.CreateGraphics
p = New Pen(Color.Red)
b = New SolidBrush(Color.Blue)
r1 = New Rectangle(10, 10, 50, 50)
g.DrawEllipse(p, r1)
r2 = New Rectangle(70, 70, 50, 50)
g.FillRectangle(b, r2)
End Sub
のようにすると、図形は描画できるのですが、別のウィンドウが重なっただけで消えてしまいます
我慢すれば無理やり作れないこともないのですが、実用には耐えません
こういう時はどういう風にするものなのでしょうか?
あるPGである処理をデバッグモードで実行した場合フリーズしなくて、 リリースビルドから同じ処理を実行した場合フリーズするんだけど、 一般的にどういう理由が考えられますか
処理が違う
どこがどう違いますか (デバッグとリリースで同じコードでなぜ挙動が変わるのか
どうもフリーズするのはデータグリッドビューに行をインサートした結果、スクロールバーが表示される場合のようです。 DGVの領域の高さに余裕をもって、10行インサートした場合はフリーズしませんが、高さをスクロールされるくらい短くして同じコトをするとフリーズします。 デバッグモードでは同じことをしてもフリーズしません。 どうして同じコードで挙動がちがうのでしょうか
リリースモードでインサート処理の所デバッグしてみれば?
仮説を立ててみよう 仮説: コードを書いたやつが馬鹿 検証方法: もしUIスレッド以外から追加しているのなら仮説は正しい
馬鹿じゃないだろ
中国人のわりには
>>364 は日本語うまいし、大陸のアッパークラスだよ
日本語でおk
UIスレッド以外から追加したら落ちるだろJK
ズバリでした。ありがとうございます でも何故デバッグモードではうごくんですかね
偶々運がよかったから。 マルチスレッドでは良くある話。
372 :
デフォルトの名無しさん :2011/05/19(木) 01:02:51.96
Handlesで関連付けられるイベントを、コレクションで指定する方法はありますか? Private Sub Sample(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click をme.controls.Clickのようにしたいです
>>372 For Each C As Control In Me.Controls
AddHandler C.Click, AddressOf Hoge
Next
URLを指定して、そのページのソースコードを取得したいのですが、できますか?
余裕で
できました。
connectionはusingしてもちゃんとcloseしないといけないって 思い知った
Connection.Close()+アンマネージリソース解放=Connection.Dispose() だからDispose()した方が良いというのは聞いた事があるけど、 Close()もしないといけないというのは初耳だな。 どういう条件で困ったことになるのだろう?
381 :
378 :2011/05/20(金) 09:17:54.06
cloneでできました。ありがとうございました
>>379 のようになった事が無い
ちょっとkwsk頼む
場合によってはソフト書きなおしせにゃいかん
例えば5月分を読み込むのに10秒かかった そして4月分を読むと20秒かかる その後にまた5月分を読むと何故か20秒かかるようになる そして6月分はデータがないから1秒で終わる するとまた5月分読んでも10秒で終わるようになるww それがEndUsingの前でConnection.Closeすると直前に 何レコード読もうが5月分は10秒で終わるようになった ちなみにSQLServer2005EE+VB.net2005EE
.NET ReflectorでSqlConnectionのDispose確認したけど、中でCloseも呼び出しているじゃん
だからdisposeだのcloseだのしなくてもいいんですよってための usingでそ?
>>385 なんだけど、connectionは
>>379 ってことでしょ
俺も初めて聞いたわ
どっちなんだよw
だからusingしてればdisposeやcloseしなくてもいいけど 弊害はあるよと (少なくともcloseだけは明示的にした方がいいのでは?ってこと)
ログ出力用にファイルの書き出しメソッドつくってたとき usingだけだとすげー処理速度が落ちたことあって flashを入れてやったら速くなってなんだこれと思ったことあった。 usingを使わずcloseしてたら速くてusingだと遅かったから 意味不明だった。usingはまだ使うべきじゃないな
オカルトかよw 実際にDisposeとCloseは全く同じ
わたしゃーusingしててもCloseも書くお
それがいいのかも。
VBerって旧バージョンからこういう「おまじない」好きだよねw
VBはよく破棄しろ派とシステム側で回収するから無用派が常に争ってきた不毛の言語・・・
まあ複数の要素が絡むと、理由はハッキリしないがうまく流れるようになる事は偶にあるな。 .NETもデータベースも割と並行で色々やっているし。 だからと言って、Using使うときもClose必須とか馬鹿な事を言うつもりも無いが。
AフォームからBフォームを開いたときに値(string)を渡したいのですが、最適な方法を教えてください Bを開いたときにAは閉じます
396 :
デフォルトの名無しさん :2011/05/21(土) 22:18:06.81
長い文字列から文字列を抽出したいんだけど、どうすれば簡単ですか? 122ch345673ch89 この文字列から2chと3chの間の文字だけを取得したいです
>>395 BフォームにPublicプロパティを用意して、
Aを閉じる前に値を押し付けておく。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RichTextBox1.Select(0, 1) RichTextBox1.SelectionColor = Color.LimeGree End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Static a As Integer = 1 RichTextBox1.Text = "abcdefghijklmnopqrstuvwxyz" RichTextBox1.Select(0, a) RichTextBox1.SelectionColor = Color.LimeGreen RichTextBox1.Select(a, 1) RichTextBox1.SelectionColor = Color.DarkRed a += 1 End Sub こんな感じで文字が変化する度に見てる文字の色を変えて 一度見た文字はLimeGreenに変えるようにしたいんですが 2文字目で見てる文字以外全部がLimeGreenに変わってしまいます どうすればうまく行きますか?
>>398 見てる文字の色って何?日本語で頼む
Dim unko = RichTextBox1.Text.Length
RichTextBox1.Select(a, 1)
カンでこたえるとこういうことかね。
うおっと間違えた Dim unko = RichTextBox1.Text.Length RichTextBox1.Select(a, unko) こうだ
>>396 ここより正規表現スレのほうがいいと思う
たぶんここの人はそういうの考えるの苦手
vb.netだとregexpにパターン文字列で抜き出し
フォーム1からフォーム2をモーダレスでひらいてフォーム1を消したいんですが、どうにもうまくいきません 助けてください
>>400 見てる色はDarkRedになります
"abcdefghijklmnopqrstuvwxyz"という文字列なら
一回目はaがDarkRedに変わる
二回目はbがDarkRedに変わりaがLimeGreenに変わる
三回目はcがDarkRedに変わりaとbがLimeGreenに変わる
RichTextBox1.Text.Lengthでは後ろ全部が変わるので目的のものとは
違うようになってしまいます
>>403 フォーム1をCloseしたらアプリまで終了しちゃったとかいうおち?
なら、フォーム1をHideすればいいけど
>>404 だから日本語d
モニタの文字が読まれたことを自動識別しろってか?w
>>398 よくわからんが
何か文字を入れるたびにRichTextBox1.Textは"abcdefghijklmnopqrstuvwxyz"のままだけど、1文字ずつ色は変わっていってるよ
DarkRedの文字が選択状態になってるから、色が変わってないと思ってるだけじゃないの
カーソルずらしてみ
>>404 だから「見てる色」の意味がわかんねーんだよボケ
>>405 フォーム2を開いてフォーム1をHIDEしたのですが、フォーム2を×消しした場合にアプリを終了させるにはどうしたらいいでしょうか?
ひょっとしてフォーム1で dim f2 as new form2 f2.show とかしてる?そりゃーだめだ
>>409 アプリケーションフレームワーク頼りなら、
シャットダウンモードを「最後のフォームが閉じる時」に
しておけば良いんじゃないか?
フォーム1をCloseするように戻しておく必要はあるな。
文字列の改行を削除する場合ってどうすればいいんですか? Replace(str, vbNewLine, String.Empty) では削除されませんでした。
str = Replace(略
ReadToEndで取り込んでるからだめなんですかね?
>>412 改行は環境によって変わる
vbNewLineはvbCrLf(vbCrとvbLfの2文字)。
普通はそれでいけるはずだけどvbCrやvbLfだけの場合もある
str2=Replace(str, vbCr, String.Empty)
str3=Replace(str2, vblf, String.Empty)
とすれば多分大丈夫
それ以前にvbが全角なんだけどそれで詰まってるってことはないよね
まあ
>>416 のようにStringReader.ReadLineか、
テキストファイルならStreamReader.ReadLineに任せておいた方が、
改行コードの差異に頭を使わなくて済むから楽だな。
ReadLineで対応することにしました
420 :
デフォルトの名無しさん :2011/05/22(日) 14:52:40.69
これでStartTagとEndTagに囲まれた文字列をarrayに入れたいんですが、 うまくいきません。 どこがおかしいのでしょうか? Dim r As New System.Text.RegularExpressions.Regex( _ StartTag & "(.*?)" & EndTag) 'TextBox1.Text内で正規表現と一致する対象をすべて検索 Dim mc As System.Text.RegularExpressions.MatchCollection = r.Matches(src.ToString) Dim array As New ArrayList Dim i As Integer = 0 For Each m As System.Text.RegularExpressions.Match In mc array.Add(m.Groups(2).Value) i += 1 Next If array.Count = 0 Then array.Add(String.Empty) End If Return array
どううまくいかないのか どんな文字列を与えて、StartTagとEndTagはどんなのなのか Groups(2)?
>>420 array.Add(m.Groups(2).Value)
じゃなくて
array.Add(m.Value)
じゃないかい?
StartTagとEndTagが先後読みならValueでいけると思うがまぁ中身次第だな それにしても最近正規表現の質問多いな
同一質問者だろ 多分新入社員
425 :
デフォルトの名無しさん :2011/05/24(火) 20:23:13.79
質問です。 VB2008の通常のフォームでフォントをゴシックでサイズを11にしてデザインしています。 コンボボックスを貼ると高さが23でした。 DrawModeをOwnerDrawFixedに変更してItemHeightを35に変更しました。 テキストボックス部分がいい感じに太りました。 コンボボックスのDrawItemに e.DrawBackground() Dim brs As Brush = New SolidBrush(e.ForeColor) Dim txt As String = CType(sender, ComboBox).Items(e.Index).ToString() e.Graphics.DrawString(txt, e.Font, brs, e.Bounds.X, e.Bounds.Y) brs.Dispose() e.DrawFocusRectangle() と書きました。 フォームのロードイベントに ComboBox1.Items.Add("東京都" + vbCrLf + "新宿区") ComboBox1.Items.Add("神奈川県" + vbCrLf + "横浜市") と書きました。 これで実行してみるとリスト部分はきちんと改行されて表示されます。 しかし選択するとテキスト部分には改行が無視されて「東京都新宿区」と表示されます。 これをコピーしてメモ帳にペーストすると改行されて貼り付けられます。 テキストボックス部分の表示についてですが、 意図したとおりに改行されて表示されるようにするにはどうすればいいのでしょうか? よろしくお願いします。
言ってる意味がわからないんだけどMultiLineをFalseにしてるってこと?
つーかコンボボックスのテキストボックス部分ってマルチライン 対応してたっけ?
対応してない だからなんとかなるのか?ってことだと思うのだけど リスト部分ができるのならテキスト部分もできてほしいな
リストボックスに ぴんく あか ぶらっく とあって、それらを選択したときに フォームの色をそれらの色にするにはどんなコードを書けば
>>425 コンボボックスのDrawItemってリスト部分にしか対応してないよね?
テキストボックス部分をDrawItemでブラシセットして書くってできれば
解決だろうけど、できないよね?
コンボボックスを使わずにテキストボックスとリストボックスを 使って組み合わせればいいよ
VBプログラマーはどこで募集してるわけ?コンビニにあるタウンワークにのってない
VBしか使えない人はいりません
アイコンを自作するとき 32*32と64*64 どっちでつくってる?
64なんて使われることあったっけ 32,48の二つあれば十分じゃね?
>>431 コンボボックスにテキストボックスを重ねると完璧(笑
4月下旬からクライアントの依頼で作っているアプリがあります。 入力して保存して印刷してとベタなアプリですが もうすぐ完成というところまで来ました。 さっき知ったのですが、クライアントはOfficeを使用していなくて KingsoftのOfficeに似てるアプリでした。 今回のアプリはVBのフォームで入力して保存は テkシウトファイルだったりでいいのですが、 印刷についてはExcelを使用しています。 プログラムから予めあるExcelファイルのセルに値を入れて印刷する。 これ、 xlsファイルは問題なくKingSoftのアプリで動くようですけど 相手のPCにExcel入っていないと動作しないですか? 具体的には、開発のPCを同じ環境にしないと いけないと思うのですけど参照設定とか わりとOfficeっぽくできるものなのでしょうか?
Excelじゃないとだめ
NPOIを使えばExcelいらないよ
>>438 です。
>>439 ですよね。
ここに書いた後で営業と話していました。
Excelが入っているかKingsoftのが入っているか
どちらかで分岐して印刷のプログラムを分けようという話です。
調べると、そんなに大きくプログラムが変更になるようではないので
泣きながら書けそうです。
もし エクセルが入っているのなら
ほげほげエクセルバージョン
そうではなくてkingsoftのエクセルっぽいのが入っているのなら
ほげほげキングソフトバージョン
どっちも入っていないなら
ぬける
エンド イフ
こんなになるのでしょうけど
アプリがインストールされているかどうかってどうやってわかるのでしょう?
適当に開いてみてエラーなら入ってない。ってのはなんかセンス悪いですよね?
適当に書いたけどkingsoftのofficeってVBScriptから 制御できるのか。
直接adoもエクセル無いとダメだったっけ? …って印刷か…そら無理だなw xlsに書き出してエクセルビューアで印刷とかは?
どんなんでも出来れば良いんじゃねーの お金いっぱい貰ってるなら綺麗に作るけど それなりならそれなりの 安いなら安いつくりで
まぁ手抜きでやんならデータ取得のSQLをコマンドラインで丸投げして表計算ソフト側の内部で処理するかな・・・
VBと言うよりSQLになるのでスレチかもしれませんが質問があります RadioButtonの選択によりDateTimePickerに表示されている日付の当日・以前・以降で検索した結果を DateGridViewに表示しようとしています Table_A ID 日付 1 2 2011/04/30 3 2011/05/30 4 2011/06/30 上記テーブルでSQLを実行した場合 SELECT * FROM Table_A WHERE 日付 <= 2011/05/30 SELECT * FROM Table_A WHERE 日付 = 2011/05/30 上記二つのSQLコマンドだとどのレコードも表示されず SELECT * FROM Table_A WHERE 日付 >= 2011/05/30 これだとID 2〜4の3つのレコードが表示されます SELECT * FROM Table_A この場合は当然ですが全てのレコードが表示されます DataTimePickerの日付は DateTimePicker1.Valueの左10文字を抜き出しています こちらの意図としては一つ目のSELECTでは2011/05/30以前のレコード(ID2とID3)を 二つ目は当日のレコード(ID3) 3つ目は以降のレコード(ID3とID4)を表示させようとしているのですが何故意図した表示にならないのかわかりません データベースエンジンはJET4.0を使用しています
ACCESSぽいけど ためしに 日付 <= #2011/05/30# にしてみてはいかが?
448 :
446 :2011/06/01(水) 10:11:06.55
>>447 レスありがとうございます
書き込んだ後もう一度考えてみたんだけど、
もしかしたらDateTimeとしてではなく計算式として認識してるのかも・・・
だとすれば2011/05/30は13.406・・・になるので>=でしかヒットしないのと辻褄合うし。
最初日付を'で囲ったらエラーになったので'で囲むの止めたらエラー無く実行されて
そのまま上記コードを書いたんだけど囲まないと計算式と認識されてもおかしくないですよね
#で囲むのは試していないので帰ったら試してみたいと思います
449 :
446 :2011/06/01(水) 12:12:20.46
ただいま試してみた所 意図した通りに検索できました ありがとうございました
バイト配列に格納したバイナリデータで、あるオフセットから任意バイト数を1データとして取り出すにはどうすればいいでしょうか 0x01, 0x02, 0x03, 0x04... というデータがあったとして、0x02, 0x03を取り出して「515」として扱いたいのです
0x02 * 256 + 0x03 でいいじゃまいか
どうして0101みたなのがエロ画像になるの?
おまいがエロ画像と判断したから。
BitConverterだと3バイトとか中途半端なのが出来ないっぽいので
>>451 にしました
ありがとうございました
BitConverterあまり理解できてないです
458 :
デフォルトの名無しさん :2011/06/03(金) 20:33:12.22
質問です チェックボタンを押したあと、そのチェックボタンの有効をオフにする(押せないボタンにする)には、どのようなプログラムを加えればいいですか? 超初心者ですいません。
そのチェックボタン押した時に起こるイベントで、そのチェックボタンのEnableを偽にすればいい
460 :
デフォルトの名無しさん :2011/06/03(金) 21:23:42.13
ユーザーコントロール内のイベントハンドラについての質問です。 VB.NET2010でピクチャーボックスを使ったユーザーコントロールを作っております。 Boolean型のvalueというプロパティを追加し、このプロパティの値が変更されたときに 実行されるイベントによって、ピクチャーボックスの表示を切り替える仕様を検討しております。 しかしながらイベントハンドラとしてvaluechangedなどを利用することが出来ないので、 値の変化を監視することができず当惑しております。 どのようにすればこの問題を解決することができるでしょうか。 どうか御教示の程、宜しくお願い申し上げます。
プロパティのSet内で表示切り替えるだけだろ?
>>460 マジでプログラマ向いてないよ君。
さすがにその質問はない。
464 :
デフォルトの名無しさん :2011/06/03(金) 21:43:14.71
>>461 ごめんなさい、仰る処が難しくて理解できません
Contextmenustripchangedを使えばいいのかな、と考えたのですがそれもうまく行かず…
現在の形を活かす方向で考えて頂ければありがたいです。
>>462 ??
どういった点がプログラマの資質を欠くのでしょうか?
初学者につき、お気に召さない点等ありましたら後学のために改善致したく存じます。
>>464 馬鹿で怠惰なところ。
足し算が理解できないのに掛け算を教えろって言われても無理。
質問する前に本屋に行くべき。
>>464 プロパティにはGetとSetがあるということはわかりますか?
467 :
デフォルトの名無しさん :2011/06/03(金) 22:02:18.99
>>461 >>466 両氏のおかげでピーン!と来ました
足し算が理解できていないというのも納得ですね
有難うございました!
プログラミングて元々数学者がやるもんだから 科学者が理解して無くても何の問題も無いよ 仲間内の詳しい奴を引っ張り出して 自分は本業に精を出すべし。 趣味でやるだけならそれこそ適当でも良い が、その適当なものを広めたり引き継ぐのは止めてくれよw
DataGridViewについて質問ですが V_Table = DataGridView1.DataSource V_Row = V_Table.Rows(DataGridView1.CurrentRow.Index) Select_ID = V_Row("ID") 上記でSelect_IDに代入されたID番号で編集するレコードを識別しています DataGridView1は必ず1レコードしか選択できない様になっています 通常なら選択したレコードのみ編集画面に表示されて正常に機能しているのですが DataGridView1のカラムヘッダをクリックしてソートした場合選択しているレコードではなく ソートされる前のレコードが編集画面に表示されてしまいます。 どうやらソートされているかどうかに関らず選択行が1行目ならソート前の1行目(ID1)が選択されています ソートしても選択しているレコードを識別する方法はありませんか?
>>469 Indexプロパティは、常に行番号を表しているわけではない。
何か色々ややこしい話があるので、詳細はMSDNを参照。
この場合は、CurrentRowそのものを使うのが多分正解かと。
BindingSource使って編集画面の方もバインディングしてしまえば 悩む必要もないような気がしないでもない DataTableがバインドされた場合、実際にソースになるのはDataTable.DefaultViewが返すDataView こっちのDataViewがソートとか管理してて、DataGridViewの表示行とも一致する
472 :
469 :2011/06/07(火) 10:56:54.77
CurrentRowから直接IDを取得する事で正常に動作する様になりました
>>470 ,471アドバイスありがとうございました
すみませんがわかる方いましたら教えてください アンマネージメモリっていうのはガベージコレクション(GC)で管理されないメモリっていうことで GCとは参照されなくなったオブジェクトを自動的に回収し解放する機能で とどのつまり、明示的な解放処理が必要なメモリって事でいいのでしょうか? Marshal.Copyを使用しようと思ったのですが専門用語が多すぎて・・・ どうかよろしくお願いします
>>473 大体あってる
解放し損ねると当然メモリリーク起こす
475 :
473 :2011/06/09(木) 13:28:08.52
>>474 本当にありがとうございます
初級−中級用の書籍でさえまわりくど言い方しか記載されてなかったので
助かりました。
政治家の説明といい勝負だと感じましたよmsdn
いい書籍ないかなぁ・・・
いやそれ、普通説明されなくてもだいたい分かると思うよ....
MSの開発者向けドキュメントは一番マシだ Javaとかやってたら神に見える
>>476 スミマセン、理解力が乏しいんです
>>477 そうなんですか?Javaもわかりづらいのですか・・・
日本語訳がわかりづらいのは確かだが、情報があるだけマシ メソッド一つにいちいちサンプルコードとか他ではまずありえない
480 :
デフォルトの名無しさん :2011/06/10(金) 00:21:11.02
最近vb.netを始めた初心者です。 現在アドインして使用するシステムを作っているのですが、 解からないことがあるので、ご指南お願いします。 作っているシステムは、「ソースエディタ上で選択している範囲をコメントアウトする」 というものなのですが、選択している範囲の取得方法がわかりません・・。 vb6ならば、ActiveCodepane.Module.getsettingみたいなものを使用し、 選択された開始行と列、終了行と列を取得する方法が書いてあったのですが、 vb.netではこれに変わる機能はないのでしょうか? よろしくお願いします。
MSオフィスみたいにマクロ記録できるでしょ
>>480 > 作っているシステムは、「ソースエディタ上で選択している範囲をコメントアウトする」
これ標準装備されてるよ
というツッコミはダメ?
483 :
デフォルトの名無しさん :2011/06/10(金) 03:10:27.64
480です。 すみません書き間違えてました・・。 選択している範囲を新しく生成(コピー)して、 片方をコメントアウトするということです。 その時に、コメントアウトした日付や、おおまかな修正内容をラジオボタンなどで選択し、 修正した履歴を見れるようにする機能を作ろうとしています。
ああそれは俺も知りたい VBAならIDE呼び出してコード加工が簡単に出来るんだよな
VS2010ならCOM使わずにMEFでマネージコードから拡張できる(アドインじゃなくて拡張機能と呼ぶ) 古いバージョンならCOMでEnvDTEとかなんとか
GroupBoxにチェックのついたようなコントロールって 自作しかないよね? あってもいいと思うんだけどなぁ
それ、Win7と同時にMSが出したUIデザインのガイドラインの「やってはいけない」 リストに入っている。 っていうか、枠の上にチェックボックス置くだけじゃん。 自作ってw
>>487 いや、おれもチェックボックス付グループボックスないのかよー
自作しないといけないのかめんどくせーなーって思ったよ
しばらくして、よく考えたら「枠の上にチェックボックス置くだけじゃん」
って気づいたけどねw
こんなふうに簡単な事を難しく考えてる時って意外とあるでしょ
ロールプレイングツクールでパチンコはつくれるでしょうか?
スレチ
>>487 やってはいけないリストっての見てみたい。
というかグループボックスにチェックボックスなんて
普通にありそうだけど?
VB.NET 2008のWebBrowserコントロールを用いた、 XPおよび7で動作するWebブラウザソフトの作成について質問です。 読み込んだページに書かれた<a href="hoge.org">や、 javascriptのwindow.open関数によって、別のブラウザが 開いてしまうのを抑止し、現在実行中のWebBrowserコントロールの オブジェクトを用いてリンク先ページを表示したいのですが、 可能でしょうか? ちなみにWebBrowserコントロールで実現不可能であれば、 AxWebBrowserコントロールでも大丈夫です。
何回かここで質問した者なのですが 皆さんなんだかんだ言いながら親切に回答してくれるので 凄く助かりました プロジェクトも終わりまして無事納品することができました 皆様方のお陰です 本当にありがとうございました<(_ _)>
>>494 ありがとうございます。
このコードは新規タブに表示していますが、同一ウィンドウに
表示させることはやはり不可能ということでしょうか?
>>495 ふだんから一言多いとか言われない?
それともわざと?
498 :
496 :2011/06/14(火) 18:21:00.81
なんとかタブブラウザ化できました。 ありがとうございます。
499 :
デフォルトの名無しさん :2011/06/15(水) 04:48:00.83
こんにちは! VB.NET 2008でserialportについて質問です。 プロッターに文字列を送信するプログラムをつくったのですが、プロッターの電源が入っているときには問題ないのですが 電源OFF時に文字列を送信するとプログラムが応答しなくなってしまいます。 電源をいれとけばいいのですがこう言った場合のエラー処理はどんなかんじにすればいいのでしょうか? ソースはこんな感じです --- Try sPortName = cbPortName.Text SerialPort1.PortName = sPortName 'open serial port SerialPort1.Open() SerialPort1.Write(data) ←ここでプログラムがとまってる。 Catch ex As Exception MessageBox.Show("Unable to open serial port") End Try ---- 例えば無効なCOMポートを指定すると例外が発生してメッセージボックスを表示してくれるので機器がOFFだった場合も例外が 発生するといいのですがそういうことは可能でしょうか?
固定長のCと可変長のVはそれぞれどんな単語の略?
タイムアウトを設定すればいいのでは?
>>499 WriteTimeoutに適当な値を設定すればいい
>>499 シリアル通信の詳細は忘れたが
相手機器の状態はキャリアとかDSRだかDTRだかの状態見るのが王道じゃなかったかと
同期IOじゃないんだからそもそも
>>499 がいうような箇所で止まる訳が無い。
アホ丸出し過ぎる
そりゃ同期I/Oだし。
506 :
499 :2011/06/16(木) 03:33:22.85
ありがとうございます。
>>501 ,502
WriteTimeoutが-1になってたのを500とかにしたらちゃんと例外発生するようになりました。
>>503 通信条件のハンドシェイクがハードウェアなんですが、DSRだかDTRを使うと同期しながら送信できるようになるのでしょうか?
小さいデータを送る分には問題ないのですが、ちょっと大きなデータを送ると挙動が変になります。
SerialPort1のプロパティのDtrEnableをTrueにしとけばコード書くときには特に意識しなくていいんですかね?
それともSerialPort1.Write(data)する前に送信可能かどうかのコードが必要になるんでしょうか?
見当違いなこと質問してたらすみません。
>>504-505 お前ら、どのレイヤーでどういう意味で同期、非同期っていってるんだ?
>>506 データ送る前に見るのはRTSだかCTSだかだったはず
フレームワーク内でどこまで制御してくれてるかわからんが
とりあえずRS-232Cあたりでググって勉強してくれ
そんな通信PC98時代までなんだが 今はUSB接続が主流
509 :
499 :2011/06/16(木) 05:10:51.59
>>507 ぐぐってみたけど.NETでハンドシェイクの処理してるのみつからないんですよね。
フレームワーク内で制御してるからサンプルないのかしら?
もう少しぐぐってみます。
>>508 USB接続なんですが何故かシリアルなんですよ。
電話のフックをOFFにしたら何故音が鳴っているのかを知らない世代か… もし鳴ってなかったらどういう状態か分かるだろ
まだまだFAだとシリアルもおおいよ サーボとかインバータが超盛りだくさんだとノイズの恐怖に悩まされる可能性もあるけど
質問です VB.NET 2008 PC側で ActiveSyncやWindows Mobile デバイス センターの 同期フォルダ名とパスを取得はどのようにしたよいのでしょうか?
同期I/Oの意味も分からん奴が偉そうに回答してるのかよ。
>>513 お前だって知らないことあるだろう
そんな奴が偉そうにとかいう時点で目くそ鼻くそだろう
VB6だと、デバッグ中アクティブなフォームの名前がプロジェクトエクスプローラーで強調表示されてたけど、 Netだとならないの? 今開いてるフォームがなんなのか知りたいだけなんじゃよ…
オブジェクトエクスプローラのツリーが選択されてるぽくない?
517 :
デフォルトの名無しさん :2011/06/18(土) 00:51:54.39
>>468 >プログラミングて元々数学者がやるもんだから
数学者くらいプログラミングを愛しながらも
それが好きじゃない人々は珍しいくらい
518 :
デフォルトの名無しさん :2011/06/18(土) 20:00:56.76
VB.NET 2010で質問です レジストリの壁紙の設定を変更しようとしているのですが、 下記のような処理では例外が発生してレジストリが書き変わりません。 何が悪いのでしょうか? VB初心者でかれこれ丸2日悩んでます。 ちなみにプログラムは管理者権限で実行しています。 Dim keyname As String keyname = "Control Panel\desktop" Try Dim regkey As Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.Users.CreateSubKey(keyname) regkey.SetValue("WallPaper", "C:\aaa.jpg") regkey.Close() Catch ex As Exception End Try
>>519 regkey = Microsoft.Win32.Registry.Users.CreateSubKey(keyname)
を実行すると
'System.IO.IOException' の初回例外が mscorlib.dll で発生しました。
とメッセージが出てきます。
>>521 ありがとうございます!
参考にしてみます!
VB.NET2008なのですが、親フォームから子フォームを呼び出し、 子フォーム内でwebbrowserオブジェクトを利用しています。 子フォームは頻繁に起動と終了を繰り返させているのですが、 時間が経つにつれ、使用メモリがかなりの勢いで増大していきます。 最初に起動したときが5MB程度なのに対して、数時間後には 子フォームが起動していない状態でも50MB程度に達しています。 呼び出し方は以下のようにしていて、親フォームではwebbrowserを利用していません。 Dim f = New Form1("popopo") If f.ShowDialog() = Windows.Forms.DialogResult.OK Then f.Dispose() ※デバッグでみる限り、必ずここは通っているようです。 End If 子フォームが終了する際、webbrowserオブジェクトは明示的に解放していないのですが、 明示的に解放すべきなのでしょうか。
GC.Collect()でも入れてみたら 関係ないけどDisposeとか書くなよ Using使いましょう
usingなんか一時使用のオブジェクトにしか使えんだろう。
そんな程度の知識で偉そうに説教かよ。
>>523 一度"メモリー使用量"とかのキーワードで検索した方がいいのでは?
っていうか、たった50MBてw
それくらい知ってるけどいい加減な書き方だったのは認める
>>523 のコードに限っては単にDisposeを呼ぶだけは間違い
UsingかFinally使う
例外処理の必要性でも説けばいいのに、 やっぱり偉そうに中途半端なレスをしてしまうんだね。
俺用メモ Form.ShowはClose時に即Disposeされ再度Showする事はできないが、 Form.ShowDialogは閉じても非表示にされるだけなので、 GCで対象Formが回収されるまでDisposeされる事は無い。 何でわざわざDisposeかと思ったら、こういう話があったのな。
初めてShowDialogを使う時に知る
つか毎回NewしてDisposeする必要あるか検討した方がいいんじゃね
Visual Studio (Expressを含む)でFormにWebBrowserを貼り付けてみたのだが、 FormをDisposeしてもWebBrowserをDisposeする設定にはなっていない。 FormClosedイベントにDisposeする設定する必要があるんじゃないかい?
ControlsにAddされてるのは親がDisposeされるとき一緒にDisposeされる もちろん途中でRemoveしたのはちゃんとDisposeした方が良いがね、タブブラウザとか
Form1.Desiner.vbを確認すると、controlsにAddされてないんだよねこれ。 コンポーネントによってaddされるのとされないのがあるのだが、VSの基準が分からん。
>>533 System.Windows.Forms.WebBrowserがか?
うちのVS2008で見る限りはちゃんと追加されてるが?
535 :
523 :2011/06/19(日) 22:09:13.97
いろいろありがとうございます。 子フォームは10個くらいあって、同時に呼び出さない前提です。 なので、new form1 => showdialog => disposeにすれば showdialogで止まってて他の処理は起動されないだろうと思って 作成してます。 flashのアップデートを行ったとき、IEとこのアプリケーションが 立ち上がっているので、更新できない。というメッセージが出てたので、 子フォームで利用しているwebbrowserがdisposeされていないってことですよね? Dim WithEvents WebBrowser1 As ExWebBrowser Me.WebBrowser1 = New ExWebBrowser mytab = New TabPage mytab.Controls.Add(WebBrowser1) 子フォームでme.close()としたときのcloseイベント内でこのmytab.control内の webbrowserオブジェクトを明示的に破棄すれば、子フォームが起動していない ときはwebbrowserを利用していないことになるのでしょうか。
知らん きちんと後片付けしてくれるかどうかはWebBrowserやIEの実装依存だろ そんなに気になるなら別プロセスで動かせば? Flashつかったりするならブラウザがクラッシュしてアプリが巻き添えになって逝く可能性も高いからその方が安心じゃないの
.net初心者です。 わからない事があるので助けてください。。 アクティブなソースエディタ上の10行目にある文字列を、 テキストボックスに入れたい場合、どのようにすればいいのでしょうか。 行数を指定して文字列を返す方法がわかりません。 どのようにすれば良いのでしょうか?
ソースエディタって何?
540 :
537 :2011/06/21(火) 08:51:16.98
>>539 ソースを書いていくところのつもりです。
>>538 splitでソース全体を改行?で配列に入れていくということですか?
普通はそんなことしないし、しなくても普通のアプリケーションは作れるんだわ なんでそんなことをする必要があるかを説明してくれれば代わりの方法を教えられると思う
どこのスレでもそうだが質問に対してアドバイスではなくやりかたを完全否定し
結局答えを教えない連中が多いのはどうかと思う
しかしさすがにソースエディタの内容をプログラム上から取得する必要性が理解できない
>>541 の言うとおりなにがしたいのかを書いた方が解決策も出てくると思う
emacsかviでも使えよ
っていうか、VBはコンパイル言語なんだからバイナリになった時点で ソースコードなんかバイナリからアクセスできるわけないじゃん。 馬鹿じゃなかろうか
何をやりたいか聞かんとな もしかしらたVSのアドインとか作りたいのかもしれん
× 何をやりたいか聞かんとな ○ 何をやりたいか書かんとな
え、ソースエディターて VBEのこと言ってるの?
.NETはメモ帳でUTF8で書けばええんだよ
550 :
537 :2011/06/21(火) 22:23:57.96
>>546 546さんの言うとおり、アドインして使えるシステムを作っていました。
ソースから指定文字で始まる文字列を取得したかったのです・・
split関数を使用し、その後にLEFT関数的な物を用いることで問題解決できました。
有難うございましたm(__)m
552 :
デフォルトの名無しさん :2011/06/22(水) 00:21:51.59
いや
>>546 の言うアドインとは全然違うだろw
ソースから取ってくる必要は全く無いし、たぶん
>>550 が言ってるソースというのは
ただのテキスト
553 :
552 :2011/06/22(水) 00:24:16.17
いやよく読んだらVSのアドイン的なものか すまん
統合環境使わないでviしてる人多いのだろうか
FAなんかの監視システム作るならJavaの方が良いのかな? 受け取った複数の数値だけをリアルタイムに更新できれば良いんですが、 .netでIDE使うと簡単にこういう逐次データを楽にテキストボックスにバインドできちゃったりするのでしょうか?
でもPLCのドライバとかライブラリがない場合、プロセス間通信は仕様見て自作なんすかね。
557 :
デフォルトの名無しさん :2011/06/28(火) 22:43:29.51
買い物かごに入れるボタン(btnAdd)を押したとき、ComboBox1に表示されている項目(ニンジン、かぼちゃ、キャベツ)を、 ListBox1に追加するにはどうすればいいのでしょうか。その時のプログラムコードを教えていただきたいです。 Pribvate Sub btnAdd_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles.btnAdd.Click End Sub
宿題スレ池
間違って投稿してしもた C#で観測システムとか工場の制御やってるけど言語は特に何でもいいと思う VB6でもJAVAでも 基本的な通信手段はソケットもしくは232Cになるだろうから その部分の知識とテクがあれば十分だとおもう (まぁVB6はマルチスレッドが微妙なのでおいとくとして) PLC通信なんかは必ずPLCのメーカのマニュアルに記載があるから それで十分 受け取った複数の値という部分は 連続したアドレスに書き込まれているようなら 一気に抜き出すことが出来るから問題なし
Arduinoがいい
同意 RS232C機器のお守りくらいのことでパソコンなんて置くモンじゃない
MDIの制御で質問です。 WIN32APIでWM_MDINEXTをSendMessageすると 次のMDI子ウィンドウをアクティブにできますが、 同じことを .NETで実現するにはどうすればいいのでしょうか? 環境はVS2010 + .NET Framework 4.0です
>>563 - アクティブなMDI子はActiveMdiChildで取得できる
- MDI子の配列はMdiChildren で取得できる
これで分からなければプログラマ辞めた方がいい。
MDI子たんかわいいよおおおお
566 :
デフォルトの名無しさん :2011/06/29(水) 21:27:59.09
ListBox1にキャベツ、キャベツ、ニンジンが入っており、それを返品する(btnDel) とプログラムコードはどのように以下続くのでしょうか。教えていただきたいです。 Private.Sub btnDel_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btnDel.Click End Sub
>>566 返品とか言われても何すればいいのかわからん
ListBoxで選択してbtnDelクリックにてListBoxから選択されたものを削除(返品)するってことなんかい
Dim index As Integer = Me.ListBox1.SelectedIndex
If index <> -1 Then
Me.ListBox1.Items.RemoveAt(index)
End If
>>561 これってPCの代わりになるの?
よくわからんけど、モニタリングというよりも開発用途じゃないの?
プロセス間についてまとめてあるところはないでしょうか? 昔、perlでやったことはあります。
>>568 シリアルで入力した数値なりを7セグLEDで表示するくらいなら
Arduinoでも余裕のよっちゃん
.NET Micro Framework
VS2010 + .NET Framework 4.0で、DataRepeater 使おうとしてます。 データを表示することはできたのですが、 スクロールさせるとNullのはずがまったく関係ない値が表示されることがあります。 スクロールされて表示されなくなった行にあるコントロールは、 別の行の表示のために再利用されるってところまでは調べたんですが、 肝心の回避する方法がわかりません。 どうしたらNullの項目をNull(空文字列でも可)で表示させることができますか?
DataRepeaterとか使わないほうがいい
そのココロは?
俺が使ったことないから
バイナリで指定した値から指定した値までのデータを別ファイルに保存したい FC FC FC FC 00 00 33 33 77 77 77 77 77 88 88 88 44 44 44 44 44 44 44 44 55 55 55 55 55 55 00 00 FC FC FC FC 00 00 33 33 44 55 77 66 77 00 88 88 FC FC FC FC 00 00 33 33 77 22 77 77 22 33 99 88 こんなデータがあったとしたら 「FC FC FC FC」から「FC FC FC FC」までを抜き取って ファイル1に FC FC FC FC 00 00 33 33 77 77 77 77 77 88 88 88 44 44 44 44 44 44 44 44 55 55 55 55 55 55 00 00 ファイル2に FC FC FC FC 00 00 33 33 44 55 77 66 77 00 88 88 ファイル3は「FC FC FC FC」から最後まで FC FC FC FC 00 00 33 33 77 22 77 77 22 33 99 88 と保存したいのですが、どうすれば良いですかね? どこかに良い解説サイトないですかね。
超簡単
>>578 まだちゃんとよく読んでないけどありがとう
読んでからレスしろよw
>>578 ファイルを少しずつ読み込む
の所を改変すれば何とかなりそうです
ありがとうございました。
>>580 お礼は早い方が良いかと思いまして
一気に読めばいいよ
とりあえずテストして動いてから礼を言えよw
Byte処理とか初めてでわからない事だらけで エラー出つつもテコテコできてます。
585 :
576 :2011/06/30(木) 16:04:31.78
もうひとつだけ質問させてください。 System.IO.File.WriteAllBytesを使ってファイルを作成したのですが ファイルが FC FC FC FC 00 00 33 33 77 77 77 77 77 88 88 88 44 44 44 44 44 44 44 44 55 55 55 55 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 という風に、空いたスペースに挿入されてしまいます。 この場合だと32バイトだけで良いのですが、 そういう指定はできないのでしょうか?
586 :
576 :2011/06/30(木) 17:02:15.52
自己解決しました。 System.IO.File.WriteAllBytesでファイルを出力する前に 配列のサイズを変更して空配列を無くしたらうまくいきました。
それでもいいけど普通はこうする Using fs As New FileStream("filepath", FileMode.Create) fs.Write(bytes, 0, count) ' countに書き込みたい長さを指定 End Using
for (int i = 0; i < 100; i++) みたいに、Forループの中だけ有効になるようにiを宣言することってできますか?
個別にSUB作ってその中で処理しちゃうのはどうかな
VB.netでバイナリファイルを読み込んで切り出したいのですが、 特定のデータを加工できるように、配列でアクセスできるようにしたいのです。 しかし、バイト型の配列にそのまま放り込むと、途中からデータが変になります。 もしかして、別の型が正しいのでしょうか?
そんなはずはない
>>588 VBのForループじゃダメけ?
あれもループ内限定の変数作れるけど
For i1 as Integer = 0 To 100
' i1のスコープはループ内のみ
Next
継承とかクラスの使い方、作り方がいまいちわかりません。 オブジェクト志向ならJavaの本でも読んだほうがいいですかね。
VB.Netのいい本って中々無いもんね。俺もいい本有ったら知りたいくらい。 同じ.Netフレームワークってことで、何となく似てるC#の本で勉強してるけど、 デザインパターンの本はJavaのコードが載ってるのを買ったわ。
ユーザに強制終了できないアプリケーションを作成しようとしています。 タスクマネージャのプロセス強制終了が不可であればOKです。 process ACLのAPIを使うなどを検討中ですが実現できていません。 何か良い方法があれば、もしくは参考サイトなどあれば教えてください。
やめろ
WM_QUERYENDSESSION
そういうのマジ勘弁してくれ ウィルスでも作成する気かよ
> ユーザに強制終了できない ちょっとワロタ
aclってあるからユーザっていうのが限定ユーザーという想像で答えると processACLの観点であってる。 PROCESS_TERMINATEを外す形でいいのでは? 短絡的にウイルスだなんだのいってるのは、そういった要件を経験したことのない 素人さんでしょ
そうだよなオラオラ系の兄ちゃんが出刃とバールとハンマー買い込んでても下衆な想像を働かせてはいけないよな。
そういった要件のあるプログラムを ここで質問するようなプログラマや組織に頼むのは嫌だな、俺なら
限定ユーザーをユーザーとしか書けないプログラマに作られるのが嫌だな、俺は。
C# スレで質問したのですが誰からも回答をいただけませんでしたので こちらにて再度質問させて下さい。 (Windowsアプリの作成時の質問です) GridViewに次の様に連番があるとします。 数が多いので指定した数値に該当する行をGridView内で上下中央に スライドさせたいのですがどうすれば良いでしょうか? 社員番号 1 2 3 〜 略 〜 1000 番号で 550 と入力しスクロールを実行すると 550番が中央に来る様にしたいです。 賢人の皆様、お知恵を拝借下さい。
ModbusとかOLEの開発やってる人いないすかね? オープンソースとかないかな…。
>>606 時間差で某スレでも教えていただきました。
ありがとうございます!!
609 :
デフォルトの名無しさん :2011/07/10(日) 16:51:11.76
If product Like filter then Like演算子のあとの、filterとは一体なんのことですか?
>>609 哲学論争でもしたいわけ?
MSDNライブラリのlike演算子の項を見て分からなければプログラマなんか辞めてしまえよ。
というか、like演算子の様なVB6の遺産は使わない方がいい。
そんなものより正規表現を覚えた方が潰しが利く。
俺正規表現は楽に使えるが、SQLがいまいち面倒
すいません、ieHTTPHeadersっていう IEの通信内容を確認するアドインで取得できるような HTMLソースだけでは把握できないデータを取得したいのですが これってVB.netでどういう感じにつくればいいのでしょうか? 2時間ほど検索して探し回っているのですがいっこうにみつからないのです
>>614 すべてソケット通信ではソースが少し見難くなったり等あるので
IEコントロールでテキスト等にセットした後
HTTPクッキーを取得したいわけなんです
ソケット弄り出すとスレッドだらけになるもんなぁ
これバイトオーダー修正したり、バイトシフトしたり、 みたいなのはもしかしてやりにくい?
これってなに?
そりゃ勿論VB.net。 リトルエンディアンでbyteやinteger配列で処理できないような バイナリファイルはどうすりゃいいんだろ? そこだけC++でDLL作ったりすればいいのかな。
VBがビット演算できるかどうか調べられないようなスキルなのに、 DLLを作ってどうこうとか、2chってこういうアンバランスな感じの人を よく見るね。
バイトオーダー変換は、System.Net.IPAddressのメソッドが定番じゃね? 自由に制御したければ、BitConverterに好きに並び替えたバイト配列を突っ込めば良い。
>>620 VBってシフトとかできたっけ?
.netじゃなくてVBね。
つ ビットシフト演算子
>>622 ありがとうございます。
確かに昨日ぐぐった時、それ見た覚えがありますわ。
ほんとは配布が楽なExcel VBAで考えてたので、ついスルーしてました。
荒れてるな
>>623 質問者はVB.NETについて質問してるのに、VB6でできるかどうかってなにか関係あるの?
VBがビット演算できるかどうか調べられないようなスキルなのに、 DLLを作ってどうこうとか、2chってこういうアンバランスな感じの人を よく見るね。
>>628 アスペの人には理解が難しいかもしれないけど
vb.netの話題のときに断りなくvbといったらvb.netのことなんですよ。
ビット演算なんか自作すればいいじゃん
VBScriptではできるのに、VBAではできないんだな。
VB6用のスレあるしな と、思っていたら無くなっていたでゴザル、の巻
VB6もここに統合で良いですか? 以後は紛らわしいので自分のミスをオレ流ロジックで誤魔化さないようにしてくださいね。
話がかみ合ってないから何で荒れてるかよくわからない。
バイトオーダー リトルエンディアン とか言ってみたかっただけ
このスレの連中=専門卒VBプログラマーはコンピュータの基礎を知らないからなあ。 PHPerみたいなもんだな。 どうせ誰でも作れるDBアプリをコピペして作ってるだけだろ?
>>622 お前一番わかってそうだな。
他はゴミ屑くさい。
全く停滞しきっているのでここで質問させてくれ。 というか、もう他にVB6扱ってるスレがないもんで……。 質問概要: 英語版VB6.0で、Shift_jis混じりのファイルを読み、表示させる手段について 環境: Win2K〜Win7(NT系のみ。98系は考慮しない)の「英語版」。 Visual Basic6.0も「英語版」。 現状: 英語環境で日本語表示させる事は問題無いけれども、shift_jisで作成した テキストファイルを読み込ませると、文字が化けて認識される。 (日本語入力可能なグリッドに表示させると文字化けしている) VB6全盛の頃に、こんなときどうするというのが紹介されていた覚えがあるのだけど、 今になってググってみても全然ヒットしなくて困ってる。 作業自体は英語圏の人が行うため英語の技術文書でも全く問題ないので、 問題解決に資する資料を教えてください。
ADODB.Streamで
>>643 VB6スレって消滅したのか。
もう10年近く触ってないので適当だけど、恐らくバイナリとして読んでStrConvで
文字列に変換すればOK。
ドキュメントされてないがStrConvは引数にバイト配列を取れたはず。
あれ、今スレ一覧みたら普通にVB6スレ存在するじゃねえかw
スレタイが紛らわしいんだよな 「VB6プログラマ質問スレ」か「VBプログラマ質問スレ(VB6まで)」で良いだろ 「VB6」で検索して出てくるようにしろ
「VBはビット演算がどうこう」って書いた奴に 「VBにビット演算子ってありました? VBって書いたらVB.NETじゃないよ」とか バカっぽい揚げ足取りで暴れたやつがいただけなのに、そんなに話を膨らます ことはない。
もうこの話はやめて どっと楽しいこと考えようぜ
>>651 おまえはさっさとVB6にコンバージョンして来い
疲れがどっとコム
VBと書いたら.netのことです(キリッ
>>643 スレ違いの質問するだけしてトンズラっていい根性してるな
わからないなら煽らずにわかりませんって言えよ
StrConv使えって書いてあるだろお馬鹿さん
VBnet2010で質問です 時計を作っているんですが漢数字表示の時計を 作りたいと思っています。下記の通りです。 例「二十三時十三分零零秒」0も零に 時分秒は出たのですが、漢数字が出ないので どなたかご教授お願いします
replaceすれば?
>>659 漢数字に置き換えるメソッドを作ってそれを使えば良いのでは?
East Asia Numeric Formatting Library
ほぼ丸投げなのに、多少は自分でできるような口ぶりがいいよね。
そうでもしなきゃ生き残れないのさ
>>660-661 様ありがとうございます。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = Now.Hour & "時"
If Now.Minute < 10 Then
Label1.Text &= "0"
End If
Label1.Text &= Now.Minute & "分"
If Now.Second < 10 Then
Label1.Text &= "0"
End If
Label1.Text &= Now.Second & "秒"
If Now.Minute < 10 Then
Label1.Text &= ""
End If
End Sub
上記の通りだと、時分秒が漢字で出るのですが数字の方が漢数字に
変換できません、どなたかご教授お願い致します
Dim tbl = New String() {...} '0〜59に対応した漢数字テーブル Dim s = DateTime.Now.ToString("HH時mm分ss秒") s = Regex.Replace(s, "[0-9]+", Function(m) Return tbl(CInt(m.Value))) 多少力技だけど、時分秒位ならこれで十分じゃね?
<丶`∀´>(´・ω・`)(`ハ´ )
インスタンスがどんなインターフェースを備えているかを返すGetInterfaceというメソッドがあるが この逆で、そのインターフェースを持っているインスタンスを返すメソッドはありませんか? インスタンス->インターフェース変数->インスタンス という感じでクラス間で交換したいのです。
670 :
デフォルトの名無しさん :2011/07/20(水) 22:23:08.86
MEF使ってDIやれば
関数(゙name゙)とかにすると、nameを下位に持つ呪文一覧教えて欲しいけどそんな便利な関数ないよね? って意味じゃね
VB.net使ったパッケージ製品てあるのかな。 .netフレームワークを別途入れるのはださいが。
675 :
デフォルトの名無しさん :2011/07/21(木) 20:44:05.01
>>674 Visual Studio(2010)はC#製だよ
676 :
デフォルトの名無しさん :2011/07/22(金) 16:07:11.53
vb2010でusbカメラを使った静止画キャプチャをやってるんだが 完全に詰まってしまった、 M.Oshikiriのホームページ見ながら、動画の表示まではできた、 しかし、Bitmap画像取得を始めたらエラーはでないがデバッガ時に ”vshost32.exeは停止しました。”というメッセージが出てフリーズしてしまう。 ビットマップ取得の bz.GetCurrentImage(sz * 4, img(0))が原因のようだが、 もう何が何だか。 どうか神様お助けください。
どのライブラリを使ってるかわからんが、サイズが合って無いんじゃないか?
678 :
デフォルトの名無しさん :2011/07/22(金) 16:45:03.62
>>677 ありがとうございます。
GetCurrentImageの引数が原因かもってことですか?
一応ビットマップ抽出は↓のようなソースでやってます。
ここはM.OshikiriさんのDirectShow関係ってページにあったソースそのままです。
'ビデオの情報を取得
Dim bv As QuartzTypeLib.IBasicVideo
Dim vx As Long, vy As Long
Set bv = mGrp
bv.GetVideoSize vx, vy
'グラフを一時停止させる
mGrp.Pause
'ビットマップ読み込み
Dim sz As Long
Dim img() As Long
sz = vx * vy + 10
ReDim img(sz - 1)
bv.GetCurrentImage sz * 4, img(0)
OpenCVのほうがいいのに
DirectShowはわからんが、ざっと見た感じだと
imgのサイズがsz-1なのに、GetCurrentImageの第一引数(バッファサイズ)でsz*4と4倍してるのがよーわからん
IBasicVideoについては、ここでも解説してるな
http://www.geekpage.jp/programming/directshow/getcurrentimage.php > バッファサイズを取得するために第二引数をNULLで渡します。
> 第二引数がNULLの場合、第一引数に必要なバッファサイズが
> 格納されて返されます。
って書いてあるし、一度nullを渡してバッファサイズを確認してみたらどうだろうか?
ただ、画像キャプチャならOpenCVのほうがずっと楽だな
DirectShowの.NETはMSすら投げだすくらいだし、OpenCVで作り直しといたほうが後々楽
てか、俺がDirectShowラッパー使おうとして挫折したwww
681 :
デフォルトの名無しさん :2011/07/22(金) 18:26:28.44
>>679 ググってみましたが、たしかに簡単そうですね。
それに今回やりたいことくらいはクリアできそうです。
う〜ん迷うなぁ、ありがとうございました。
>>680 やっぱvbでDirectShowは大変なんですかね。
4倍するのはバイトだからだとか…
されに言うとProcessingなら10秒でできるし
683 :
デフォルトの名無しさん :2011/07/22(金) 19:07:48.93
>>682 調べてみたら、本当に簡単そうでした。
ありがとうございます。遊んでみようと思います。
vbスレですけど、vbじゃやめとけってことですかね。
みなさんありがとうございました。
684 :
デフォルトの名無しさん :2011/07/22(金) 19:50:54.25
Form2にあるTextBoxに書かれてある内容をForm1のTextBoxに表示したいのですがうまくいきません。 逆はできるのですが、何か特別記述しなければならないことがあるんでしょうか?
Form1とForm2の名前を交換すれば良いよ。
>>681 >4倍するのはバイトだからだとか…
ちょっと待てw
689 :
デフォルトの名無しさん :2011/07/26(火) 20:17:47.60
散々既出なのかもしれんが、ちょいと教えて欲しい。 Sytem.Windows.Forms.FontDialog使ってて、うっかりAdobe製品に付いてきたOpenTypeフォントを選択しちゃうと 「TrueType以外のフォントにゃ対応してねーよ」とか例外でるんで困ってる。 FontDialog使うときにTrueTypeフォント以外は表示されないようにする、 あるいは、AdobeなOpenTypeフォントは表示しないようにする方法ってない?
690 :
ななし。 :2011/07/27(水) 17:32:22.09
カ オ ス ラ ウ ン ジ ゆ る せ な ぁ い ー
コンボボックスについて質問です Combobox1.textのテキストがCombobox1.DataSource内に存在するかどうかを判定したいのですが 現在Combobox1.SelectedIndexが-1以外なら存在するとして処理しています この場合リストから選択せずにリスト内と同じテキストを入力していると存在しないと判定してしまいます 選択の有無に関係なく調べるためにはリスト内の全てのデータとテキストとを比較して判定するしかないのでしょうか?
MSDNを見るとFindStringメソッドがあるようですね スレ汚しすみませんでした
鬱箱リレー放出します。 今まで頂いたもの、その他自宅で余っているものの詰め合わせです。 東海地方より160サイズ、ゆうパック着払いで発送します。 【内容】 ・ジャンクなケース ・静音化用HDDケース ・ケーブルなしファンコン ・VGA切り替え機 ・ファン多数 ・その他 ※結構、鬱度は高いかな?到着してのお楽しみ 【応募方法】 ・ハイフンあり郵トリ+メアド ・本日21時まで ・重複応募、最近当選した方の応募可(BL面倒なのでチェックなし)
VB2010 Expressを使用して、VC2010Expressで作成したDLLの呼び出し方法に関して教えて下さい。 VBからDLLに対してchar*を渡す仕様になっています。 DLL側の定義 extern "C" __declspec( dllimport ) BOOL __stdcall Func1( TCHAR *PathName ); VB側の記述 <DllImport("TEST.dll", SetLastError:=False)> Friend Shared Function Func1( ByVal PathName As Char()) As Boolean End Function
続きです。 Dim PathName As String = "Z:\TEST.txt" Dim CharName As Char() = PathName.ToCharArray() If ( Func1( CharName ) = 0) Then MessageBox.Show("failed!!", APP_NAME, MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If この方法で実行するととDLLからファイルが無いよと怒られてしまうのですが、 なにが問題なのでしょうか? VBはほとんど使用しちゃ事がないので良くわかっていません。 ちなみにVCからDLLを読み出すと問題なく動作します。 ファイルは指定したパスに間違いなくありますし、ファイル名も間違いありません。
相手が文字列要求してるんだから変に凝ったことせずに単純にString渡す TCHAR相手ならDLLがどっちでコンパイルされてるか確認して ・文字列引数にMarshalAs属性付けてLPWStrかLPStrを指定する ・DllImport属性のCharSetフィールドをUnicodeかAnsiにする のどっちか
698 :
695 :2011/07/28(木) 17:23:21.95
<DllImport("SUP64.dll", CharSet:=CharSet.Unicode)>
699 :
695 :2011/07/28(木) 17:24:43.56
焦ってしまった^^; <DllImport("SUP64.dll", CharSet:=CharSet.Unicode)> として、Unicodeを指定したら問題なく動作致しました。 有り難うございました。
DataGridViewとかでsuspendLayoutしてても中身書き換えてる間 バリバリ表示も変わって全然suspendしてないんだが他にも何か しないとあかんの?
それと連続していない任意の複数日を選択(ってか表示に使いたいだけ なんだけど)出来るカレンダーコントロールってある? (要はブログみたいな感じでデータのある日を表示したいと) 見つけられなかったから自分で作っちまったけど遅いんでちゃんとしたのが あればなあと…
そもそもレイアウトは 子コントロールの要求するサイズとか位置とかを元にそれらを適切なところに配置する という作業であって描画とは直接関係ない レイアウトの結果再描画することはよくあるだろうけど DataGridViewは子コントロール持たないから一切関係ないし 派生させてDoubleBufferedをTrueにしてみるとか
SilverlightとかLightswitchもVBならここですか?
704 :
デフォルトの名無しさん :2011/07/30(土) 16:19:12.47
そんな新しいのVBで使ってる人いないだろ どうせサンプルコードなどの情報もC#ばっかりなんだから C#覚えて専用スレかC#スレ行ったほうがいいよ
ええっ!もうVBはオワコンなの?
別にそんなことはないけど、C#もVBもほとんど同じなんだから固執しないほうがいいよ 実際にアプリ作るのはVB使えばいいとしても、情報の問題として SilverlightでC#避けてたら情報がなさすぎて話にならない
C#ってVBとほとんど同じなのか。 もっとJavaチックなものかと思ってたんだけど、 俺もC#勉強してみるか。 どうせビジネスロジック組むだけだから、 そんな複雑なことやらないし。
八割方は単なる書き方の違いって感じだなあ。C#とVBって。 .NET3.5までだとC#は名前付き引数が使えなくてExcelのアクセスが糞面倒とか、 逆に、C#の匿名デリゲートに味を占めてVBうぜぇとか思ったりはするけど。
ファイルをD&Dしたらそのファイルのパスを取得するものを作りたいのですがどのように書けば良いでしょうか D&Dする場所の指定は特にありません。
VB2010ExpressをWin7@64bit環境で使用しています。 システムに元々あるドライバのバージョンを取得しようとしていますが上手く行きません。 これはNG → VerInfo = FileVersionInfo.GetVersionInfo(Environment.SystemDirectory + "\drivers\acpi.sys") これはOK → VerInfo = FileVersionInfo.GetVersionInfo(Environment.SystemDirectory + "\notepad.exe") Environment.SystemDirectoryは"C:\Windows\System32"である事を確認しました。 試しに、C:\Windows\SysWOW64\driversにacpi.sysをコピーしたら上手く動作しました。 64bitモードで動作している(?)時には自動でWOW64にリダイレクトしてしまうのかと思っています。 C:\Windows\System32\driversにアクセスするにはどうすれば良いのでしょうか?
>>711 SysWOW64以下のは32bitのバイナリで、32bitモードの時にリダイレクトされる。
で、リダイレクトを避ける方法としては、
Win32APIのWow64DisableWow64FsRedirectionを直接呼び出すか、
AnyCPUもしくはx64でビルドしてx64で動作させるかのどちらかだな。
ExpressでAnyCPUとか指定できるか知らないけど。
ODBCによる接続で、 1つはMS SQLで、もう1つはOracleに繋いでいます。 MS SQLにあるテーブルのレコードを、Oracleの既存テーブルに追加したいのですが、 MS SQLとOracleで別のコネクションで接続しているので、 MS SQLに投げたSelect文の結果を、Loopで1レコードづつOracle側にInsertしてる状態です。 2つのコネクションをまとめて1つのSQL文は書いて実行は出来ないんでしょうか?
ASP.NET質問スレが無くなっちゃっていたので、こちらで質問させていただきます。(スレチだったらすみません) 新しい画面を作るとき、既存画面のファイルを全部コピーしてリネームしました。 元の画面のsuoファイルもコピーしてリネームしたんですが、たまたまsuoファイルの中身(バイナリでした)をみたところ 既存画面のファイルパスが書かれていました。 これを新しい画面のファイルパスにしたいんですが、方法はありますか? VSエディタでは変更できず(正確には変更するメニューが見つからず)、 ファイルの中身を直接置換するとVSエディタでプロジェクトが開かなくなったりとまいっちんぐ状態です。 そもそもsuoファイルって何してるんでしょ、グーグル先生にも質問中なんですが、 先生も答えに困ってるようでして。 ご存知でしたらアドバイスください、よろしくお願いします!
そのソリューションの細かい状態の保存用 たとえば終了するときどのファイルをコードエディタで表示してたか、とか ぶっちゃけ無くても問題ない 画面単位でソリューションまで分けるの?
suoはユーザー固有の設定ファイル 複数人で開発するときにslnの方だけバージョン管理して 個人設定はそれぞれ好きなのを使うために分かれてる 作成物そのものには関係ないから問題があるなら消してしまえ
すおーの呪い
フォームを非表示の時にもキー入力を受け付けるには何かいい方法ありますか?
グローバルフック
720 :
714 :2011/08/04(木) 10:28:49.15
>>715-717 ありがとうございます、suoファイルって不要なんですね。
元の画面のsuoファイルもいつの間にか出来ていたので、
何にも考えず全ファイルコピー&リネームしたんですが、
ふとsuoファイルって何だろ?と。
どう見てもFormsアプリじゃないですかやだー! VBそのものなのに移植ってイミフ
みんなそんなところから始まるんだ。
724 :
721 :2011/08/05(金) 07:52:45.83
>>722 具体的にどうやるのか教えてくれんか?
このサンプルはマルチスレッドなので、スレッドセーフなコンソールアプリで作るのかもしれない
と思い、やってみた。
コンソールアプリのプロジェクト作成
->クラスを追加
->サンプルをコピペ
->System.DrawingとSystem.Windows.Formsを参照設定
->Module1のMainにProgram.mainを追記
こうすると確かにコンソールフォームの上にstartボタンとcancelボタンを備えた
フォームが立ち上がるが、サンプル作成者が意図した挙動をしているのかよく分からん。
フォームアプリで最初に作られるForm1は自動生成されるForm1.Designer.vbとセットになってるので
おそらく重複する箇所があるのだろうが、消すべき所がよく分からん。
コードをコピペするのではなく、挙動を推測しながら抜粋していけばいいのだろうが
そういうやり方を求められるなら、サンプルコードとは言えんし・・・
>>724 Windowsフォームアプリケーションを作成
Form1.vbを削除
クラスを追加(Form1.vb)
サンプルをコピペ
でOK
特殊なことでもやらん限り、コンソールアプリでもフォームアプリでもどっちでも動くから安心しる
詳細はチュートリアル読めと書いてあるだろ そこに手取り足取り説明されてる
Lightswitch最強伝説
VB2008使ってるのですが、イミディエイトウインドウの表示可能最大行数って設定できるのでしょうか? Debug.Printで情報を大量に出力したいのです。
>>729 VBAのIDEじゃないんだから、制限はあってないようなものだったはず。
ファイルを書き出すリスナを足した上で、My.Application.Log経由で出力すれば、
万が一溢れても安心だな。
>>713 エスパーすると
MSSQLで返ってきたリザルト1000件をそのままOracleにぶち込みたいんだと思うが
結果から言うと無理です
これは仮にDataSetに直接変更を加えてMSSQLに返す作業でも
中では1件1件UPDATE文が動いてるので
結果はOracleに1レコードずつINSERTしてるのと同じことです
リザルトをCSVにしてバッチでインサートするという荒技もないことはないですが・・・w
Oracle同士のデータベースリンクみたいなことをしたいってことだろ
今のやり方で何が不満なんだ? CSVに吐き出す意味もわからん。 まあこの手のスレで意味を聞くのは野暮だとは思うが。
もっと楽することしか考えてないんだろ。 楽するのは最高だけどな。
運用ならそういう地雷を武器としてもっときゃいいじゃないか。 辞めた後、仕組みがわからなくて真っ青になるのを想像すると楽しいぞ。
VB2010Expressを使用しています。 以下のコードを実行すると、WriteFile()でERROR_INVALID_HANDLEが戻ってきます。 pBufの渡し方が間違っているのでしょうか? Dim Length As Integer = 65536 Dim fp As Integer Dim pBuf As Integer Dim hBuf As Integer Dim Rb As Integer hBuf = GlobalAlloc(GHND, Length) pBuf = GlobalLock(hBuf) fp = CreateFile("Z:\Read.bin", GENERIC_WRITE, 0&, 0&, CREATE_ALWAYS, 0&, 0&) If (fp = INVALID_HANDLE_VALUE) Then Exit Sub End If '↓これは自作DLLの関数 If (Data_Read( Length, pBuf) = False) Then End If If (WriteFile(fp, pBuf, Length, Rb, 0&) = False) Then MsgBox(GetLastError()) End If
64bitで動かしてんじゃねーの
738 :
736 :2011/08/08(月) 11:50:28.75
はい、Win7@64BITを使用しています。 すいません、もう少しヒントを頂けませんか? ファイル自体は出来ていますがファイルサイズは0バイトです。
64bitプロセスならハンドルもポインタも64bit IntegerはInt32のエイリアス
740 :
736 :2011/08/08(月) 13:08:04.45
fp,pBuf,hBufをIntegerからLongに変更して見ましたが同じでした。 CreateFile()やWriteFile()の定義も変更する必要があるのでしょうか? <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> Public Function CreateFile(ByVal lpFileName As String, ByVal dwDesiredAccess As System.UInt32,_ ByVal dwShareMode As System.UInt32, ByVal lpSecurityAttributes As IntPtr, ByVal dwCreationDisposition As System.UInt32,_ ByVal dwFlagsAndAttributes As System.UInt32, ByVal hTemplateFile As IntPtr) As IntPtr End Function <DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True, ExactSpelling:=True)> Public Function WriteFile(ByVal hFile As Integer, ByRef lpBuffer As Integer, ByVal nNumberOfBytesToWrite As Integer,_ ByRef lpNumberOfBytesWritten As Integer, ByRef lpOverlapped As Integer) As Boolean End Function サンプルコードも殆ど無いですしあまり一般的な方法ではないのでしょうか?
整数型に無理やりハンドルとか突っ込むような、 VB6.0以前の書き方はやめた方が良いな。
おまえらやっぱりC#も書けるの?
VB.NETやっててC#そのまま使えないならVBもちゃんと使えてるとはいえない
使える。 仕事はVB2005 趣味はC#2010でごさるよ。 本当は仕事もC#がいいが、周りがVB6で止まってるからしかたがない。
C#と.NETって互換性あるの?
えっ?
似非プログラマーの俺ですら「え?」だぜ
.NETのライブラリのほとんどはC#で書かれている
えっ?
VBで書いてもC#で書いても、同じ中間言語を経由して実行形式になる。
ソースコードの一番初めに宣言することで オブジェクトの自動的に破棄してくれる 一行のメソッドあったような気がしたんですが、 教えて頂けませんか?
何もしなくてもオブジェクトってぼっちになったら自動的に 解放してくれるんじゃなかったっけ。.netって
そうだね ガベージ・コレクションだね
解放されるが、それがいつかは保証されない。
もしかしてUsingのことか? Usingの解放とGCの解放は全く意味が違うが
そうだね 凝った事しないならGCの事は考えなくて良いよね
まあ全くGC分かってないとメインウィンドウや静的メンバに それより寿命が短いはずのオブジェクトの参照を登録して、 使わなくなっても片付けないでメモリリークとかありそう イベントハンドラなんかやらかしやすい
なんでASP.netのスレがないんだよ、ハゲっが
ウインドウズって頻繁に再起動しないとダメだから 結局はUsing使う必要なし
は? 頻繁って・・・ 再起動は月1くらいしかしませんが。
DataGridViewの値取得について質問ですが 任意のセルの値を取得するのに DataGridView1.Rows(0).Cells(フィールド名).Value で取得しています。 Adapter.Fill(DataTable) でDBファイルからテーブル取得し、そのテーブルに DataTable.Columns.Add("検索対象", Type.GetType("System.Boolean")) でBoolean型のフィールドを追加したデータテーブルをDataGridView1のDataSourceとしているのですが Adapter.Fillで取得した部分のフィールドは上記方法で値を取得できるのですが 後から追加したフィールドではエラーが出て取得出来ません。 後から追加したフィールドの値を取得するのはどうすればよいのでしょうか?
763 :
762 :2011/08/13(土) 11:50:50.77
フィールド追加だけで値入れる前に参照してNull値をMsgboxで表示しようとしていたのが原因でした フィールド追加後Falseをセットすることで解消できました スレ汚しすみませんでした。
すいません自己解決しました TileWallpaperを0にWallpaperstyleを10にすることで解決しました
767 :
752 :2011/08/13(土) 14:15:37.30
明示的にするメソッドがあったんですが、もう少しググって粘ってみます。 見つかったら、ここに書きこみます。
768 :
752 :2011/08/13(土) 14:17:40.06
忘れちゃったが抜けてますね。 複数投稿してすみません。
断言できるよ? ない
> ソースコードの一番初めに宣言することで StrictやExplicitとかのOptionステートメントを勘違いして捉えてない?
凄いのがいるなw
内容よりポニーとサラブレッドにくすっときた
>>771 これは痛いw
二重人格じゃないだろうかw
ネチケット以前に一般的モラルが無いからな
しかし逆切れされて回答者はたまったもんじゃないなwww これじゃあ誰も回答したくなくなるわなw
2chの質問スレでも手順が提示されてもコードで示せって要求してきて荒れるケースがしばしば つまり理論とかどうでもよくて、その場限りの回答だけ欲しいってタイプなんだろね 結局そういう奴は同じような局面で、同じように悩んで、同じような質問をまた上げる
しかしよくそんなのでプログラム書けるな そんなに応用力無くてどうすんだろ
どうせ学校の宿題か、会社の課題だろw その場しのぎであればいいんだろw そんな奴、落第すべきだなw
こういう奴って、結局コードを提示されても理解できないんだろうな。 それでまたトンチンカンな質問を繰り返す。 回答者は意外と的確なヒントを出していると思うがな。
管理しないからだろ
>>771 しかし、自分でスレッドをブチ壊しておいて、「質問を壊されたので失礼します」とは
超ウケるんですけどwwwwwww
嫌われ者の心理ってのは分からんのうw
ここまで老害の自作自演。
785 :
752 :2011/08/15(月) 20:59:16.47
本当に申し訳ございません。 間違いでした。 どうやら無いようです。 時間無駄にしてすみませんでした。
>>783 自分の立場というものを理解していないのさ。
あいつらスルースキルが無さ杉だろ ほっときゃいいんだよ基地外なんざ
開発にAMDは使わない方が良いというのは本当ですか?
は?どこのバカがそんなことを?
DB表示速度について質問です 最終的に数100万レコード程度のテーブル3つのデータベースファイルから 30〜100レコード程度を抽出してDataGridViewに表示しようと思っています 表示するテーブルは3つのテーブルをINNNER JOINで結合したテーブルです この場合結合したテーブル全てをDataSourceにセットしてからDataViewで必要なレコードだけを抽出するのと Selectで読み込む際にWhere句に条件を設定して必要なレコードだけを取り込んだテーブルをDataSourceとして表示するのと どちらが早いでしょうか?
フィールド数にもよるけど100万レコード取得後に抽出とか考えられない 俺なら都度whereで取得する
>>791 なるほど
たしかに100万レコードとかそれだけで時間かかりそうです
レスありがとうございました
つーかview作れよw
数百万レコードを集計せずに一覧にして何を見るんだろうw ちょっと気になった。
母数が数100万で、抽出して30〜100レコード程度を表示するって話だと思うんだが 数百万を一覧で見るなんて言ってないだろ
>>795 ページングとかして見させるのかなと思った
うん、どう考えてもありえないです。
DataGridViewの質問です。(ASP.NET&VB) DataGridをカレンダーのように横に12列表示し、 1セルに1ヶ月の予定のサマリーを表示し、そのセルからNavigateUrlで月内の予定明細画面へ遷移する画面がすでにあります。 プログラム改訂で、実績の表示&リンクも追加する事になったのですが、 1.実績のサマリーを予定のサマリーを改行して下段に表示 2.実績のサマリー(下段)をクリックすると実績明細画面へ遷移 というふうに作り替えたいのですが、1セル内に予定と実績のリンクを混在させる方法がわかりません。 今はDataGridViewのプロパティなどを操作しているだけなのですが、基本セルに1つの値のみ管理です。 どのように手を加えればリンク混在を実現できるでしょうか?
何だかDataGridとGridViewとDataGridViewがごっちゃになっているような
' リクエストの作成
Dim req As HttpWebRequest = CType(WebRequest.Create("
http://madoka-run.dyndns.org/upload.cgi "), HttpWebRequest)
req.Method = "POST"
req.ContentType = "application/x-www-form-urlencoded"
req.ContentLength = data.Length
' ポスト・データの書き込み
Dim reqStream As Stream = req.GetRequestStream()
reqStream.Write(data, 0, data.Length)
reqStream.Close()
' レスポンスの取得と読み込み
※恐らくですがここからの処理でエラーが出てます
HTTP/1.1 417 Expectation Failed となるのが問題らしい?
Dim res As WebResponse = req.GetResponse()
Dim resStream As Stream = res.GetResponseStream()
Dim sr As StreamReader = New StreamReader(resStream, enc)
Dim html As String = sr.ReadToEnd()
sr.Close()
resStream.Close()
おねがいします
またかよ
ラベルとかテキストボックスとかSystem.Windows.Forms.Controlから派生してるクラスから 派生させて拡張コントロールを作っています。LabelXとかそんな感じで。 でそれぞれの拡張コントロールでOnPaintとかをオーバーライドしてまったく同じ処理を 書いているんだけどこれを共通化したいんだけど良い方法ありますか? System.Windows.Forms.Controlから派生クラス作ってそれをLabelやTextBoxの派生元 として間に入れ込めれば各拡張コントロールで書かなくてすむんだけど、そんな感じの 事ってできないですかね? それぞれオーバーライドした関数からMeとeを引数に共通関数をコールするってでほぼ 共通化はできるとは思うんですが、そうではなくて上記のような派生元を共通化もしくは 派生元に処理を追加みたいな感じで。
フィールドが必要なら共通の処理をクラスに分ければいい なんでもかんでも継承使うのは悪
よいしょっと
継承は便利だけどカプセル化が難しくなるから集約やコンポジションを利用したほうがいい まぁ抽象化の度合いによるけど
>>801 すごくありがとうございます!!
自分の未熟なコードが間違ってたかと思ってたので、うまくいけたことも非常にうれしく思ってます
また質問する時はよろしくおねがいします
vb2010作成したソフトをWindows7上で動かした際、 LabelをダブルクリックするとTextの内容がクリップボードにコピーされてしまうのですが、 この現象の対処方法はないのでしょうか? ちなみに、LinkLabelでもコピーされてしまいます。
809 :
デフォルトの名無しさん :2011/08/28(日) 18:00:42.09
ディスクトップ上のショートカットアイコンのLINK先情報のフォルダーを知りたいのですが、 SHGETFILEINFOを使用して検索するのであろうまでは、判るのですが、 実コーディングがわかりません。 対象のアイコンの名前、EXEファイル名は既知で、知りたいのは、そのフォルダー名のみです。 よろしくお願い致します。
ショートカットのリンク先が知りたいってことなら、 IWshRuntimeLibrary.IWshShortcut を使う。
Dim ObjShell As Object = CreateObject("WScript.Shell") Dim ObjLink As Object = ObjShell.CreateShortcut(ShortCut) Dim OrgPath As String = ObjLink.TargetPath
FORMの中にPDFを表示してます。 ボタンを押すと、指定ポイント数だけ一定方向へスクロールさせたいです。 どうやったらいいのか見当がついていないんですが、 出来る方法があればおしえていただけませんか?
どうやって表示してるの?
815 :
812 :2011/08/30(火) 11:48:20.79
ありがとうございます。 ミーティングで外出続きなので、とりあえずお礼まで。
Ctrlキーを押したら任意位置x,yでクリックイベントを発生させたいのですがどうかいたらいいでしょうか
そういうのは禁止ですよ^^
>>816 KeyPressイベント内で書いちゃだめなの?
データグリッドビューの背景?(灰色の所)を画像にしたいんですけど、VB2010で可能ですか?教えてください
わんくま死んでる?
黙祷
メシウマ
____ / \ / ⌒ ⌒ \ とんこつ / (●) (●) \ | 、" ゙)(__人__)" ) ___________ \ 。` ⌒゚:j´ ,/ j゙~~| | | | __/ \ |__| | | | | | / , \n|| | | | | | / / r. ( こ) | | | | | | ⌒ ーnnn |\ (⊆ソ .|_|___________|  ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
マンガ脳の恐怖、まで読んだ。
tkmp.dllを利用してメールの受信を行おうとしています。
通信ログを取ろうとしていて、tkmp.dllのサンプルTipsサイト
の「通信ログを表示する」のサンプルを元に実装してみました。
ttp://uwa.potetihouse.com/samplecode/tkmp/showmessagelog.html USER xxxx
+OK password required.
PASS xxxx
+OK maildrop ready, 25 messages (34873 octets) (xxxxxxxxx)
LIST
+OK 25 messages (34873 octets)
TOP 0
+OK 9794 octets
TOP 1
+OK 13474 octets
上記のような流れで、取得できているのですが、+OK 9794 octetsの後ろにCRLF、
その直後から次のTOP 1までの間にNULL文字(0x00)が約10000バイト続いていてCRLF
となっています。このNULL文字を削除したいのですが、
e.Message.Replace(vbNull, " ").Trimとしても、消えません。そもそもNULL文字+CRLFと
いう行が存在するのが怪しいのですが、取り急ぎ、NULL文字+CRLFの行のNULL文字さえ
取り除ければ急場しのぎに使えます。どのように対処すればいいのでしょうか。
vbNull vbNullChar vbNullString 全部違うよ
>>827 全部一緒だと思ってました。すみません。
これは知らなかった〜 というか vbNull は使った事ない
知ってても普通使う気しないw 使うのはせいぜいVBCrLfぐらいだ。 他はあえて使う理由が思い浮かばない
>>829 vbNullは文字でも文字列でもないし、あれはVarTypeで使うだけ。それも今はVariantType.Null使うべき
VB.NETではそもそもVarType使う場面がほとんどない
>>830 vbNullは使う場面も理由もないが、お前はヌル文字表すのに定数で表記しないのか?
ヌルポインタ必要なときどうするんだ?
Nothing、Chr(0)、""とかで事足りるからなあ。 一応尤もらしく定数を定義してみましたって感じだよね、ここらへんの実装は。
まあVBだけの範囲ならvbNullStringと""の違いを意識することはあんまりないだろうがな
""はstring.Empty使ってマッスルよ
VB6の頃はやれることも限られていたしAPI叩かないとどうしようも無かったから vbNullStringは普通に使ってたな .NETになってかなりマシになったけど
テキストファイルの中に改行コード(CRLF)が2つ連続で続いている ので、これをひとつにしたいと思い、以下の命令でやってみたのですが ダメでした。 textdata = textdata.Replace(vbCrLf & vbCrLf, vbCrLf) textdata = textdata.Replace(vbCrLf + vbCrLf, vbCrLf) textdata = textdata.Replace(String.Concat(vbCrLf, vbCrLf), vbCrLf) vbCRLFをControlChars.CRLFにしても同じです。 16進ダンプでtextdataの中を見てみると0x0D0A,0x0D0Aと並んでいます。 こういう置換はできないものなのでしょうか。
長さが0の行を削除すればいいのでは。
>>836 イミディエイトウィンドウで試しに
("AA" & vbcrlf & vbcrlf & "BB").Replace(vbcrlf & vbcrlf,vbcrlf)
流したら一つになったよ
VisualStudioにはあまり詳しくないが > 16進ダンプでtextdataの中を見てみると Stringをダンプで表示できたっけ? Stringに読み込む前のファイルをダンプしただけだったりしないか? さすがにtextdataは実はファイル名でしたは無いと思うけど まずどうやってファイルを読み込んでるのかとそのファイルのエンコーディングから
普通のテキストファイルをバイナリエディタで見ることは出来るな 確かに0x0D0Aになってる 普通やらんけどw
どうでもいいかもしれんが、0x0D0Aって表現にすごく違和感を感じる 0x0D,0x0Aならまだしっくりするんだが
一般的なリトルエンディアンだと、0x0D0Aは(0x0A, 0x0D)の並びになるな
すいませんいっぱい処理するときに別のスレッドにしてはやくやらせるやりかたおしえて
おいきけ
あーわかったわ おまえらえらそうにしてるくせにおまえらもスレッドのやりかたわかんねんだろwww ザコはすっこんでろ
846 :
デフォルトの名無しさん :2011/09/14(水) 21:08:17.81
Label1のBackColorをTransparentにして、 Form1のPaintイベントでLabel1のBoundsの範囲を塗る。
849 :
デフォルトの名無しさん :2011/09/14(水) 23:56:22.19
>>849 後々の事を考えると自分で考えた方が貴方のためですよ
851 :
デフォルトの名無しさん :2011/09/15(木) 00:40:43.66
答えから導き方を求めるので、大丈夫です。
854 :
デフォルトの名無しさん :2011/09/15(木) 09:56:27.87
Datagridviewで Column Headerをクリックしたら、Row Header の文字がなくなって それぞれのCellの高さも少しだけ変わってしまうのですが、 どうやったら防げますか?
855 :
デフォルトの名無しさん :2011/09/15(木) 21:01:45.27
>>853 ありがとうございます。
ここから覚えたいと思います。
VB.netとはあまり関係ないが 確か地元の工業大学では、VisualBasicではなくてBasic を教えていると聞いた事がある まぁ、VisualBasicもBasicの内だから大丈夫と言えるのかなぁ と思っていますがどうでしょうか?
何がだよ。 あんたの日本語がまったく大丈夫じゃない
Basicと今のVBは見た目がなんとなく似てるところがあるくらいで全く全然違う言語 Javaとかに近い
BasicはJavaに近いんですか だから大学で採用してるんですね
JavaとJavaScriptの違いの話だろ
見た目って何だ? 冗長な命令語がVBチックだけど、書式はJavaとかに近いってこと?
862 :
デフォルトの名無しさん :2011/09/17(土) 20:13:52.68
@ITの記事だったかな。 で、.NETを使うならアセンブリには「厳密名」をつけるのは普通のことで つけないならほとんど.NETで開発する意味がないといえるくらい、重要な.NETの機能が得られない みたいなことが書いてあったんですが、皆さんどうですか? ちなみに自分は意識してつけたこと無いです。 #知らないうちについてるのかな?
>>863 サンクスです。
それです!
やっぱ気にしませんよね。俺だけじゃなかったのね。
865 :
デフォルトの名無しさん :2011/09/17(土) 22:02:17.75
サイドバイサイドならいいんじゃないの
どうも読んでいくと改ざん防止に必要らしい。 要するに大メーカとかの、みんなが使うアセンブリを作るひとが気にすることか。 俺は小さいアプリしか作らないから関係ないのかな。 っていう認識でいいのかな?
付ける付けないで言ったら、付けた方がいい 自分で使うだけなら付けなくてもいいかな
ありがとうございます
869 :
デフォルトの名無しさん :2011/09/18(日) 01:52:43.65
かっこいいボタンとかが必要になった時ってどうしてますか?
まずおしゃれに気を遣ってセンスを磨く
>>869 画像をボタン代わりにすればいいんじゃないの
872 :
デフォルトの名無しさん :2011/09/18(日) 11:56:52.91
>>869 kakkoEButton.Text = "かっこいい!(ビシッ)"
そういえば、 まだ1箇所でしか見たことがないけど レジのシステム ほとんどの所がおつりを自分でとっているけど ある所では、バーコードを読み取ってお金を入れると 自動的におつりがでる本屋を見かけたことがある。
実は改ざん防止にはあまり役に立たないよ。
自動釣銭機なんてごく普通のオプションだが? つかそれをここで言って何か意味あるの?
今となっては厳密名付きアセンブリの改ざんチェックはデフォルトでは行わないしね。 GACインストール済みのアセンブリは元々チェックされないし。 そもそもウィルス感染させられるくらいなら呼び出す側のEXEを置き換えられるし、 セキュリティ的には実はあまり意味がないんだよ。
というか、あまり意味がないから、時間のかかる厳密名の検証はデフォルトでは行わないようになった。
879 :
デフォルトの名無しさん :2011/09/18(日) 14:56:11.88
>>871 やっぱりそうするしかないのか
ボタンの背景を描画したりしたカスタムコントロールを作るのと
WPFでデザインするのだとどっちがいいですかね?
そこ比べてどうするんだよ そりゃWPF使っていいんだったらWPFの方が圧倒的に楽
スレ立てるまでもない質問、で聞いてきます スレ汚してすみませんでした
>>878 それどこら辺に書いてあるの?ググっても見つからなかった
>>878 まじで?検証やるでしょ?
GACはGACインストール時にやるからスキップする訳で。
デフォルトもなんも検証させないオプションなんてあったか?
今は、正確には 3.5SP1 からは、厳密名の署名検証はデフォルトでオフ。 構成ファイルとかで明示的にオンにしない限り検証は行われない。 結構知らない人多いけど。
嘘だと思うなら、実際にアセンブリを適当にバイナリエディタとかで 動作に影響ない程度に改ざんして、検出されるか試してみるといい。
LINQ to Entityで作成したオブジェクトaに対してa.Count()とかすると、 「LINQ 式ノード型 'ArrayIndex' は、LINQ to Entities ではサポートされません。」 というエラーになるんですが、件数を取得したい場合はどうすれば良いんでしょうか…?
さぁ?
スレ立てるまでもない質問で聞いたらこっちで聞いてくれとの事でした・・・
すみません、どなたか
>>872 をお願いできませんか?
よろしくお願いします
cloneについてお聞きしたい dim a(3,3) as string dim b(3,3) as string それぞれに何か文字列が入ってる状態で bの内容を丸々aにコピーしたい a=b と書くのと a=b.clone とやったのとの違い、違いがあるなら どういう問題があるか教えて やってみたところ完全に同じようなんだけど、詳しい方の意見を聞きたい
ない。Stringクラスはインスタンスの中身を変更できないように作られてるので コピーしても同じインスタンスを使いまわしても同じ。 というか実はString.Cloneはthisをそのまま返すだけw
では問題がある型があるとしたら何ですか LongなんかもCloneつかわなくて問題なし?
Longはクラスじゃなくて構造体なので常にコピーされるからCloneいらない 問題があるのはインスタンスの中身を書き換えられるクラス FormとかPenとかたいがい当てはまる "値型と参照型"や"イミュータブル"のキーワードで勉強してみて
>>891 a=bの時、aとbは同じインスタンスになる
a=b.Cloneの時は、bの要素が簡易コピーされ、aとbは別のインスタンスになる
一見同じに見えるが別物。コピーした後に一方の要素を書き換えてみれば分かる
Stringは参照型だけど文字列型が入ってるから 値型みたいに扱えてるということかな
>>896 違う。例えばPenでも、変数aに代入したら変数cの中身が変わったりはしない。
インスタンスの中身を書き換えるのと代入するのは全く違う。
a=bはaが指し示すインスタンスの中身をbの中身に書き換えてるのではなくて、
aにbが指してるインスタンスへの参照を代入してるの。
インスタンスの中身を変更するっていうのは pen.Color = Color.Red; みたいなやつ。
>>895 Dim St1 As String
Dim St2 As String
St1 = "リキニウス"
St2 = St1
St2 = "セクスティウス"
MsgBox(St1)
これがリキニウスになるんだけど違うの?
>>898 いいから値型と参照型について勉強してきてくれ
多くの人がつまづくところだから情報はいくらでも出てくる
>>900 ごめん配列でやってみたら書き換わった
こりゃCloneしないとえらいことになるわ
902 :
892 :2011/09/18(日) 23:03:57.63
ああ配列を丸ごとコピーする話だったのか よく見てなくて申し訳ない
レスしてくださった方ありがとうございました もしやと思って聞いてよかったです 勉強してきます
vbで dim asm as [Assembly] って記述があるんですけどこの[]って何を意味しているのですか? 普通の型だったら dim xxx as Xxx じゃないですか。
これはキーワードじゃないよってことを明示してる
ありがとうございます。 専門用語的にはなんていうのでしょうか? 調べてみたいので。 ググりに使えるキーワードを教えていただけますでしょうか? ちょっとずうずうしいお願いですみません;
すみません、やっぱり聞きすぎでした。 教えていただいただけでも感謝です ありがとうございました!!!!!!
すみません!本当にありがとうございます!! 感謝です!
>>872 の解決策はもしかして存在しないのでしょうか。。
デバッグするときにブレイクポイント貼ったらいいよ
>>909 いやいや正式な呼び方は「エスケープ識別子」
ちゃんと言語仕様書に出てるはず
>>912 ありがとうございます。
解決しました。
Windows7でタッチパネルディスプレ使ってるとフリック操作ができると思うんですが あれってプログラム側で何かイベントがあったりするんですか
>>916 ありがとうございます
ちょっと読んでみます
918 :
デフォルトの名無しさん :2011/09/20(火) 21:24:27.22
vb.netでタブコントロールを用いたツールを作ろうと思うんだけど、 たとえば、Aボタンを押すとタブコントロールに新規タブでA画面が追加される Bボタンを押すとタブコントロールに新規タブでB画面が追加される A画面とB画面の機能はどう管理したらいいでしょうか? 完全に別フォームにした場合はフォーム別に管理できるけど、タブの場合はそんな感じにはいかなそうで・・・
>>921 言うまでもないとは思うけど他のフォームにちょっかい出す時はデリゲートで
>>920 おいおい、出来るからやっていいって事にはならないんじゃないか?
まずはユーザーコントロールだろ?
>>920 シングルスレッドでもそうなの??
アンカミス、下は922ね
実際こういうタブを使うアプリってどう作るのが一番いいんだろうな・・・ タブを使うってことは画面が増えるってことだから、普通に作ったらポップアップいっぱいなんだろうな
UIデザインは全くわかんねw タブにするか、ツリー/リストビューでカテゴリを選択させるのか、、、 In/Outが条件に合えばあとはフィーリングで選んでるな。
VB2008ですが、下記CSVデータを昇順ソートすると並びが崩れてしまいます。 原因を教えてください。 [データ.csv] A B C あ [結果] A B あ C [ソース] Dim Con As New OleDb.OleDbConnection Dim Command As New OleDb.OleDbCommand() Dim ConnectionString As String = _ "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=c:\;" + _ "Extended Properties=""Text;HDR=NO;FMT=Delimited""" Dim oDataSet As New DataSet Dim oDataAdapter As New OleDb.OleDbDataAdapter Dim oDataTable As DataTable = New DataTable Con.ConnectionString = ConnectionString Command.Connection = Con Command.CommandText = "SELECT * FROM データ.csv order by 1" oDataAdapter.SelectCommand = Command oDataSet.Clear() oDataAdapter.Fill(oDataTable) For Each row In oDataTable.Rows Debug.Write(row(0).ToString + vbCrLf) Next
>>923 まあ俺の場合は巨大になりすぎてデザイナで開く度にソースが壊されるんで
分割するしか無かったんだがな
>>920 このやりかたでアプリ作って運用してるけど数年まったく問題ないよ
VB6の時のDrawMode=XOrPenみたいな処理はどのクラスでやるんですか
sqlserverce4.0 つかって COLLATE Japanese_BIN したい場合、同様の結果を得るにはどうしたらいいですか
VB6のCDate関数はVB.NETではどうすれば
Webサイトの最終更新日時取得について質問です。 HttpWebResponse.LastModifiedや、IEのURL欄に"javascript:alert(document.lastModified)"を入力すると 現在日時が取得されてしまうページの正しい最終更新日時を取る方法はありますか? ちなみに、そのページへのFTP接続は不可です。
>>932 CDate(Value)
もしくは
CType(Value, DateTime)
sqlserverce4.0 つかって COLLATE Japanese_BIN したい場合、同様の結果を得るにはどうしたらいいですか
Dim D1, D2, D3 As Date D1 = CDate("10:00:00") D2 = CDate("11:00:00") D3 = CDate("12:00:00") If D1 < D2 And D2 < D3 Then MsgBox("True") End If これはうまくいったけど
Dim D1, D2, D3 As Date D1 = CDate("10:00:00") D2 = Now.TimeOfDay D3 = CDate("12:00:00") If D1 < D2 And D2 < D3 Then MsgBox("True") End If これを11時に実行してもエラーナノデ直して
お断りします
D2 = TimeOfDay ほらよ。
自フォーム内でwebbrowserコントロールを利用しています。 今までは、スクリプトエラーは全部無視して良かったので ScriptErrorsSuppressed = Noと設定していたのですが、 一部、スクリプトエラーの内容を見て無視ではなく続行 させないといけないようになってしまいました。 自分のwebbrowserコントロール内で出たスクリプトエラーの 内容を読みとり、続行するか無視するか判断することは どのような方法で行うことができるのでしょうか。 外部からだと、ダイアログを常時監視して、該当のダイアログか どうかを全部チェックしていくのかな?とは思ったのですが、 自分のプログラム内から出たダイアログだから、何か簡単な 方法があるのでは?と思ったのですが、方法がわかりませんでした。
なんでD2 = Now.TimeOfDayがダメで D2 = TimeOfDayがうごくかわけわかめ
DateTime.TimeOfDayプロパティはTimeSpanを返す DateAndTime.TimeOfDayプロパティはDateTime(日付部分はすべて1)を返す TimeSpanとDateTimeは直接比較できない
がおーーーーーーー
えっ?
(ライオン)
えぇっ?
949 :
デフォルトの名無しさん :2011/09/25(日) 12:25:58.74
vbを始めてみようと思ってるのですが、 vbとvb.netの2つが存在しているのでしょうか? それとも同じものですか? あと、vbaをどうせやるならvbを勉強しようというのはあまり意味が無いでしょうか?
2chに書き込む丸々コピペできるソースないですか
今からVB.netじゃなくてただのVBをやるのは、 例えば仕事で必要になるのが分かってるような場合以外はほぼ無駄だからやめとけ。
VB.NETのソースの醜悪ぶりも反吐がでます
VB.NETの名前をVBしちゃったから 検索するときはどんなキーワードですればいいの?
にほごんでおk
955 :
デフォルトの名無しさん :2011/09/26(月) 00:17:28.60
>>953 エスパーすれば俺はVB.netで検索してる
まず.NETでないVBをどうやって手に入れようというのだ。 MSDN サブスクリプションは「始めてみよう」で出せる金額じゃないぞ。
>>956 MSDN サブスクリプションていくらするの?
年間36Kぐらいじゃ無かった?
やす
VB6って貴重品になってんだな しかしリンク先見てみたがそんだけの額だして Win95や98が無いのは気に食わない
そんなゴミで開発するのにメリットがないからだろ
Sunと係争になった末の取り決め、っていうのが公式の理由でしょ確か。 違ったっけ
MS-Javaが入っている奴は全部駄目になったね。 VS97や6.0も全部あぼんされたけど、 VB6.0だけはMS-Javaを取り除いたものを改めて用意したはず。 ただ、NT4.0やWin95は単にメンテが面倒になっただけな気がするw
まあ、win有る限りExcelとAccessも絶滅してくれないだろうから VBAは今後も需要が有るだろう わざわざOpenOfficeにVBA機能取り込んだ版なんてのも有るぐらいだし クソだろうがなんだろうが需要には勝てん。 でも単品VBは今更いらんと思う 自分のVB6はこないだの地震でIDOLM@STERのCDと一緒に砕け散りました VB6以外は買い直しました
C#のせればいいんだよ。 インタプリタっぽく見せるのは大変そうだが。
VBAはJavaになるんじゃなかったっけ? C#じゃなく
え?
なぜ素直にVBScriptにしないのか。
>>969 MetroスタイルのOfficeならありえそうだな
VBScriptってPowerShellもあるしもういらんのでは
PowerShellをHTMLで使うのか?
>>969 はHTML5/JavaScriptのwebアプリを
Officeで作れるようにしたいって話だろ
VBAの置き換えとかじゃない
質問お願いします。 bass.netというオーディオI/Oを使ってみようとしたのですが ”bass.dllが見つかりません”となってしまいます。 リファレンスには Copy the 'bass.dll' to your executable directory (e.g. .\bin\Debug). とあるんですが、真似して見てもbass.netと同じフォルダに置いても駄目だったんですが VBで実行可能なディレクトリとはどこに置けばいいしょうか? 使ってるバージョンは2008express editionです。 宜しくお願いします。
ネイティブのDLL? プロジェクトに既存の項目を追加で追加しといて、 プロパティウィンドウでコピーするようにしとけばいい
>>976 できました!
ありがとうございました。
XMLコメントが出なくなったんですけど、何が原因でしょうか?
出なくなった、とは? 小学生じゃないんだからもっと説明的に書けよ。
VB2008でシングルクォート3連打で出てくるXMLスケルトンが出てこなくなってしまいました
>>980 プロジェクトのプロパティの「コンパイル」のページの「XMLドキュメントファイルを生成する」
にチェック入ってる?
既に入っている場合は、一旦クリアしてから再びチェックする。
2008ではなく2010だが、同じ現象が起こったときこれで直った。
VBCommenter Help
>>983 実は開いてるファイルがプロジェクトに登録されてるファイルではない....
なんてことはないよね?
まあそれならインテリセンスも働かないけど
次スレよろ
ネトウヨ王に、俺はなる!まで読んだ。
ネトウヨ厨=韓国人
989 :
デフォルトの名無しさん :2011/09/30(金) 23:44:45.82
windowsフォームでwebみたいに画像をボタンのように扱いたいんだけど、 何かいい方法ないですか?
991 :
デフォルトの名無しさん :2011/10/01(土) 00:27:51.38
>>990 ピクチャーボックスって画像の形になってくれますか?
341 を134にならべかえるには データテーブルをつくればいいの?
番号、名前の二つのフィールドを持つDataTable(Table)があります ComboBox1.DataSource=Table ComboBox1.DispleyMember="名前" TextBox1.DataBindings.Add("Text",Table,"番号") 上記の利用でComboBoxで選択した名前に対応した番号がTextBoxに表示されますが TextBoxに番号を入力してフォーカスを他のコントロールに移すと そのときにComboBoxに表示されている名前に対応する番号がTextBoxで入力した番号に変わってしまいます データバインドだとこういう動作が普通なのでしょうか? やりたかったのはTextBoxに入力した番号に対応する名前をComboBoxに表示させたかったのですが・・
995 :
デフォルトの名無しさん :2011/10/01(土) 12:08:39.19
>>994 ピクチャーボックスに星型の画像を入れると画像の部分だけクリックイベントが発生するようになりますか?
997
998
999
::::::::::::::::::::::::::::::::::;.' . ^堰@| + ';::::::::::::::::::::::: ::::::::::::::::::::::::::::: ;.' .| | ';::::::::::::::::::::: :::::::::::::::::::::::::::;.' | | ';::::::::::::::::::: :::::::::::::::::::::: ;.' ┼ i 亅_|, -、 ';::::::::::::::::: ::::::::::::::::::::;.' 厂/ ィ ⌒ヽ. ';::::::::::::::: ::::::::::::::: ;.′ // .|rqミLノ_l | 〉 ';::::::::::::: :::::::::::::;.' ー匕 人公┘ ヒ}リ./ 厂}';:::::::::::: :::::::: ;.′ └冖ー> 、 n 火// .'::::::::::: 輝かしい1000! ::::::;.' ゜' /.に二二二 イ> ';:::::::: : ;.′ , ‐― 、:::{ ';:::::: :' 。 / .:!.:.i:|::ト、 \.ヘ. ';:::: ./ .:トLハ忙7| :l. Yヘ ';:: {j.:l:忙! くノ .:.| ∧ ⊥ '; f^Y 礼_ ゥ イ .:.:.| ::∧ | 二.二.rへ. 二.|厂〕 .:.|ーイ + o . . └ヘ \/ /卜トゝ | . . : : \_/ | .| : | :
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。