VB.NET質問スレ(Part44)
前スレで会計士の資格を何とか言ってた人は何してる人? 皆さんどこのサイトを参考にしてますか? 日本語サイトでお願いします MSDNで参考になった事が一度もないほど意味不明なので他でお願いします >>7 C# <キーワード> でググればだいたい何でもすぐに出てくる。 VB向けの情報はカスしかないから、VBじゃなくてC#。ここが重要。 WPF以降で参考にしようとしたら、c#とVBが併記してあって日本語解説あるのは@ITぐらいしかないね。 あとはc#をVBに自分で置き換えるしかない #devってヤツを知らんけど既存のコードを変換出来る? それとも一行だけ? そんな化石知ってても何の自慢にもならんよ SharpDevelopはとっくの昔に開発終了してMonoDevelopに引き継がれてMSに買収されて今ではVisual Studio for Macと呼ばれている 抜けてた MonoDevelopは途中からオーナーが変わってXamarin Studioと呼ばれていた VB.NETの開発環境ってVS以外でもあるの? ついでにもう一つ グレープシティのWindows Formsの中のコントロールでリサイズ以外いらんよね? WindowsサービスアプリでSystem.Timers.TimerのElapsedイベントが 発生しなくなってしまったのですが、同じような事例はありますか? ソース、EXE自体は何も変えていないのですが… net Frameworkのバージョンが変わったとか? まず確実に>>22 自身のバグに一票 49.7日問題なんてのが大昔にあったけど、無関係だろう 原因不明のため、System.Timers.TimerからSystem.Threading.Timerでプログラム作り直しました。 >>22 >>25-26 そんなバグあったの? C# だけど、15分おき、特に問題なく Elapsed 起きてるけど。 普通と違うとしたら、毎回 Interval を設定し直してるくらい。 問題 数値型1,2,3,・・・を文字列型0001,0002,0003,・・・にするプログラミングを書きなさい >>31 でもいいけど、リーディングゼロ付けたい場合は普通は"D4"みたいにする つーか何が書きなさいだよアホかw ちなみに Dim i as Integer Dim S as Strong i=任意の数字 S ="" S = "0000" & i S = VBの関数Leftで左から4文字までを取り出し すると000iになる が用意した正解 おまえら小学生からやり直せ >>>30 の出題の数値型の説明がいい加減だし、百歩譲って1,2,3...とあるから正の整数だとしても >>35 は自分でIntegerと後出しで規定しながら9999を越えると対応していない間抜けな回答 >>31 でも>>33 でもその点はクリアしている しかもよく見りゃ右も左も分かってない出題者の頭の悪さだけが際立つ結果に そもそも今の時代まさかright,left,midもつかわんだろ Constで物理名定義して、論理名をXMLコメントか属性で取得したかったが、どうもできない。 なんかいいアイデアあったら教えて >>38 プロパティとかの名前のこと? 普通にカスタム属性でできるよ リフレクションで取れる コンソールプログラミングでは Application.DoEventsが使えませんが 代わりに処理中の入力を受け付けるようなメソッドはないでしょうか? 時間がかかる処理をESCキーでキャンセルするような処理を コンソールプログラムで書きたいと思っています >>41 Console.KeyAvailable プロパティが true なら Console.ReadKey するとか。 PDFファイルを通常使うプリンタに印刷するのにはどげんしたら良かですか? 外部からファイル名をフルパスで渡せば印刷してくれるようなのがいいのですがヒント下さい。 Acrobatのコマンドラインオプションは保証されてないし、自作でexeを作りたいのです。 戻り値のある関数もいらないな グローバル変数を使えばいいわけだし private public Static の違いがわからない俺様が通りますよ。 グローバルだと意図しないところで変な値が入っちゃう可能性があるから使うなとじっちゃんが言ってた。 エンドユーザーの都合で次の開発案件の開発言語がVB.Netになったオレを慰めてください。 >>48 >>エンドユーザーの都合で 金出すヤツの意見が通るのが実情 VB6までの資産有る所はC#にはしない傾向に有る 残念なのは日本でVB.NETに関する導入事例や書籍など情報自体が少ない 海外が多いくらいだ ネット上で海外から情報取得して生かすしか方法が無い 日本マイクロソフトもC#重視したから尚更 >>49 最新の構文を使いまくってやる予定 別に嫌がらせじゃないよw C#に比べて ラムダとかエクステンションの書き方が めっちゃわかりにくい VB.NETでシステム構築して今更、他の言語を検討してるとか言ってる所も有る VB.NETのままでも安く運用する方法考えれば良いのだが、システム更新に責任持ちたく無いヤツ居る職場だと永遠にシステム刷新出来ない罠 VB+Oracleで構築しちゃうと ライセンスでOracleが足かせになる場合出るので、Oracle→MariaDBやPostgreSQLにする方が安く出来る VB.NET(〜VS2013)の細かい仕様の質問なんだけど、 通常のFormにPictureBoxを載せて、PictureBoxのデバイスコンテキストを取ってきて自前で低レベルAPIで描画してるんだけど、 最初にALTキーを押した時にPictureBoxがチラついて自前の描画が消えてしまう場合がある。 このちらつきは、そのアプリの起動後、ALTキーを押した時に必ず1回だけ発生して、場合によって自前描画もちらつきとともに消える模様。 これを抑止することって出来ないのかな FormのOnPaint、OnPaintBackgroundを空メソッドにオーバーライドしても効き目なかった 一般的な問題と思えんから再現可能なコードを示さないと 誰も何も言えないと思う え?そんなにやってることが特殊かな? 扱うデータが大きくてその視覚化を自前ネイティブに任せるとか、よくやる方法だと思ってた 聞く場所を間違えたかな・・・ >>55 >>ALTキー OnKeyイベントで対処するしか無いんじゃないの >>57 よく分からん思考回路 どこで聞いても同じたお思うよ。 それで答えが返ってきたらその人はエスパーだ エスパーなんかいないけどね >>58 ありがとう FormのKeyUpとKeyDownとKeyPressイベントで、e.Handled = Trueにしてるんだけど、それでもちらつく またFormのKeyUpイベントの後に自前描画し直してるんだけど、それでも自前描画が消えてしまうことがある こういうのがあるから.NETは信頼できないんだよな システムのバグだー!!! タメグラマの典型的な思考回路だねw 賭けてもいいよ絶対にあんたの書いたコードのバグだからw エスパーにしか分からん位に特殊な実装だとは全然思ってなかったなw だから何でそうなるのw そもそもあんた、特殊な実装をしてるかどうか読み手が判断できるような情報を何も書いてないだろうw だからそれで答えが返ってきたらエスパーだと言ってるのに重症だなおい 膨大なデータ生で見せられてもユーザーにはメリットがないのでデータの見せ方を変える 低レベルAPIじゃなく高速描画ライブラリを使う というのが一般的な対応じゃないかな そもそもここで言う一般的ってのはやってることが一般的かどうかという意味じゃなく 事象と発生条件が一般的ではないから実際のものを見なきゃ何もわからないという意味だろう hDC取ってWin32API呼びました、これが実装の詳細か?w >>64 言葉を返すようだが、「見せ方」「メリット」というけど、そこまで相談はしていないよ 低級API利用が特殊だとは全く思わないし、そもそも描画手続きについて相談してるわけでもない ALTキー押下でVB.NETのPictureBox上の自前描画が消えるのが問題なんだよ 自前描画もそうだけど、ALTキーを押すなんてそんな特殊なケースだとは思わなかったね みんな普段ALTキーを使ってないのかよ?w マジで言ってるなら相当の幸せ回路だな ALTキーを押すのが特殊と思わんかったてw 何でそうなるのw >>66 VB.NETでブラウザ上表示じゃなくForm描画だとしたら、PictureBOXが載ってる親オブジェクトのFormの描画リフレッシュレートタイミングに問題が有るんじゃ無いか 「起動後の最初」に特定のキーを押す 描画が消えてしまう「ことがある」 特殊バグすぎてイラつくわ 一般的に起こってたまるかよ >>68 >リフレッシュレートタイミング つながってると意味がぼやけるな。それはともかく、 VB.NETのFormは、イベント駆動で再描画されるから常時一定間隔で描画更新されてるわけじゃないだろう ところで、再現手順については必要最低限の情報を提示したつもりだったんだが、こんなに特殊に受け止められるとは想定外だったな これだけ出回っているツールだから、同じケースで悩んでいる人たちがいるだろうと思ってたんだが 主張根拠を、相手の書き込みの一部だけを恣意的に抽出してつなげて、捏造主体の印象操作を行うことに羞恥心を感じない心の浅い人もいるみたいだし、 聞く場所を間違えた、という結論に至りました^^ JavaのOpenJDKはLTSバージョンが無くなった .NET復権だろうな この掲示板だけのインシデントと信じたいが、 お前らマジで使えねえな その程度でイキってるからVB.NETが馬鹿にされるんだよ、ゴミ共が GetPrivateProfileStringでINIファイルの全文を読み込む方法ってありますか? >>76 おお!目を通したつもりがよく理解できてなかったよ 大変助かったよ!本当に有難う!精進します。 http://jump.5ch.net/?https ://msdn.microsoft.com/ja-jp/library/cc429779.aspx ここを参考に考えてみたけれど lpDefault NULL で終わる既定の文字列へのポインタを指定します。lpKeyName パラメータで指定したキーが .ini ファイル内に見つからなかった場合、 GetPrivateProfileString 関数はこの既定の文字列を、lpReturnedString パラメータが指すバッファへコピーします。lpDefault パラメータで NULL を指定することはできません。 第一引数と第二引数をNULLにしてSECTIONとKEYを一挙に取得したい際、pKeyName パラメータで指定したキーが見つからないってことだと思うから 結局第三引数が第四引数の中に入っちゃうのですが 解釈がおかしいのでしょうか >>78 実際にやってみた?、考えただけ? 普通に解釈すればlpKeyNameがNULLということは キーを指定していないんだからキーが見つからないと なるとは考えられないけどね 実際にやってみてlpDefaultの値がlpReturnedStringに 入ってしまったのならこの関数で全文取得は無理なんじゃないかな >>79 実際にやってみて入らなかったよ、教えてくれたのに申し訳ない。 INIファイルからキーを全部抽出して任意のタイミングで変数に入れたいだけなんだが 調べてもよく分からなくて質問を受けてくれてる方にも 困惑させてしまっているな... 30分ごとに料金を+500円ずつ足していってラベルテキストに表示するプログラムが作りたいのですが どうすればいいでしょうか? 経過時間を計測するところまではできています >>81 Tickイベントで1秒毎に変数に1足していって300.600.900辺りで表示するようにすればいい >>80 > 第一引数と第二引数をNULLにしてSECTIONとKEYを一挙に取得したい 誤解してない? これで手に入るのはセクションの一覧だよ その後で個々のセクションごとに改めて第2引数だけNULLでGetPrivateProfileStringを呼び出してそのセクション内のキー一覧を取得する ほかの確認事項としては iniのファイルパスが正しい確認、念のためフルパスで渡す \0で区切られた文字列はStringとかStringBuilderとかでは正しく受け取れないからByte配列で受け取ってEncoding::GetStringで文字列変換 >>83 ごめんなさい、少し勘違いをしていました。 第一引数でセクションを指定し、第二引数をVBNullStringにした場合、キー値ではなく何故かセクション名をひとつだけ取得するのですが、第一引数でセクションを指定し、第二引数をnullにすれば指定したセクションのキー値をすべて取得できるという解釈は誤りでしょうか? > 第一引数でセクションを指定し、第二引数をnullにすれば指定したセクションのキー値をすべて取得できるという解釈は誤りでしょうか? 解釈は正しい セクションしか取れないのは何か勘違いしてんじゃね 1つしか取れないのは>>83 の最後の行 >>85 GetPrivateProfileString(セクションの変数, キー値の変数, "", strBuffer, strBuffer.Capacity, FileName) KeyValue =strBuffer.ToString 第一引数でセクションの変数(ここでは「element」とします。)第二引数にVBNullStringを代入した際、strBufferに格納される値が 「element」のみなのですが>>85 さんの仰るとおり何か勘違いをしているのでしょうか... 以下、INIファイルです [element] VALUE1 = AAA\nBBB VALUE2 = CCC\nDDD [element2] VALUE3 = EEE\nFFF VALUE4 = GGG\nHHH 本来VALUE1の値である「AAA\nBBB」とVALUE2の値である「CCC\nDDD」が取得されるものかと思っておりました。 大して複雑でもないんだから、悩むなら ファイル全読して自分で解析した方が早そう >>86 ヌルストリングはヌル値じゃなくて空文字列の事じゃん? nullにすればって言ってるからヌル渡してると思うじゃん? まさか空文字列を渡して動かないと言ってるとは思わないじゃん? (定数) Constants.vbNullString As String = Nothing インテリセンスによるとこうらしい 説明では長さ0の文字列とか言ってるけどな >>86 GetPrivateProfileString("element", vbNullString, ... としたときにバッファに帰る文字列は "VALUE1" & vbNullChar & "VALUE2" & vbNullChar & vbNullChar なので、lpReturnedString に StringBuilder を渡すと最初の vbNullChar で区切られてしまう。 こういうときは >>83 が書いてくれてるようにバイト配列で受けるか、 Marshal.AllocHGlobal でバッファを確保してアドレスを渡す。 Unicode バージョンを呼び出している場合は Dim bufferPtr As IntPtr = Marshal.AllocHGlobal(1024) Dim buffer As String = String.Empty Dim nSize As Integer = GetPrivateProfileString("element", vbNullString, vbNullString, bufferPtr, 512, "C:\HOGE.ini") If nSize > 0 Then buffer = Marshal.PtrToStringUni(bufferPtr, nSize - 1) Marshal.FreeHGlobal(bufferPtr) Dim keys As String() = buffer.Split(vbNullChar) こんな感じ >>90 Nothingを文字列として評価すると長さゼロの文字列だからな VBのNothingはnullではなく型の規定値だったはず。 つまり、 Dim hoge as String = Nothing はC#の var hoge = default(string); と同じはず。 だからどっちにしろ空文字ではなくNull参照じゃないとおかしい気がする Debug.Print("{0}", String.Empty.Equals(vbNullString)) .. False Debug.Print("{0}", String.Empty = vbNullString) ... True 面白いな。 WindowsFormアプリからExcelを参照する際に困ったことがあったので質問します。 いま参照しているExcelに名前ボックスが同じ名前のActivexコントロール(CheckBox)が2つあるんですが片方のValue値が取れません。 Excelには手を加えずに解決する方法をご存じの方はいますか? >>97 (Excelシート名).OLEObject(1).Object.Value 名前じゃなくインデックスで値を拾う感じ datagridviewで選択した行のテキストを各列ごとにテキストボックスに反映させるにはどうすればいいですか? BindingSourceを作って DataGridViewのDataSourceと各TextBoxのDataBindingに割り当てる read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる