VB初心者質問スレ Part4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1000523122/
0446441
NGNG親切にありがとうございました。
今度、これを参考に作りたいと思います。
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGまず、どっからやればいいんでしょうか?
教えてください
0451デフォルトの名無しさん
NGNG15パズルの局面数は、(16!/2)通り≒10 の13 乗。
まず、8パズルぐらいからやってみろ。 (9!/2)= 181440個
0452デフォルトの名無しさん
NGNG14⇔15パズル、しらない?
0453
NGNGhttp://www.incl.ne.jp/~hotcake/puzz15.htm
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG本とか見てもどうもサッパリなんです。
どなたかお教授を・・・
0456デフォルトの名無しさん
NGNG指定した容量の空のFILEなら知りません。
0458デフォルトの名無しさん
NGNG一度にすべてのデータをメモリに展開できないほど大きなデータがあったとして、
(たとえば100MBくらいで、中身は数値) これをソートするにはどうしたらいいのでしょうか。
少しずつ読み込んでソートしても、結局読み込んだ分の中でしかソートできず
全体としてのソートになりません。
そのような場合の考え方を教えていただければと思います。
0459デフォルトの名無しさん
NGNGたとえば、100MBのデータが50MBのデータ2個で、先頭の1バイトで比較できるなら…
100バイトのデータ1M個で、100バイト全部比較しないと順序が決まらないなら…
2バイトのデータ50M個で、数値として比較できるなら…
0461デフォルトの名無しさん
NGNG読めるだけ読んで -> ソート -> 一時ファイルに出力
を繰り返した後、一時ファイルをマージでどうでしょう?
#でかいデータならデータベースに格納した方がいいかもしれませんが。
0462デフォルトの名無しさん
NGNG【米TIME紙】田代を投票で世界一にしよう!!!
みんなそっち行ってるの?
0463デフォルトの名無しさん
NGNG固定長レコードのファイルなら、Putステートメント、Getステート
メントを使って隣り合った前後のレコードを読んで比較してシーク
して書き込んで・・・ってできないかい?バブルソートならロジッ
クはすこぶる簡単。
処理遅いけど。100Mだったら即死だな。DLLだけCで作ると
か・・・?
0464458
NGNGとりあえず今練習で使っているファイルには、ランダムな9桁までの正の整数が
1行に1つずつ格納しています。なので固定長ではありません。
あくまでデカ過ぎるファイルのソートについての勉強ですので、メモリではなく
HDに展開というのはダメなんです。100MBというのもたとえなので、1000GBの
データと考えてもいいです
やはりなかなか難しいものなんですね。
0465デフォルトの名無しさん
NGNGFuncB で起こった実行時エラーや Err.Raise で起こしたエラーを
FuncA の On Error GoTo 〜 で検出したいのですが、うまくいきません。
どうすればよいのでしょうか?
言い換えると、FuncB 内で起こったエラーを引数や戻り値で
検出するのではなく、On Error GoTo 〜 ですべて統一的に処理したいのです。
MSDN のガイドラインには引数、戻り値、On Error のどれかに統一すべきとあったので
可能だとは思うのですが・・
質問の真意、伝わったかちょっと心配ですが、
よろしくお願いします。
0467デフォルトの名無しさん
NGNG9桁の整数なら、1,000,000,000バイトのファイル作って、それをカウンタにするのがいいのかな。
もっと少ない、たとえば4桁とか5桁の整数なら、メモリに配列とってカウンタにしてもいいけど。
整数の場合、ソートするっつか、どの数字が何回出てきたかを数えるほうを考えてみては?
0468デフォルトの名無しさん
NGNG100Mくらいなら、よみこめるんじゃないの?
スワップしまくりだろうけど、とりあえず動くでしょ。
0469デフォルトの名無しさん
NGNGファイルを1行ずつ順に読んで一番小さなものを
ワークファイルに書き出し
また、ファイルを1行ずつ順によんで前回の一番小さい値より
大きくて、それ以外の中では一番小さい値を
ワークファイルに書き出し
あとは、繰り返し
遅いけど、できるね。
0470デフォルトの名無しさん
NGNG順序付けするときに比較するデータが小さい場合は、
メモリに比較するデータへのファイルポインタと比較するデータだけ
読み込んで、それをソートするっていう手もある。
0471デフォルトの名無しさん
NGNG>HDに展開というのはダメなんです
メモリに入らないんなら、HDD上でやるしかないと思うのですが。
0472デフォルトの名無しさん
NGNGふと気付いたことがあって、実験してみました。
Module1 と Class1 を用意して、
以下のコードを貼り付けて実行してみてください。
IsModule の値が True と False で結果が変わってしまいます。
なぜなんでしょうか?
0473デフォルトの名無しさん
NGNG+++Module1+++ココカラ
Private Const IsModule As Boolean = True
Sub Main()
FuncA
End Sub
Function FuncA()
Dim clsC As Class1
On Error GoTo ErrorHandler
Set clsC = New Class1
If IsModule Then
FuncB
Else
clsC.FuncC
End If
ErrorHandler:
MsgBox Err.Number & " " & Err.Source
End Function
Function FuncB()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Module1---ココマデ
+++Class1+++ココカラ
Function FuncC()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Class1---ココマデ
0474デフォルトの名無しさん
NGNG+++Module1+++ココカラ
Private Const IsModule As Boolean = True
Sub Main()
FuncA
End Sub
Function FuncA()
Dim clsC As Class1
On Error GoTo ErrorHandler
Set clsC = New Class1
If IsModule Then
FuncB
Else
clsC.FuncC
End If
ErrorHandler:
MsgBox Err.Number & " " & Err.Source
End Function
Function FuncB()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Module1---ココマデ
+++Class1+++ココカラ
Function FuncC()
Dim lngFoo As Long
On Error GoTo ErrorHandler
lngFoo = ""
ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"
End Function
---Class1---ココマデ
0475デフォルトの名無しさん
NGNGこの2つをADO経由でグループ化させたいのですが
何か良い方法はないでしょうか?(VBAなら コンボ0.RowSource="SQL文" )
画面のコンボ1を選択すると
コンボ2には、あ1、あ2、あ3とグループ表示されます
コンボ1 あ
コンボ2 あ1
あ2
あ3
テーブルの定義は
フィールド1 フィールド2
あ あ1
あ あ2
あ あ3
い い1
い い2
い い3
となっています
0476475
NGNGコンボ2は×でした
Dim itm As Variant
Dim col As Collection
Dim SQL As String
Dim strTmp As String
'コンボボックス定義
SQL = "SELECT " & TBL_コンボ_フィールド1 & " FROM " & TBL_コンボ _
& " GROUP BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 _
& " ORDER BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 & " DESC"
Set col = pclsCLS_RSAccess.RS_CmbSetting(SQL, TBL_コンボ_フィールド1)
For Each itm In col
strTmp = itm("Strg")
Cmb_Name(0).AddItem strTmp
Next
Cmb_Name(0).ListIndex = 0 <−−− コンボ1
Public Function RS_CmbSetting(ByVal SQL As String, _
ByVal strName As String) As Collection
Dim rs_01 As Recordset
On Error GoTo RS_CmbSetting_Err
略
Do Until rs_01.EOF
RS_CmbSetting.Add AddItem(rs_01(strName))
rs_01.MoveNext
Loop
略
End Function
0477VB使い
NGNGまさかとは思うが、エラートラップの所「クラスモジュールで中断」のままにしてないよな?
「エラー処理対象外で中断」にしてるよな?
俺のとこはまったく同じになったけど。
0478デフォルトの名無しさん
NGNG>>472
オプションの[全般]タブの[エラートラップ]を
「エラー処理対象外のエラーで中断」に変更してみそ
0479478
NGNGもうあったのか・・・
0481デフォルトの名無しさん
NGNGText.SelText=& Chr(34) & "うわーん" & vblf & "うわーん" & Chr(34) &
だと、表示が
"うわーん・うわーん"
になってしまう
それを
"うわーん
うわーん"
にしたい。
0482480
NGNGFunc1 から Func2 を呼び、Func2 から Func3 を呼んでいるとき、
Func3 で起こった実行時エラーや Err.Raise で起こしたエラーを
Func1 の On Error GoTo 〜 で検出できるのでしょうか?
' 今、ちょうどエラー処理関係を作っている最中でして、
' エラー処理を最上位関数で一括処理をしたいと考えているのです。
' もしかすると無謀なことなんでしょうか?
0483ヒッキー@プログラミング
NGNG"うわーん" & vbCrLf & "うわーん"
0486デフォルトの名無しさん
NGNGちなみにわざわざ Chr(34) ってしなくてもダブルクォーテーション
重ねてもいいYO。見難くなくけど。。。
ex...
Text.SelText= """うわーん" & vbCrLf & "うわーん"""
0487VB使い
NGNGできるよー。
でも一括処理は細かいエラートラップがしづらいしAPIのエラー処理と
別のやり方になるんで俺はめんどくさいと思う。
あと、エラー処理について詳しく知りたいなら
MSDNの「プログラミングガイド」→「コードのデバッグおよびエラー処理」か
http://www.microsoft.com/japan/developer/library/vbcon98/vbcondebuggingyourcodehandlingerrors.htm
ここをご覧あれ。
0488デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGvar型に変換できないYO〜
0491デフォルトの名無しさん
NGNG'全選択
wdApp.Selection.WholeStory
strBuf = wdApp.Selection.Text
というように、
Docファイルの中身を全選択し、Docファイルの中身を全て取得したいのですが。
テキストボックスの中身の値は取得できません。
どうすればできますか?
ActiveDocument.Shapes("Text Box 1").Select
をしてできなくはないのですが、
VBからDocファイルを非表示で開いているので、
使えないのです。
よろしくお願いします。
0492初心者
NGNG最初に問題数を自分で選択できるクイズ形式のプログラムを作ろうと
思っています。問題数を選んだ後、約20の問題(フォームはバラバラ)
からランダムに問題を抽出して、回答していき最後に結果出力をしよう
と思うのですが、全体の構成はどのようにしたらいいのでしょうか?
プロジェクトファイル
フォーム(トップ)
フォーム(選択画面)
フォーム(問題1)
フォーム(問題2)
・・・
フォーム(問題20)
フォーム(結果出力)
標準モジュール
という感じでいいのでしょうか?
それともフォルダ(?)のような役割を果たしてくれるものが
あるのでしょうか?あとランダムの発生の仕方も含めてわかりません。
0493初心者
NGNGトップから次のフォームに行くのに、前のフォームを消したいのですが
一つ目から二つ目にいくのに
Dim X As New Form2
X.Show
Form1.Visible = False
は、うまくいくのに次の
Dim X As New Form3
X.Show
Form2.Visible = False
は、うまくいきません。
フォーム2が消えません。
どうすればいいのでしょうか?
それとえ、そのようなケースの場合、最も一般的な
やり方をおしえてください。お願いします。
0494VB厨@入門約半年
NGNG何故フォーム20個なの?それはナゼなの??
クイズはテキストなの?絵が必要なの?どうなの?
ランダム(乱数発生)は Rnd関数 よ!
使う前にRandomize文が必要なのは
N88-BASIC(だったっけ?)を厨学生の時に見たのと同じだわ!
あと、このレベルの質問は「プロの人たち」が見ると痒いみたいだから
sage進行でこっそりやりましょ!
0495デフォルトの名無しさん
NGNGフォームは3個でいい。できれば1個にしとけ!
メモリ解放のやり方とか知らないだろうから、
メモリリークの元になる。
0496初心者
NGNGはい、画像使います。
20個いらないんですか?
どうやればいいのでしょう?
ちなみに参考書は
「新visual basic 入門」です。
メモリ解放というのは載っていませんでした。
あと、rnd関数というのもなかったです。
0497VB厨@入門約半年
NGNGフォームは1個目がイラッシャイで問題数設定で
2個目に、問題を入れ替えながら表示させて
3個目に成績を表示させる、って方針で3個が良さげ。
From2が表示される→第1問→回答ボタン押される→正誤の判定
→メッセージボックスで正誤表示→メッセージボックスOKでForm2に第2問を表示→
→回答ボタン押される→正誤の判定
っつー流れで、Form2だけで問題数の分だけ繰り返す。
あと、その本だけに頼るのはヨセ。VBのヘルプも見れ。
netの検索も良い。同じ目的のサンプルがあたったりして(゚д゚)ウマー
0498デフォルトの名無しさん
NGNGスタイルをチェックボックスにしたものを
自動でチェック付けたり消したりをしたいのです。
実際には、あるファイルのリスト一覧を表示して存在してるかを判断し、
存在してるものにはチェックを入れ、存在してないものはチェック無しとしたいのです。
List1.List(0).Checked = True みたいな感じなコマンド無いでしょうか?
0499デフォルトの名無しさん
NGNGList1.Selected(0) = True
0500デフォルトの名無しさん
NGNGDOSのバッチからvbsを呼び出しているのですが、
WScript.Quit (x)
でxに値を入れても、常に%ERRORLEVEL%が0になってしまいます。
vbsから%ERRORLEVEL%を0にする(バッチに何らかの値を返す)方法はないのでしょうか?
ちなみにvbs内部で環境変数としてERRORLEVELの値を変更してみたのですが、
DOSバッチには引き継がれないようです。
よろしくお願いします。
0501デフォルトの名無しさん
NGNG>>497
画像とかテキストボックスを一つ設定して、その中に
はじめはインビジブル設定にして
その都度、呼び出すということでよろしいのでしょうか?
画像は開発段階では乱立してしまうと思いますが
そういうことでしょうか?
あと、ヘルプがなんかみれません(><)
MSCD(みたいなの?)が必要って言われます。
取り合えず、今日の昼休みに本屋でいろいろ立ち
読んできます。
0502デフォルトの名無しさん
NGNG必要だって言われているんだから入れりゃ良いだろ。>ヘルプ
http://www.microsoft.com/japan/developer/library/default.asp
から辿っても良いが。
0503sage
NGNGMicrosoft Visual Basic6.0 ProfessionalステップバイステップVOL.1 日経BPソフトプレス 2500円
を勧めてやりました。
かくいう私自身がこれとVOL2の活用編の2冊でだいたいの事ができるようになったし
VBについてまったく何も知らなかった私にもわかるように書いてあったので
勧めたのですが友人はダメみたいでした。友人曰く「難しすぎるっ!」そうです。
こんな友人にはどうすればいいのでしょうか?もっとわかりやすい本を薦める(これ以上初心者向けの本はしりませんが…)
VBを諦めさせるのどちらかを考えてます。
どちらがいいと思いますか?
0504デフォルトの名無しさん
NGNG「読書百遍(ひゃっぺん)義(ぎ)自(おのずか)ら見る」 って言葉を送るとか(藁
ちなみに「読書百篇 意 自ずから通ず」って覚えてたけど間違ってたのか...
0505デフォルトの名無しさん
NGNGVB6でACCESS2000のDBを使用したかったので、SP5をインストールしようと
しているのですが、うまくいきません。
セットアップは正常終了するのですが、実際にはパッチがあたって
いないようです。
おそらくSETUP.STRをインストーラが見つけ出せないのが原因と思われます。
「sp598ent.stf を、本来 stf ファイルがあるべきディレクトリにコピーします。
次に、コピーしたファイルの名前を setup.stf に変更し、Service Pack 5 の
インストールプログラム (setupsp5.exe) を再び実行します。」
と、readmeに書かれているのですが、sp598ent.strというファイルが
ダウンロードした中に見当たりません。
環境はWindows2000(SP2)です。
初心者の質問ですいませんが、できれば教えてください。
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNGあるとしたら雑誌の扱いだと思うんだけど
真黄色の表紙の「Visual Basic スーパービギナー」ってのが
インストール開発画面の操作から始まってる、超初心者対象の本。
でっかくて見やすそうだったし。1500¥と安いし。
本の最後に用語集とかあるし
パソコン初心者レベルから、ってのならよいかも。
#ガッコの書籍部に3ヶ月ほどず〜っとある。。。
0508デフォルトの名無しさん
NGNGVB以上に簡単な言語はない。
そういつが頭わりぃだけ。
殴っとけ。
0509デフォルトの名無しさん
NGNGどんな関数を使ったらいいのでしょうか?参考書籍とかあったら教え
てください。よろしくおねがいします
0510デフォルトの名無しさん
NGNGDim b As Integer
a = b = 0
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
がなぜa = -1, b = 0になるんでしょうか?
わーからなぁーいぃー♪
0511デフォルトの名無しさん
NGNGネタでも答えてみるか。
まず b は宣言されて初期値が 0 だから b は 0 。
そんで a には b = 0 を評価した値 True (= -1) が入っている。
試しに a = b = 0 の前に b = 10 とかやってみれ。
0512VB使い
NGNGまあ、MCIが一番いいかと。
http://www.google.com/search?q=mci+api+Basic+%98%5E%89%B9&hl=ja
検索してみたんですきなものをどうぞ。
パワフルテクニック・・・が個人的に好き。VB6のやつもあったはず。
>>506
CSV使っとけ。
>>510
a=(b=0)
0513デフォルトの名無しさん
NGNGtrueって-1なのか!
にゃーるほーどねぇー。
0514デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNGネタでも答えてみるか。
必ずしも True = -1 ではない。
True は 0 以外ならなんでも True。逆に False は絶対 0。
ex...
CBool(1)
CBool(999)
CBool(-555)
これ全部 True 。
0517デフォルトの名無しさん
NGNG0518516
NGNGCInt(True)ってやると -1 が帰ってくるが、
これがVBでの True の デフォルト値?なだけ?
0519516
NGNG同意。軽はずみだったかも。
-1 は True、0 は False。それ以外は False 以外。
つまり Boolean型は True/False しか表せないので、
False 以外で True を返しちまえっていう
CBool関数の仕様なのかも。。。ゴメソ。
0520age
NGNG0521デフォルトの名無しさん
NGNGありがとうございます。
調べる力が欠けてました(汗
0522デフォルトの名無しさん
NGNGエンタープライズ版のVB6使ってる?
>518
ほかの言語だと、True=1だったりする。
たしかVBでもバージョンによって違ってたり。
0523関係ないけど
NGNGその時とても鬱な気分になりました。
私はHTMLでもやれば?と言ったら馬鹿にしてるのかっ!って逆ギレされました。
HTMLを言語というのかどうかは分かりませんが俺の中ではHTMLとVBの難しさは同レベルなのですが
VBより簡単な言語ってあります?
0524
NGNGひまわり
HTMLのLは言語のL
0526デフォルトの名無しさん
NGNGマシン語でも勧めてやれよ。
言語仕様はこれが一番簡単だよって(ワラ
0527デフォルトの名無しさん
NGNGファミリーベーシック
0528デフォルトの名無しさん
NGNG0530ひどいよマイクロソフト
NGNGフリーで試せるし。
0531俺だけじゃないよね
NGNG「君は本を見ないとプログラムもできんのかね?」
と言われた。
まさかコマンドを全て覚えるなんて不可能だろうし…
もしかしてみんなはプログラムとか組むときに本とか全然見ずに
書いてる?
0533デフォルトの名無しさん
NGNGまぁ本だとコピペとかできないし邪魔だから、基本的にオンラインヘルプ
だけど。
0534デフォルトの名無しさん
NGNG逆に覚えてる奴ってやばい気がする。
「こんなのがあったな」ってのを覚えておけば十分だろ
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGこんなのがあったなってのを覚えておいて
それを書籍なりMSDNあたりから探せる能力があればいい。
0538デフォルトの名無しさん
NGNG確かにな…
中途半端に覚えていて適当に無理だと判断するより
ちゃんと検索してさがせる能力があったほうがいいです
0539デフォルトの名無しさん
NGNGその人晒し上げ
0540デフォルトの名無しさん
NGNGどなたかおしえていただけないでしょうか?
0541デフォルトの名無しさん
NGNG重複していいの?
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGいくら初心者質問スレとは言っても検索くらいはしたよね?
0544デフォルトの名無しさん
NGNGこれだと、重複アリですよね?
ナシのときがちょっとわからなくて・・・
Rnd 関数の使用例
次の例は、Rnd 関数を使って、1 から 6 までの乱数整数を発生させます。
Dim MyValue
MyValue = Int((6 * Rnd) + 1) ' 1 から 6 までの乱数整数を発生させます。
--------------------------------------------------------------------------------
http://www.microsoft.com/JAPAN/developer/library/Vbenlr98/vafctrndx.htm
0545デフォルトの名無しさん
NGNGこう言うアルゴリズムを自分で考えることで力がつくんだと思うYO
どうでもいいけど。
■ このスレッドは過去ログ倉庫に格納されています