
下記のサイトに書かれている言語を今のバージョン(Visual Basic 2017)で使えるようにしたいです。
http://www.ritsumei.ac.jp/~hoshino/2002b/VB/VB00 …
ここに書かれているプログラムは流れるテロップを表示させるといったものですが、VariantをObjectに換えることはできました。ボタンのtrueとfalseの設定も上手くいきました。
ですが、テロップを流すところが上手くいきません。テロップが流れる速さ(文字/秒)を設定するところも上手くいきませんでした。
Private Sub cmdStart_Click()
Call TelopInit ' TelopInit() が呼ばれます。
pT = 1
cmdStop.Enabled = True
cmdStart.Enabled = False
cmdReStart.Enabled = False
Call TimerInit ' TimerInit() が呼ばれます。
End Sub
Private Sub TelopInit()
Dim a As Variant
' 全角スペースを先頭と終端に追加します。
text = String(tLen - 1, " ") + Text1.? + " "
len_text = Len(?) ' Len() は文字列の長さを調べます。
For i = 1 To len_text ' 行末の処理です。
a = Mid(text, i, 1) ' text の i 番目の文字を a に代入する。
If Asc(a) = 10 Or Asc(a) = 13 Then ' 行末ならば,
sa(i) = " " ' 全角スペースを sa(i) に代入する。
Else
sa(i) = a ' そうでなければ,a の値(文字)を代入する。
End If
Next i
End Sub
Private Sub Timer1_Timer()
Dim tBuff As Variant
For i = pT To pT + tLen - 1
If pT <= len_text Then
tBuff = tBuff + sa(?) ' tBuff に表示する文字列を貯えます。
End If
Next i
Label1.Caption = ?
pT = pT + 1 ' 1文字分 pT の値を進めます。
If (pT > Len(text)) Then ' 文字列をすべて表示したかどうかの判定
Beep
Timer1.Enabled = False
cmdStart.Enabled = True
cmdReStart.Enabled = False
cmdStop.Enabled = False
cmdClear.Enabled = True
Text1.Visible = ?
End If
End Sub
このプログラムを今のバージョンで運用できるようにするにはどうすればよろしいでしょうか。お願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
このころのVBと、今のVBとは違い過ぎます。
これをどうやったら、等と中途半端なやり方では、なかなかできません。
(1) 元のプログラムがどんな原理で動いているのかを理解する
(2) 新しいVBを使って一から作る
の方がおそらく確実にできます。
いくつか助言するなら
> Option Base 1
現在、Option Baseは廃止されています。
配列は常に0から始まります。
1から始まるのを使いたかったら、自作します。
> Private Sub cmdStart_Click()
VB6までは、cmdStartをクリックしたら、 cmdStart_Click を実行する、となっていましたが、
VB.Net以降では、プロシージャ名と動作には直接関係はありません。
VB6のようにしたかったら、 Handlesを使うか、AddHandler を使います。
また、引数も決まった形のものになります。
ほかの 〜 _ 〜 プロシージャも同様。
> VariantをObjectに換えることはできました
これは、元のプログラムが謎。
文字列なのだから、Stringを使えばいいのに、何故variantなんだろう?
> ?
ところどころにある ? は、適切なものに置き換える必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAで文章にある複数の...
-
WORd VBA 文章を単語に分解する
-
VBAで入力数値について
-
エクセルVBAでテキストボッ...
-
Vba 電卓のテキストボックスに...
-
タイムアウトする仕組みを作りたい
-
C#のループでtextboxに値を入れ...
-
チェックボックスを操作できな...
-
VB.NETでのイベントの途中終了
-
パーソナルXLSBのfuctionを呼び...
-
音が鳴らないようにしたい
-
TextBoxの内容を右寄せ
-
アクセスできない保護レベルエ...
-
subsequentとnextの違いってな...
-
Matlab/SimulinkのChirp信号に...
-
Excel VBAでsub,dimは何の略?
-
Functionの戻り値を配列にした...
-
テキストボックスに大文字を
-
label画像の縮小と再表示
-
【VB.NET】テキストボックスに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスかラベル上の...
-
ExcelのVBAで文章にある複数の...
-
RichTextBoxで指定行の色を自動...
-
vba 日本語以外を抽出について
-
DTPicker テキストクリアの方法
-
VBAのループ
-
助けてください!
-
XMLファイルのattribute値がう...
-
アクセスのフィールドに値をペ...
-
画面の繰り返し機能について
-
VB6→VS2005アップグレード後
-
WORd VBA 文章を単語に分解する
-
文字列を配列に…。
-
cshスクリプト内での”ヒアドキ...
-
VC++のプログラミングについて
-
EXCEL VBA UserForm のご質問
-
VBAでフィールドを配列読み
-
[VB6] SQLの作成について
-
Can you text me your business...
-
perlにおける正規表現で、パタ...
おすすめ情報