N88BASICしか知らない人にとってABを初めて触ったときは手も足も出ないというのが本音でしょう。
ABは構造化というものがサポートされているからです。

構造化はN88BASICのプログよりわかりやすいという人もいますが、実際は逆です。
構造化(関数に分割すること)は上から順に読むことができず、かのGotoよりもたちが悪いです。
またClassはその上を行く難解で複雑でカオスで信者とかアンチとかが入り交じっている世界です。
ブログなどでオブジェクト指向とはなんて語ると、どこからともなく変な人が現れて荒らされてしまいます。

さてここではオブジェクト指向よりもクラスの作り方、使い方を説明します。
なおABのヘルプには必要なことが書いてなかったり、どうでもいいことに冗長な説明があったりして使いにくいのですが、
クラスに関してはそこそこまとまっているので、是非、是非、目を通してください。
カタカナ英語が多くてうんざりしますが、CHumanの動きが読めれば十分だと思います。
このクラスの動作が分からない人は遠慮なく質問してください。
質問は恥ではありません。馬鹿にするヤツのほうがよっぽど恥ずべき連中です。

クラスの書き方は超絶に簡単です。
似通ったデータなり関数をかき集めてクラスとして包んでやればいいのです。


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()

これはファイルを開いて読んで閉じるだけのショボクラスです。
ですが、クラスにすることのメリットは幾つかあります。
グローバル変数になりがちはファイルハンドルを内含することができます。
また複数のファイルを開くときに楽ができます。

次回ではこのクラスを大幅に変更しちゃいます!

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年06月06日 12:11