古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net
ここは古代に使われていたVisual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。
○ 質問者の心得
一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
二.VBScript、インストーラーなどはこのスレでOK。
三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
四.荒らしは相手しない。
○ 回答者の心得
一.答えられない質問は無駄に罵倒せずスルー。無理するな。
二.代用法を強制しない。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
五.VB情報募集中。
六.回答は質問者が理解できるよう具体的に。
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
http://www.google.co.jp/
前スレ VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
※「まず自分で調べる」クセを身につけよう。 ドラッグ&ドロップして、パスなしのファイル名だけ取得するにはどうしたらよい?
↓だとフルパスで取得してしまう
Private Sub TextBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter
'ドラッグされている内容が文字列型に変換可能な場合
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
'コピーを許可するようにドラッグ元に通知する
e.Effect = DragDropEffects.Copy
End If
End Sub
Private Sub TextBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragDrop
'ドロップされた内容を表示する
TextBox1.Text = e.Data.GetData(DataFormats.FileDrop)(0)
End Sub >>310
フルパスからファイル名抜き出すってのじゃいかんの? 円マークで分割して最後を取得みたいに?
最悪それでもいいんだけどVBさんならちょっとしたオプションで出来るかなと思って >>311
探しても見つからなかったから分割してやった。レスありがとう プログラム保存し忘れたんだけど復活させる方法ありますか?
ソースファイル単位では保存してます >>295
マルチスレッドと別プロセスって実際どんだけ違うものなのかな? >>317
プロセスが別=メモリ空間が別,別プロセスになると切り替えにコストが多く発生する プロセス単位だとリソースをいくらリークさせても終わった時点でOSが面倒見てくれる
スレッドは自分で管理しないとプロセスが生きてる限りリークし放題
Excel VBAでしょーもない再起動が必要になったりするのはそれが原因 PNGを表示するのに明熊さんのTransG32.dllを使ってる人いる?
4000ピクセル四方程度のPNGは開けたりクラッシュしたり
どういう条件だとクラッシュするのか、
PNGの幅x高さの値と関係するのか調べても境界がはっきりしない
じゃあファイルのバイトサイズかなぁとログをとって気長に調べているのだけど
何か知ってる人はいますか ああそうだ、開けるPNGファイルを
メモリの少ないPCでも開けるかやってみればいいか すいません、
VB6の頃のopen文だっけ?に比べてVB.netやC#のファイル操作は遅くて
別のものを使うとVB6より速くなるみたいな
そんな記事をかなり昔みた記憶をふと思い出してググってみたのですが、その記事が見つかりませんでした。
どなたかこれの内容って覚えていませんか? 誘導されてきました。
質問させてください。以下の現象が解決できず悩んでいます。
何か思い当たる解決方法をご存知の方がいれば、情報提供をお願いします。
■開発言語 : VB6.0(SP6だったと思う)
■プラットフォーム : Windows10(64bit)
■互換モード : Windows2000
■現象 : 「CommonDialog.ShowOpen」時にエラーが発生
■エラー内容 :
Microsoft Visual C++ Runtime Library
Runtime Error!
Program:xxxx\xxxx.exe
abnormal program termination
Windows8.1(64bit)では問題なく動作します。
互換モードをWindows2000以外にした場合、Windows10(64bit)でも問題なく動作します。
コモンダイアログはファイルを開く目的で実装しており、エラーが発生してもダイアログ自体は表示されます。
エラーを無視すればファイルの選択を行うことも可能で後続の処理も問題なく動作します。
以下のことは試したのですが、効果がありませんでした。
・「VB6Runtime」の最新化
・正常に動作する環境(Win8.1等)の「COMDLG32.OCX」を適用
・「VC++Runtime 2005〜2015」のインストール
以上、よろしくお願いします。 >>324
件のプロセスをキックする親プロセスがいるのですが、
親プロセスがWindows2000互換で動作しているため、引きずられてWindows2000互換で動作してしまいます。
親プロセスの互換モードを変えれば、エラーは発生しないのですが、この親プロセスからは
他に300近いプロセスをキックしているため、変更した互換モードで他のプロセスの動作検証を行う必要が出てきます。
それは避けたいため、Windows2000互換のままでも解決できる方法を探している状況です。 子プロセスの互換モードって絶対親と同じじゃないとダメなんだっけ?
互換性データベースとかいじれば何とかならんのかな >>323
本件については、質問してから時間が経ってしまったこともあり
工期の問題もあったため、2003SV互換ですべて検証し直しました。
Win7(64bit)なんかではWScript.Runで呼び出すことで子プロセスに設定された互換モードで動かせていたみたいです。
Win10ではそれも効かなくなっているみたいですが。
>>326
色々調べた中で互換性データベースについては初めて目にしました。調べてみます。 整数型はLongを扱うプロパティが大部分なのとループも4バイト整数が効率的なはずなのに、
他人の書いたコードは大部分がIntegerです。この型を選ぶ理由を教えてください。 >>328
大昔のBASICにlong型がなかったから
当時の人材が今でも活躍してるんで。 コモンダイアログは使っちゃだめだよね
将来的に使えなくなる可能性があるからAPIで書いておかないと
という話の「将来」が今田 将来的にVBは産廃になるから移行しやすいようにレイヤー分割しとけよ
という話が教会に異端認定されて迫害されたから今苦労してるんだよね 質問させてください。
VB初心者です。(普段はもっと古代言語を使用しています)
環境:windows7,office2010,vb6,activereports2.0j
VBのフォームにOLEを配置してEXCELを表示し、
ボタンを押すと、doverbメソッドが実行されてそのEXCELを編集出来るというプログラムがあります。
開発環境では問題無く動いたのですが、
実行環境で編集ボタンを押すと、押した時にはEXCELがアクティブになるのですが、
すぐにフォームのほうがアクティブになってしまい、EXCELを編集出来ません。
何度EXCELのほうにマウスを当てても戻ってしまいます。
環境かな?と思うのですが、何が原因なのか検討もつきません。
どなたか、何か思いつくことがあれば教えていただけないでしょうか?
よろしくお願いします。 timerイベントで以下の処理を行っているのが原因でした。
If Me.Enabled = True Then
Me.SetFocus
End If
根本的な原因では無さそうな気がしますが、
特に問題もないようなのでこの処理を削除しました。 XPか7以降だったか
プロセスやスレッド間をまたがるフォーカス移動の挙動は仕様が変わってるから
SetFocusだけでは意図通り動かないと思う
説明がめんどくさいので解決したならいいけど まだVB.NETスレとパート数20くらい差があるのはすごい VBで困ったときにネット検索しても余り出てこなくなったんだよ パーツをペタペタ貼れるVB系は6.0しかないの?
.netでもそれさえあれば移行するのに。 Win7で普通に組めるのは良いが配置したコントロール類を一括ドラッグ、位置調整するのが辛いな >>340
.netでも、ふつうにパーツペタペタ出来る >>342
マジで?
そういうツールが売ってるの? >>343
パーツがボタンやラベルのことならば標準機能で貼れる
お試し版あるからダウンロードして試したらヨカ Microsoft Team Explorer for Visual Studio 2013のMicrosoft Visual Basic 2013を使ってみたのですけど、コントロールを貼り付けられるようには出来てないような?
VB6でいうところのオブジェクトを表示する事が出来ませんよね? 新規プロジェクトで
Windowsフォームアプリケーション選び
form1.vb選択して、右クリック
ビューデザイナー開いておいて
左側のツールボックス開いたらコントロール群あるから
選んで貼り付け ファイルリストボックスって
なまじっか英数字のファイル名だとソートしてるから、そのまま使えると思ってたら
漢字は中途半端なソートするね もう今年で20年だろw
まだ使ってる人いるのかw
いい加減成仏させてやれよw >>347
おぉぉ出来ました、ありがとうございます、ありがとうございます。 >>346
色々あってよく分からなかったのですが、もしかしてこれは.netでは無いとか? >>351
2013のvb.net
2015と2017もある >>351
だからお前のような馬鹿は1回死んで出直せ 馬鹿に馬鹿と指摘すると、悔しがってこうやって別IDで食って掛かってくるから楽しい 自称「馬鹿に馬鹿と指摘する」馬鹿さん、馬鹿にされて楽しそう。 >>350-351dすが、自分のせいで荒れてしまってすいません。 俺は気にした方がいいと思うよw
さすがにこのやり取りは質問者が叩かれて当たり前。
これが2002年ならわかる。2018年にもなってこれはない。
さすがに釣りだとと思ったらどうやら大真面目らしいのも何とも 好きな子にいじわるしたくなっちゃう小学生男子の気持ち? 知らん事は馬鹿ではない
知らん事を馬鹿だと思っている事が馬鹿なのだ >>365
いじってみてもどうなっているか理解できないから馬鹿だろうが。そもそも製品の構成すら理解しとらん馬鹿だし。 >>367
そんな事よりもボクはキミ自身が馬鹿なのだよという話をしているのだけれども 知らないこと と 自分の力で理解できないことを一緒にして他人を煽ることしかできない馬鹿
↓
ID:3WbICYQr 開発中に気が触れてしまう人もいるので、そっとしておきましょう
ここでは、開発が本業でなく、例えば八百屋さんがプログラムをいじってるなんて場合もあるのだから
自分の狭い専門分野で人を見下すのはバカ丸出しなんだよね >>370
八百屋ナメんなよコラ。お前市場行ってセリで買えるか?セリにsnipetなんかねえんだよ。
全部キロ単位の値段設定だぜ?即座に頭で歩留まり計算しておかないと儲け出ねえんだぜ?
八百屋、魚屋のような生モノ扱う仕事は常にtry-catch-finaryでロスが出ねえように考えて仕入れ販売
しないとあっさり赤字こくんだよ。
コード屋はそりゃ大変だろうが、楽な仕事なんかねえんだよ >>370
青果市場のセリで、キャベツを指差しして「これは白菜ですね!」とか大声で叫んでみろよ。
お前のようなゆとりの馬鹿が社会をダメにする。 VB6では任意に例外を投げることはできないのでしょうか ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ Private Sub Form_Load()
Text1 = "106.456"
Command1.Caption = "▲"
End Sub
となっています
1ドルなん円という数字が入っていて
小数2位以下はいらないので▲ボタンを押すごとに
106.456→106.500→106.600→106.700・・・
となるように
Private Sub Command1_Click()
Dim v&
v& = Int(Val(Text1) * 10) + 1
Text1 = Format(v& / 10, "0.000")
End Sub
2行のプログラムをつくりましたが、あら不思議、これは動きません
Intが悪さをしている、Intはいらないと分かったのですが
なぜIntが悪さをするのでしょうか 整数型に変換してるんですけど
INTの外にある「+1」が無効になる感じです v& = Clng(Val(Text1) * 10) + 1 Dim v&
この瞬間見る気が失せた
v& = Int(Val(Text1) * 10) + 1
↓
v& = CInt(Val(Text1) * 10) + 1 お二方のは、最初の1回だけ動いて、
以降は動かなくなりましたよ
しかしCsngやValだと
106.456→106.500→106.600→106.700・・・
としたいところ
106.456→106.600→106.700・・・
になってしまうけど、まぁ動きました
お手間をとらせました、有難うございました ああ分かったよ
実数の扱いの深い部分だね
Debug.Printで見ても表示されないから分からなかったわけだ これだ
? Csng("125.600") * 10
1256
? Csng("125.600") * 10 + 0!
1256
? Csng("125.600") * 10 + 0.0
1255.99998474121 こんなやつが作ったソフトを使う人がいるのかと思うと・・・ >>386
と思うだろ?ところがすっとこどっこい
お前が使ってるソフトを作ってるやつも似たりよったりなんだぜw VB.Net ではなくVB6.0を愛用してます。
世の中64ビットOSになり、次は128ビットになりっとどんどん大きくなると思うんですが、
今まで作成した私のVB6.0のアプリは今度どうなるのでしょうか。
多少VC++が分かるんですが、実装するのはやっぱり使い慣れたVB6.0が手っ取り早いし簡単で、ずっと使いたいんですが、、、 >>388
切迫感無いですね
保全関係の請負で食べてる人ですか?
それだけ過去資産持ってるならそれをC++なりで再現する方向で精進するのが普通の発想だと思いますがね >>388
OSがランタイムサポート打ち切るだろうからお前も死亡 「系」で良いのなら全ての現代的プログラミング言語は
BASICの影響を受けたBASIC系言語と言えるよ
プログラミング言語の系図ぐぐってみ 大昔N88やクイックBasicで
遊んでいたのでちょっと気に成った YoutubeをTHXでダウンロードすると動画タイトルがファイル名になることがあって
動画タイトルに連音符のような特殊文字が使われているとVBで扱えなくなる
エクスプローラでリネームしてやれば済む話だけども
寝てる間にダウンロードして所定のフォルダに所定のファイル名で保存するプログラムは動作しない
変な文字コードが入り込んだファイルというのはFileListBox上には存在するけども
FileLen,Open,Name,FileCopyなどでは存在しないファイルとなる
実際のファイル名とVBが見ているファイル名が違うからだと思われる 例えば適当なテキストファイルがあって、それをエクスプローラで
12♬34.txt
とリネームします
これをVBのプログラムで読むには? そもそもVB6ってロングファイルネームサポートされてないんじゃ?
8.3形式のファイル名で読むしかないんじゃね >>398
そいつはこの板を荒らしてるBasicジジイだ。触っちゃいけない >>401
そもそも VB6.0 のコードエディタに貼り付けても化けちゃうしw
CreateFileW 等の API を使ってゴリゴリ書くしかないだろうね。
あと、MAX_PATH を超えるような場合は \\?\ や \\?\UNC\ 等のプレフィックスをつける必要がある。
ttps://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx まだ使ってる人いるのかw
VBって割と最初からUnicode対応だと思ったけど、IDEのエディターやコンパイラは対応してなかったのかw 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
LVCSB