VBプログラマ質問スレ(Ver.6.0 まで) part56at TECH
VBプログラマ質問スレ(Ver.6.0 まで) part56 - 暇つぶし2ch774:デフォルトの名無しさん
11/01/29 02:53:05
>>772
Private Function hoge(a() As Integer) As Integer
  on error goto catch
    hoge = a(5)
  on error goto 0
  exit function
catch:
  redim preserve a(5)
  hoge = a(5)
End Function


>>773
  704ってなんだよ


775:デフォルトの名無しさん
11/01/29 20:38:48
CallとかLetって何のためにあるんだろう

Let Value = 100
とか書かないじゃん
Value = 100
だし

Call Hoge(Value)
と書かずに
Hoge Value
って書くし


776:デフォルトの名無しさん
11/01/29 21:18:20
Withの使い方でヘルプに描いてない使い方あるよね。使っても大丈夫なのかな?
たとえば
With New Class1
みたいなNewで使うやつとか
With GetClass1()
みたいなクラスへの参照返すやつとか


777:デフォルトの名無しさん
11/01/29 21:39:27
いや例えばgetClass1()が呼び出されるたびにちがうClass1のインスタンスへの参照が返されるとかさ

778:デフォルトの名無しさん
11/01/29 22:51:18
callは引数呼び出しの明確化に使うなあ
letは使ったこと無い

779:デフォルトの名無しさん
11/01/30 10:50:25
letは中間コードを採用した8bit機のBASICでコード領域1バイトを犠牲にするかわりに実行が速くなる場合があった
VBのインタプリタで速度に差が出るかは試していない

780:デフォルトの名無しさん
11/01/30 20:46:52
試していないのか

781:デフォルトの名無しさん
11/01/31 01:12:59
VBはコンパイラ、機械語に翻訳する

782:デフォルトの名無しさん
11/01/31 02:59:29
VBはコンパイラではあるが、直接機械語に翻訳してるわけではない

783:デフォルトの名無しさん
11/01/31 10:34:30
VB6までのIDEは基本的にはPコードという中間コードにコンパイルして実行しているが
これは8bit機時代のマイクロソフト系ベーシックインタプリタと同様の構造であり
伝統的に「インタープリタ」とマイクロソフト自身も呼んでいる
VB5以降はexe生成時にPコードを格納するか機械語のネィティブコードを生成するかを選択できる
前述のPコードコンパイラではなくこのexe生成機能の事を特に「コンパイラ」と呼ぶ
機械語生成されたexeもランタイムに依存しているので直接機械語に翻訳されていないと勘違いされる事も多い
exe生成時にlink.exeが内部で実行される時に一時的に生成されるobjを逆アセンブルすれば実際に機械語が生成されている事実を確認できる

784:デフォルトの名無しさん
11/01/31 11:09:11
僕は素人のVB6LE使いだからp-codeコンパイルとか機能的にない残念だお
VB6買ったのは金ない学生時代・・・アカデミパックでLEしか買えないとか昔は貧乏だったなあ


785:デフォルトの名無しさん
11/01/31 11:10:44
逆だったLEはp-codeコンパイルが出来て、ネイティブコードコンパイルが出来ないんだった

786:デフォルトの名無しさん
11/01/31 11:57:51
俺はアカデミックでどうせだからとPE買ってた

787:デフォルトの名無しさん
11/01/31 21:52:48
>>775

引数を( )で囲んでないとわかりにくい。
元はCとかJavaやってたんで。

788:デフォルトの名無しさん
11/02/01 00:05:00
じゃあIf文も

If a<3 Then
じゃなくて
If (a<3) Then
とか書いてるのか
CやJavaからだと = が使いにくそう

789:デフォルトの名無しさん
11/02/01 00:22:36
>>788
そこは大丈夫。

引数だけは目に馴染まない。

790:デフォルトの名無しさん
11/02/01 21:51:33
自力で試しても全然動かなかったので質問させてください。

VBからテープデバイスに書き込みを行いたいのですが、
WEBでプログラムからテープデバイスへのアクセスについて調べたところ

URLリンク(www.winapi-database.com)

に書いている関数使ったらいけると思って試してみたのですが、
うまく動きませんでした。
上記ページを読んだ感じだと
1.書き込みを行いたいファイルのハンドルをCreateFile()で取得
2.↑で取得したハンドルに対してBackupRead()で読み込み
3.テープデバイスのハンドルをCreateFile()で取得
4.2で読み込んだファイルを3で取得したハンドルに対してBackupWrite()で書き込み

でいけるのかと思ったのですが、書き込みエラーが出るどころか、全くテープデバイスが動いた様子もなく終了します。
どうも引数の設定がどうとか言う以前に関数の使い方を間違えているのではと思います・・・

WEBで調べてもBackupReadはともかくBackupWriteは使っているコードすら全然見つかりません

VBに限らずCとかでも構いませんので、テープデバイスに対して書き込みや読み込みを
行った経験がある方、もしくは↑URLを見て使い方が分かる方が居ましたらサンプルコードや
関数の使い方の説明等、ご教示頂けたらありがたいです。

791:デフォルトの名無しさん
11/02/07 09:34:21
>>854お姉さまwwに誘導されてきました。)
現在、シリアルから19200bps(rs232c)で文字を自動的に吐き出している機械が有ります(マイコンです)
例 PIC RS232C-TEST
ハイパーターミナルで受信をした所正常に受信しています。(COMの設定等もしたつもりです com2であっています)

けれど、VB6.0で作成したプログラムでは、何にも出ません。
参考サイト
URLリンク(scw.asahi-u.ac.jp)
作成したソース
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "19200,n,8,1"
MSComm1.RThreshold = 6
MSComm1.DTREnable = True
MSComm1.RTSEnable = True
MSComm1.PortOpen = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Label1.Caption = MSComm1.Input

End Sub

何がいけないのでしょう?お力をお貸し下さい。
また2005でも、質問に来るかも知れないのでよろ

792:デフォルトの名無しさん
11/02/07 11:45:23
If MSComm1.CommEvent = comEvReceive Then
Label1.Caption = Label1.Caption & MSComm1.Input
end if
ってすればいいんじゃないの


793:デフォルトの名無しさん
11/02/07 13:39:29
323みたいなのはここでは定期的に出るドトネト厨の釣り針なのか?

794:デフォルトの名無しさん
11/02/07 15:35:45
>>792
ありがとうございます。
やってみました・・・
なんか変わらない orz

私のRS232Cの設定が悪いのだと思います。
もう一度検討してみす。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch