VB.NET質問スレ(Part44)
■ このスレッドは過去ログ倉庫に格納されています
>>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に割り当てる BindingSource って Visible=False なコントロールを飛ばするとか、微妙なところあるんだよなぁ 11/14あたりのWindowsUpdateでListViewの表示がおかしくなった。 正確には「View=Tile」にしてもLargeIconになってしまうケースがある。 既にリリース済みのシステムで今日から表示がおかしいという問合せが あった。どこに原因があるのか確認しようとミニマムなコードを書いて みても普通にTileで表示されるので原因がまだ特定できていない。 それとApplication.EnableVisualStyles()していてもTabコントロール上の ボタンにVisualStyleが適用されないものもある。この時、Tabコントロール 以外に存在するコントロールにはVisualStyleが適用されている。 これも原因がわからない。。 同じような現象になった人っていますか? Windowsフォームを閉じる際にMe.close()とMe.dispose()の両方を書いたら閉じる時の挙動がおかしい(後ろで開いてたエスクプローラーが一瞬だけ出てくる)のですが原因が分かる方いますか? 俺も今月からおかしいのに気が付いた。 Private Abc as String = "AAA"と設定しているのに、 ボタンイベントで下記のみ実行 Abc = "ABDEF" TextBox1.Text = Abc Dim S1 as String = Abc Msgbox(S1) 上記のコードを実行すると Msgboxの表示は”AAA” テキストボックス表示は”ABDEF” 今月になって発覚した。 仕方ないからクラスを追加してグローバル変数にして実行している。 プライベート変数 すべてに影響があって初期値に戻される事象。 vs2017の修正を試したがだめだった。 >>105 の頭が目がおかしいのだろう さすがにそんな言語レベルの根本的なバグがあったら自動テストで拾える Msgboxのバグで以前表示した値が出ているとかならワンチャンないとも言い切れなくもないかもしれない可能性はゼロではないかもね こいつらはどうしてちゃんと環境かかないんだろうねぇ Windows 10 Pro 1803 x64 VisualStudio 2013 + .NET Framework 4 + VB.Net この環境で Windows.Forms アプリを開発してます。 .NET4はとっくにサポート期限切れてるから使っちゃダメ もしWinのアップデートのせいだったとしても、サポート切れの.NET4なんか当然テストしてないだろうし、自己責任よ 当該の不具合が発生している環境は Window 7 Pro x86 です。 後だし情報ですんません。 連投になってしまってすんません。 Windows 7 は 2020年1月で切れるということは、まだ切れてないんじゃ ないんですか? この解釈は間違ってますか? .NET Framework 4 のサポートが終わったってどこに記述ありました? ここにはそこまで書いてないと思うのですが。 https://www.microsoft.com/ja-jp/download/details.aspx?id=17718 そもそもVS2013って、Win10で動作保証されているのか? VB2013てWin8.1までだな。 Win10ならVS2015以降か。 もしかして、開発のプロパティが .NET2とか初期値になってない? PCにインストールしていない下位バージョンの.NET開発は挙動がおかしいよ。 まれだが、バージョンを最新に指定するとなおることも多い。 >>116 対象のフレームワークは.NET Framework 4になってる。 ミニマムに再現確認しようと新規でプロジェクトを(.NET4で)作成しても問題なし。 でも既存のはListViewでView.TileにならずView.LargeIconだったりVisualStyleが適用されなかったりする。。 (Win7の実行環境でもWin10の開発環境でも。) みんなはちゃんと最新の開発環境に移行できてるの!? 今回問題になってるアプリケーションはVS2003の頃に.NET1.1で開発初めて、途中で.NET2.0にして いまはVS2013+.NET4で保守してきてるけど、そんなにポンポンと開発環境をMSの言うがままに アップデートしてきてるの!?!? こういう典型的な保守さんを見ると、そんなにあんたたちの作ったものは品質が高いのかとツッコミたくなる クソ細かいこと気にする前にもっと他にいくらでも直さなきゃいけないところあるだろ? やるべきことをやらないくせに「やらない」ことに対してだけオーバークォリティな典型的な無能 どうさ保障されてる環境でないとサポートされないからな 問題が起きたらまずサポートされてる環境で再現するか確かめるわ >>117 .manifestはないけど.exe.configならある。 <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> <supportedRuntime version="v2.0" sku=".NETFramework,Version=v2.0"/> </startup> と書いてる。 このあたりをv2.0の行を削除してみたりuseLegacyV2RuntimeActivationPolicyを なくしてみたりといじってみたけど解消されず。。 ListViewは.NET4で安定してるはず。 NET4以前は、ある一定行数を超えるとエラーで処理が止まるということがあった。 だから、WIN32APIを使ってWM_PAINTメッセージを処理するコードを使わないと ほぼ動かない状態だった。だが、.NET4でWIN32API呼び出しがいらなくなった。 多分だが、ビルド関係のPC固有のバグも含まれると思う。 なので、VSを終了してデバックされたものではない<開発中のアプリEXE>を 直接動かしてみてね。それでどうか? VS2008の頃は、VSのデバック使わないで開発してた経緯がある。 >>123 .NET4 以前の不具合は知らなかった。ありがとう。 今回の現象は、.NET1.1の頃に開発したソースをそのままずっと引き継いでいて VS2003〜2005〜2008〜2010〜2013、.NET1.1〜2.0〜3.5〜4と変遷しながらも そのまま使用している。 いま起きている不具合は Releaseビルドした実行ファイルを、別PCで実行しても 発生するし、VSでのデバッグ実行でも発生している。 確か、そのころVS2003とかDLL出力できないものだよね。 多分 .resxファイルとか残ってるでしょ? サポート対象のバージョンで動くかどうかではなく、昔から流用してきたコードやメソッドを 見直すほうが先だと思う。古いメソッドとか使ってると微妙なものがある。 >>125 開発当初から.resxファイル使ってるよ。 これマズいの? 確かに過去に.NETを新しいものに変更したときそれまで使用していたメソッドが 使えなくなってメンテした記憶はある。 でも.NET4で作成したアプリがついこの間までは普通に使えていたのに 急に挙動(見た目)が変わるって変じゃない? 単純に ListView の View を Tile にしても LargeIcon になってしまうのって気持ち悪いし。 enum定数の値が変わったとかならわからなくもないけど、実際にはenumのView.Tileを 指定しているし。 ステップ実行してもそのタイミングでViewはTileになっている。 けれども実際の見た目はLargeIconになっている... まあサポートの切れた.NET4を使っていて文句言うなと指摘されそうだけど。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる