1 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:50:27.76 ] ここは Visual Basic 〜6.0 の質問スレです。 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。 ○ 質問者の心得 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。 二.VBScript、インストーラーなどはこのスレでOK。 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。 四.荒らしは相手しない。 ○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。 三.回答する上で必須ではない情報をむやみに聞き返さない。 四.荒らしは相手しない。 五.VB情報募集中。 六.回答は質問者が理解できるよう具体的に。 MSDN Online Japan ホーム www.microsoft.com/japan/msdn/default.asp Visual Studio 6.0 Service Pack 6 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx Google www.google.co.jp/ ※「まず自分で調べる」クセを身につけよう。
313 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 17:30:20.52 ] strnameとname$のどっちが可読性が上かは 読む人の慣れとかクセとかでどっちが上とは言えないと思うが 世の中にはstrnameとかいう名前の数値型の変数を定義するような奴がいたりするからなぁ
314 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 18:41:31.75 ] 型のある変数を使わなければ解決だな 毎回長文コーディングになるけど objectとかは知らん
315 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 19:44:59.73 ] 10年遅れのハンガリアン っていうか、>>310 のようなマクロてんこ盛りのアセンブラみたいなコード読みたくないw
316 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 23:35:59.77 ] 記号打つときシフトキー押すのしんどい Dim以外では変数名を途中入力で補完できりゃいいのに
317 名前:デフォルトの名無しさん mailto:sage [2011/06/30(木) 23:54:24.40 ] あずにゃ・・・じゃなくて、As 〜で型によって色が変われば分かりやすくね? つか、変えられなかったっけ? おれは、dblExsample lngExsample intExsample strExsample とか先頭みるだけで すぐわかるけどなー。 %とか&とか$とか#とか初めて知ったw 低レベルでさーせん。
318 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 00:15:45.44 ] 俺は$が文字型ってくらいしか知らないな。ポケコン世代だけど
319 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 14:08:40.58 ] その手の記号もAsと同じだから宣言時だけつけてりゃ使えたような気がする Dim name$, unko&(10) name = "namae" unko(5) = 1000 って
320 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 14:10:25.36 ] >>317 >>265 のサイト見てみ。lngというプリフィックスが
321 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 14:20:08.06 ] format$ とかで明示的にStringだってのも懐かしい話だな・・ MSDNもVariantのString みたいな言い回しがめんどくさかったなぁ
322 名前:デフォルトの名無しさん [2011/07/01(金) 19:47:55.35 ] 割り算で結果がどうもおかしいと思ったらIntegerで受けてたとか良くあるじゃん wari! = a% / b% ならそんな間違いは起こらないし、なんでこれが流行らなかったのか不思議
323 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 19:55:21.14 ] そんな間違いあんただけだってw
324 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 21:01:31.55 ] &とか%とかそういので型変換もできたらいいなと思う
325 名前:デフォルトの名無しさん mailto:sage [2011/07/01(金) 21:50:12.69 ] VB6.XまたはSP7に期待ですね そんなもの出ないけど
326 名前:デフォルトの名無しさん [2011/07/04(月) 18:41:27.30 ] 時々、Lineメソッドで間違ってないのにパラメータがどうこうってエラーが出る? プロジェクトを一旦閉じてから開き直すと直るけど
327 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 20:27:45.01 ] >>326 エラーが出るのならば、どこかしらが「間違ってる」と思った方がいいよ。 詳細が分からないから勘だけど、どっかでメモリリーク起こしてるんじゃないかな。
328 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 20:30:15.50 ] 馬鹿っぽい質問に馬鹿っぽい回答だな....
329 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 20:38:46.74 ] >>326 変数はもちろん Variant 型だよな!
330 名前:デフォルトの名無しさん mailto:sage [2011/07/04(月) 21:19:46.26 ] >>326 >使用しているOS、VBのバージョン、サービスパックのバージョン
331 名前:327 mailto:sage [2011/07/04(月) 22:59:04.79 ] 馬鹿っぽくて悪かったな。
332 名前:デフォルトの名無しさん mailto:sage [2011/07/05(火) 03:16:49.63 ] エスパーか
333 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 13:05:43.46 ] LE使いってどれくらいいる?
334 名前:デフォルトの名無しさん [2011/07/06(水) 18:53:51.59 ] >>327 やっぱり、メモリリークとかでしょうね、VBの Lineメソッドでエラーにはなるけど、決まったコードで出るわけではないし ある特定のプロジェクトで出るわけでもないので詳細は書きようもないですが プログラムがある程度大きい場合に、たまに発生するようです 再現したらキャプろうと思ったけど期待すると出てこない・・
335 名前:327 mailto:sage [2011/07/06(水) 23:13:20.19 ] >>334 エラー画面をキャプチャーしても原因はそこでは無いだろうから、 途中経過をモニタリングすべきだと思います。 (メモリの消費状況、インスタンスの開放、配列のErase等々) どうみてもプログラムに間違いが無さそうならば、 Service Packが最新になっているか確認してみてはどうでしょう?
336 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 23:15:05.01 ] 環境を疑う前にコードを疑えって。 ダメな奴ほど環境を疑う。
337 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:13:49.97 ] それほど対してソースコードは無いんですが実行速度が遅くて困っています 現状フォーム内にメソッドを記述して全ての処理を動かしているのですが クラスに書き込めば速度向上が望めるでしょうか それとも実行速度ってコード量に比例するってだけなのですか 教えてください。
338 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:36:33.41 ] LE使いなのでよう知らんがコンパイルスイッチとかいうので実行速度を最適化とかいうの使えばいいとちゃうのん?LEそういう機能がないので全くわからないが。ただの独り言です。
339 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:39:22.99 ] >>337 >クラスに書き込めば速度向上が望めるでしょうか 望めない。理論的にはクラス生成と呼び出しの分遅くなる >それとも実行速度ってコード量に比例するってだけなのですか いいえ 起動にかかる時間はコード量(厳密にはコンパイル後のサイズ)に影響されます 起動後の実行速度には関係ありません
340 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 00:46:51.19 ] コンパイルスイッチってvbにありましたっけ?? C言語とかだとコンパイラーが持ってたりしますけど・・・
341 名前:327 mailto:sage [2011/07/07(木) 08:26:20.69 ] >>337 どのような処理なのか分からないと高速化もアドバイスしにくいですが、 一般的にはAPIの使用、キャッシュ、バッファリング、アルゴリズムの最適化 といったところでしょうか。 フォーム内にコードが大量にあるとすると、ロードに時間が掛かる可能性はあります。 >>340 オプション画面から指定できます。 VB5からネイティブコンパイル可能になったからです。 IDEからの動作ですと、インタプリタ(のような)動作ですので、効かないと思います。
342 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 16:54:10.83 ] 自分で契約しているサーバの負荷等を調べるものを作っているのですが、 8つ契約しているので、下記のコードで1個1個順番に行っていると遅いので、 マルチスレッド?で行いたいのですが、下記の事をマルチスレッドで同時に 行うにはどのようにすればよいのでしょうか? (下のソースも部分的にサンプルサイト等を見て書いたものなので、自分は ほとんど始めたばかりな感じで、マルチスレッドの基本についても全く分かりません。) Windows XP SP3 + VB6 SP6を使っています。 もし、やり方が分かる方いましたら教えていただけるとありがたいです。
343 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/07(木) 16:55:28.31 ] Private Sub Server_Check(ByVal MyServer As String, ByVal MyNumber As Integer, ByVal CPU As String) On Err GoTo Err ' If MyServer = "" Then Exit Sub 'サーバーチェックを実行 If MyCounter = 1 Then Set objIE = CreateObject("InternetExplorer.Application") End If ' With objIE .Navigate "http://" & MyServer & ".example.com/cgi/check.php" Do Until ((.Busy = False) And (.ReadyState = READYSTATE_COMPLETE)) Loop End With ' 必要な変数を宣言する Dim stCsvData As String 'エラー If objIE.Document.All(0).InnerHTML = "" Then GoTo Err If InStr(objIE.Document.All(0).InnerHTML, "404 Not Found") <> 0 Then GoTo Err
344 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/07(木) 16:55:48.77 ] 'データ取得 stCsvData = objIE.Document.getElementById("status").InnerHTML ' カンマ区切りで分割して配列に格納する Dim stArrayData() As String stArrayData = Split(stCsvData, ",") ' ReDim Preserve stArrayData(UBound(stArrayData()) + 1) stArrayData(13) = CPU ' データを確認する Dim i As Integer For i = 0 To UBound(stArrayData()) MSHFlexGrid1.TextMatrix(MyNumber, i + 1) = stArrayData(i) Next i ' If MyCounter = 8 Then objIE.Quit Set objIE = Nothing End If Exit Sub Err: If MyCounter = 8 Then objIE.Quit Set objIE = Nothing End If End Sub 以上です、よろしくお願いします。
345 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 17:58:47.53 ] まて・・・VB6でマルチスレッドはAPI使えばいけるが 確かやばかった記憶が・・・・ どうせなら同じプログラム8つ動かしてマルチプロセス とかどうよ?w
346 名前:デフォルトの名無しさん mailto:sage [2011/07/07(木) 20:52:56.96 ] VB6はシングルスレッドじゃないのか
347 名前:327 mailto:sage [2011/07/07(木) 23:21:24.06 ] >>342 マルチスレッドにするにせよ、プロセスを分けるにせよ、 このプログラムのようなIEのインスタンスが一つしか 作成されないような構造では、上手く行かないでしょう。 まず、IEのインスタンスが8個作成されるように改造してください。 (それ自体が不可能な場合はsocketを使用するなどして、 かなりの部分を自作する必要があるので、かなり難しいかと) IEのインスタンスが複数作成できたならば、問題は Do Untilでのブロック動作だと思うので、DoEventsと タイマーコントロールで問題回避できると思います。 あと、余計なお世話だとは思いますが、動かす際には 無用なリクエストが大量発行されないように注意してください。 意図せずにDoS攻撃になってしまう可能性があります。
348 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/08(金) 01:11:18.20 ] >>347 レスありがとうございます。 IEの部分は8個作成してもOKです。 >IEのインスタンスが複数作成できたならば、問題は >Do Untilでのブロック動作だと思うので、DoEventsと >タイマーコントロールで問題回避できると思います。 この部分はどのようにすればよいか、もしよろしければサンプルをお願いできませんでしょうか。 動かす際には、まず自鯖で試しています。 お気づかいありがとうございます。
349 名前:デフォルトの名無しさん mailto:sage [2011/07/08(金) 05:04:31.46 ] >>345 VBのランタイム関数がスレッドセーフである事を保証しないので使えないのと関数を使えないのと、 IDEのインタプリタ上で動かしているとクラッシュするだけで、 大きな問題は無いよ。
350 名前:デフォルトの名無しさん mailto:sage [2011/07/08(金) 09:32:46.33 ] >>349 あと、たしか実行ファイルがPコードコンパイルじゃなかったら不具合がおきたと思うんだが。
351 名前:327 mailto:sage [2011/07/09(土) 01:00:28.84 ] >>342 サンプル作ろうと思ったら、環境(と、ついでに時間)がありませんでした。 ゴメンナサイ。 一週間ぐらい待てるならば作りますので、言ってください。 とりあえず、大まかな話を。 恐らく目的を達成するにはタイマーコントロールを使用してタイムスライス っぽいことを実装するのが一番手っ取り早いと思います。 現在、Do Untilで行っている動作は完全に処理をブロックしてしまっていて 他に何もできなくなっているので、その部分をタイマーコントロールを 使用して一定周期で監視するように改造するのです。 その際、タイマーコントロールのルーチン内で1〜8までのサーバの 状態を順番に監視するようにします。 イメージはこんな感じ↓。
352 名前:327 mailto:sage [2011/07/09(土) 01:01:08.37 ] private sub timer1_timer() select case(server) case server1 if ((ie1.Busy = False) And (ie1.ReadyState = READYSTATE_COMPLETE))then server1flag=true end if server=server2 … case server8 if ((ie8.Busy = False) And (ie8.ReadyState = READYSTATE_COMPLETE))then server8flag=true end if server=server1 end select if server1flag and … and server1flag then timer1.enabled=false end if end sub 伝わりますかね…?
353 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 01:07:07.92 ] While Flag DoEvents Wend
354 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 04:16:37.55 ] 今から勉強して新規でプログラム作るなら、.NETでやった方がいいと思うんだが...
355 名前:342 ◆XuL15E5UEM mailto:sage [2011/07/09(土) 11:52:45.74 ] >>351 お忙しいところレスどうもありがとうございます。 時間は1ヵ月でも半年、1年でも待ちます。 351自体は説明内容(単語)が分からずさっぱりなのですが、 352で書いていただいたコードを眺めつつ単語も調べて試して みたいと思います。(今の段階だとさっぱりなもので・・・。) >>354 れすども!? なんとなくVB6の方が操作感?というか分かりやすい気がしたもので。
356 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 11:56:17.52 ] VB6はもう開発終了 メンテナンスもされない。 新しいOSで動作保証がなくなるかもしれない。 自分専用のツールを作って公開しないというのなら 別に構わないが、将来自信作ができたとき、 VB6で作っていると、作り直すはめになるだけ。
357 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 11:58:31.05 ] というか、そもそも、 サーバーの負荷を調べる程度で、 IEを起動しているのがそもそもの間違い。 IEを起動・・・= CreateObject("InternetExplorer.Application") の部分 重いのがいやならマルチスレッドうんぬんではなく IEを起動しないようにするのが正解。
358 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 12:55:42.79 ] よくわかんねーけどサーバのステータスがhtmlで取得できるならGETして中身見るだけですむよね
359 名前:デフォルトの名無しさん [2011/07/09(土) 13:40:11.88 ] 回線の負荷か CPUの負荷ならレジストリ見ればいいらしいが
360 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 16:28:24.52 ] 馬鹿ばっか
361 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 20:24:18.66 ] 「バカ」と罵る奴は何がしたいのか分からんな
362 名前:デフォルトの名無しさん mailto:sage [2011/07/09(土) 21:07:44.98 ] バカにはわからんよ。
363 名前:デフォルトの名無しさん mailto:sage [2011/07/10(日) 17:27:47.56 ] >VB6はもう開発終了 NETも汎用性がなさそうだしな
364 名前:デフォルトの名無しさん mailto:sage [2011/07/10(日) 18:15:51.91 ] 未だにVB6製のソフトウェア使ってる企業は何で
365 名前:デフォルトの名無しさん [2011/07/10(日) 18:48:15.42 ] バカは自分が理解できないと人をバカという転位行動をとるよ
366 名前:sage [2011/07/14(木) 23:02:07.01 ] テキストボックスにあるカンマで区切られたデータ(CSVデータ)があって データを逆順に「りんご,ごりら,らっぱ」→「らっぱ,ごりら,りんご」と 途中まではデータが通りここが通ってない ReDim Preserve data(i + 1) Array.Reverse(data) TextBox1.Text = "" For j = 0 To i + 1 TextBox1.Text &= data(j) & "," Next とするのですが動きません。ご教授お願いいたします。
367 名前:デフォルトの名無しさん mailto:sage [2011/07/14(木) 23:03:26.62 ] すいません上げてしまいました
368 名前:327 mailto:sage [2011/07/15(金) 02:41:19.28 ] >>366 TextBox1.Text &= data(j) & "," ↓ TextBox1.Text = TextBox1.Text & data(j) & ","
369 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 09:47:28.63 ] >Array.Reverse(data) こんなのVB6にあったっけ? .netならわかるが・・・ 手抜きだと Private Sub Command1_Click() Dim text As String text = "ごりら,りんご,らっぱ" Dim arr() As String arr = Split(text, ",") Dim i As Long Dim changedText As String For i = UBound(arr) To LBound(arr) Step -1 changedText = changedText & arr(i) & vbCrLf Next MsgBox (changedText) End Sub
370 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 10:06:09.68 ] >>366 そもそも配列をいちいち逆順にソートし直す必要があるのかね? For を後ろから-1してくればいいのだとおもうが
371 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 22:47:25.91 ] >>368-370 ありがとうございました。スレ違いだったみたいです 丁寧なご教授ありがとうございます
372 名前:デフォルトの名無しさん mailto:sage [2011/07/15(金) 23:16:24.06 ] >質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 これを徹底させず答えるから
373 名前:デフォルトの名無しさん mailto:sage [2011/07/22(金) 16:16:59.87 ] 保守
374 名前:デフォルトの名無しさん [2011/07/29(金) 11:58:12.94 ] 保守2
375 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 13:50:46.57 ] 保守なんぞしなくても、この板では落ちないだろ
376 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 15:34:56.75 ] hibari.2ch.net/news4vip/subject.txt を取得して動的二次元配列に1行ずつ代入するにはどうしたらいいでしょうか
377 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 16:54:49.27 ] ふつうにOPENして読み込めばOK 一気に読み込んでsplitかけるなり一行づつREDIMして読むなりそのまま使うなりご自由に
378 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:09:56.68 ] splitかけるとして改行コードは何でしょうか
379 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:11:54.16 ] そんな事いちいち聞くなよ
380 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:13:44.35 ] vbCrLfでやってみたのですがうまくできなかったので・・・
381 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 18:33:33.59 ] >>380 バイナリエディタで開けば、改行にどんなコードが使われているか確認できるお
382 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 23:58:30.78 ] >>376 ,378,380 かなり情報古いけどここの情報も見ておけば?きっとここに書いてあるようなところで躓くはずだから ttp://age.s22.xrea.com/talk2ch/
383 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 00:24:54.94 ] >>380 Dim Kaigyo$, Subject$, Subjects$() If InStr(1, Subject$, vbNewLine) > 0 Then Kaigyo$ = vbNewLine ElseIf InStr(1, Subject$, vbCrLf) > 0 Then Kaigyo$ = vbCrLf ElseIf InStr(1, Subject$, vbCr) > 0 Then Kaigyo$ = vbCr ElseIf InStr(1, Subject$, vbLf) > 0 Then Kaigyo$ = vbLf Else Stop End If Subjects$ = Split(Subject$, Kaigyo$)
384 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 00:28:52.62 ] >>381-383 vbLfでした!ありがとうございます!
385 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 14:13:48.49 ] vb6ってUTF8をそのまま読めたっけか
386 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 14:16:52.32 ] vbNewLineって使うのまずいんじゃね
387 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 14:23:44.49 ] 読んで配列に入れるだけなら問題ないんじゃね?妙な変換されたっけ?
388 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 23:38:04.61 ] ? subject.txtってUTF8になったの?
389 名前:デフォルトの名無しさん mailto:sage [2011/08/01(月) 23:46:36.19 ] フォーム上にPictureBoxを配置しています PictureBoxの角に○を書くにはどうしたらよいでしょう? uproda.2ch-library.com/lib410514.bmp.shtml 上記が実現したいイメージです。○はペイントで書きました
390 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:38:42.58 ] 画像見れない
391 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:39:14.19 ] Circleメソッド
392 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:40:41.31 ] じゃ無理か
393 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 02:49:33.31 ] 目的や用途が不明だからよく分からんが 4つの白い四角形がそれぞれPictureBoxコントロールなのか? でかいPictureBoxコントロールにぽつんとその四角描けば円も描けるだろうけど
394 名前:デフォルトの名無しさん mailto:sage [2011/08/02(火) 09:19:39.01 ] 61,61以上のPictureBox(以下、Picture1とする)にその□を書いて、 Picture1.Circle(12, 12), 11, RGB(255, 0, 0)とすればいいんでない? ※サイズはその画像から計算 その□の角が中心点だと、その半径分だけ大きいPicture1が必要だよね?
395 名前:デフォルトの名無しさん [2011/08/03(水) 00:07:20.45 ] Line(x, 1)-(x, 5), &hff って高さ4ピクセルの縦線なんだよ 変な仕様だよね
396 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 00:12:10.29 ] 全然変じゃない。 ピクセルなどという、表示デバイスの都合に依存したフレームで考えてるから 変に思えるだけ。
397 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 00:47:37.40 ] ユーザー定義もできるーVB6標準コントロールどものスケール
398 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 09:37:18.11 ] XPでVB6SP6使ってるんですが 実行時エラー9 インデックスが有効範囲にありませんっていうエラーって 配列変数以外で起こる原因ってなんなんでしょうか?
399 名前:デフォルトの名無しさん [2011/08/03(水) 09:54:47.09 ] >>396 じゃあ、ピクセル単位で(x1,y1)から(x2,y2)まで線を引く必要が生じた場合は Psetを用いる以外にどのような方法が? >>398 なんか覚えがある もうちょっと詳しく
400 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 10:09:28.10 ] >>399 あるプロシージャ内で配列変数は使ってなく RDOを使用してMSSQLに対してSELECT文を実行し OpenStaticで取得したrdoResultsetのRowCountを参照して、 RowCountが1以上だったら実処理用のプロシージャをコールするだけなんですが コールするプロシージャはそっち側でOnErrorしてますのでコール元にエラーが返ってくることはなく なぜか配列を使ってないコール元のプロシージャで実行時エラー9が起きてて悩んでるんです
401 名前:デフォルトの名無しさん [2011/08/04(木) 17:45:29.59 ] >>400 あーごめん、思い出すきっかけになるかと思って聞いてみたんだけど 思い出せなくてキリ番オメとしか言ってあげられない IDEだと発生しないエラーだっけ? 他に心当たりある人がいなければ、コールする部分をコメントアウトしてみるとか コード1行ごとにログを出力するとかして、どこで発生してるか突き止めるしかないね
402 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 02:50:32.56 ] vb6の不思議なとこは 関数の戻り値を関数から出るまでは何回でも変更できるし CとかJAVAならreturnで即終了だいs
403 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 12:21:03.79 ] >returnで即終了だいs returnで即終了だいすけ?
404 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 17:02:26.91 ] >>402 不思議と言うより、そこはVB6の優れているところだね ただ、戻り値の返し方が関数名への代入ってのは頂けない やはりここは関数名ではなく固有キーワードの方が良い
405 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 18:55:29.26 ] cやjavaなら冒頭で戻り値用の変数用意すれば同じことできるし VB6は戻り値設定に関数名使ってるのもだるいが 関数からの抜け出しも文字数長くてしんどい
406 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 20:47:23.43 ] CやJavaでは、戻り値のあるなしどちらでも関数だが VB6は片やfunction 方やsub。 これって何か意味あるかな?
407 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 21:38:00.71 ] >>406 もともとの行番号がついていた時代のBASICには関数はなかった。 しかし関数はなかったがサブルーチンはあった。 変数はグローバルで、サブルーチンは処理をまとめただけ。 CALLはそのサブルーチンを呼び出す命令。 subはその頃から互換性を保ちながらバージョンアップしてきた時の名残。 そもそもBASICは1964年に作られた初心者用言語で (ちなみにC言語は1972年) 今のような使われ方、機能は想定されてなかった。 このような結構名残はたくさんあって、昔のBASICは変数を定義する必要はなかった。 ただし配列を使う場合には特別に定義する命令があった。それがVB6では変数を定義するときの キーワードのDimになっている。DimとはDimension(n次元)の略なのに…の答えがこれ 変数の型も昔のBASICにはAs Integerとかなくて、変数名の最後に %, &, $をつけて表していた。今も使える。 VB6の不思議な仕様はたいてい昔からの名残(互換性維持のため)と考えれば理解できるよ。 初期のBASICの仕様と、それから大きく発展したQUICK BASICの仕様を調べてみたらどうかな。
408 名前:デフォルトの名無しさん mailto:sage [2011/08/07(日) 22:11:16.48 ] >>406 VBだってどっちにしろプロシージャーでしょ。 同じものを「何も返さない処理」と表現するか「無を返す関数」と表現するかの違いだが、 いずれにせよ深い意味なんてない。 数学的には後者の方が統一的で美しいけど、反面直観的ではないな。 線分を多角形の特殊形態だと言うのに近い。
409 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 00:10:20.21 ] .NETに以降したいけど、書き直すのが面倒です! あの変換するの使っても結構修正箇所が。 (これは自分の作りに問題があるのだと思うけど) というわけで、Windows7x64にVB6入れて使っている人いますか? (XPモードじゃなくて)
410 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 00:19:09.74 ] 一応、貼っておくか.... blogs.wankuma.com/jeanne/archive/2006/08/02/34597.aspx
411 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 01:19:35.41 ] 一応、言っておくか.... .NETで作ってあるのもある。 自宅ではVB6だからそれを移行するのが面倒っていう話で。 というか、本題は。 >というわけで、Windows7x64にVB6入れて使っている人いますか? >(XPモードじゃなくて)
412 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 09:43:57.90 ] >>406 単に Pascal に倣っただけでしょ。 「戻り値設定に関数名使ってる」のも同じ。 なんで Pascal は? って聞かれたら Wirth に聞いてくれというしかないが...。
413 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 00:55:54.03 ] >>409 MSにガイドが有るだろ 基本はプロテクトかかってないフォルダ、つまりProgram Filesとか以外にインストールでほぼ動くよ。 やってないとは思うがシステムフォルダのパス取得は直書きしないで全部関数使う 基本32bitで動くからその辺は気にしないで大丈夫だが、 COMとかDLLとかは実際に動かしてチェックしないと解らん。 あとはVirtualStoreとかの隠しフォルダに気をつけるぐらいかな 良く解らなければUAC切れ こいつがファイルからレジストリまでユーザー単位で仮想化してるのがおかしくなる原因だ 後は互換モードを活用する これは過去Ver.と7のAPI対応表を持ってて裏で変換してくれる あ、プリンタAPIとか使ってるならそいつも確認 セッション0問題とかその辺が引っかかる可能性が有る。 ドライバ関係はメーカ対応無かったりで結構泣けた 移行やったの去年だから今はもうちょっと改善されてるかも?