「クラスを作ってみよう」の編集履歴(バックアップ)一覧はこちら
「クラスを作ってみよう」(2010/06/06 (日) 12:11:40) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
[[N88BASIC]]しか知らない人にとって[[AB>ActiveBasicってなぁに?]]を初めて触ったときは手も足も出ないというのが本音でしょう。
ABは[[構造化]]というものが[[サポート]]されているからです。
構造化はN88BASICのプログよりわかりやすいという人もいますが、実際は逆です。
構造化([[関数]]に分割すること)は上から順に読むことができず、かの[[Goto]]よりもたちが悪いです。
またClassはその上を行く難解で複雑でカオスで信者とかアンチとかが入り交じっている世界です。
ブログなどでオブジェクト指向とはなんて語ると、どこからともなく変な人が現れて荒らされてしまいます。
さてここではオブジェクト指向よりもクラスの作り方、使い方を説明します。
なおABのヘルプには必要なことが書いてなかったり、どうでもいいことに冗長な説明があったりして使いにくいのですが、
クラスに関してはそこそこまとまっているので、是非、是非、目を通してください。
カタカナ英語が多くてうんざりしますが、CHumanの動きが読めれば十分だと思います。
このクラスの動作が分からない人は遠慮なく質問してください。
質問は恥ではありません。馬鹿にするヤツのほうがよっぽど恥ずべき連中です。
クラスの書き方は超絶に簡単です。
似通ったデータなり関数をかき集めてクラスとして包んでやればいいのです。
#asciiart(blockquote){
Class ABFILE
Private
hF As HANDLE
Public
Function mOpen(filename As String) As Long
If hF Then mClose()
hF = CreateFile(StrPtr(filename), GENERIC_READ, 0, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
If hF = INVALID_HANDLE_VALUE Then
hF = NULL
End If
mOpen = hF
End Function
Function mRead(buffer As VoidPtr, length As DWord) As DWord
If hF = NULL Then Exit Function
ReadFile(hF, buffer, length, VarPtr(mRead), ByVal 0)
SetByte(buffer As *Byte + mRead, 0)
End Function
Function mClose() As Long
If hF Then CloseHandle(hF)
hF = NULL
End Function
End Class
#N88BASIC
Dim f As ABFILE
Dim buf[555] As Byte
f.mOpen("555.abp")
While f.mRead(buf, 555)
Print MakeStr(buf);
Wend
f.mClose()
}
これはファイルを開いて読んで閉じるだけのショボクラスです。
ですが、クラスにすることのメリットは幾つかあります。
[[グローバル変数]]になりがちはファイルハンドルを内含することができます。
また複数のファイルを開くときに楽ができます。
次回ではこのクラスを大幅に変更しちゃいます!