abwiki @ ウィキ (ActiveBasic非公式wiki)内検索 / 「基本的な演算子には何があって、どう使うの?」で検索した結果

検索 :
  • 基本的な演算子には何があって、どう使うの?
    基本的な演算子はいくつかに分類できます。基本型について分類していますが、クラスの場合はnew演算子とdelete演算子以外は演算子のオーバーロードをしなければ演算子を使えません。 基本型では整数型でしか扱えない演算 演算子の名前 意味 使い方 mod 剰余算。AをBで割った余りを返す。 A mod B 右シフト。ビット演算の一つ。A\2と殆ど同じ意味。 A B 左シフト。ビット演算の一つ。A*2と同じ意味。 A B not 論理否定。ビット演算の一つ。-A-1と同じ意味。 not A and 論理積。ビット演算の一つ。 A and B or 論理和。ビット演算の一つ。 A or B xor 排他的論理和。ビット演算の一つ。(not (A and B)) and (A or B)と同じ意味。 A xor B どんな基本型でも扱える演算 演算子の名前 意味...
  • 基本
    ...数宣言どうやるの? 基本的な演算子には何があって、どう使うの? 条件分岐やループはどうやるの? 関数とは 関数はどう使うの? 関数はどう作るの? ここまでのまとめ クラスはどう作ってどう使うの? ファイルを分割したいんですけど。 構造体って何だ? 文字列処理 配列 ポインタ 異次元殺法 コールバック関数って何? ファイルを扱う Win32APIの招待 アイコンエディタを使いこなそう テキストエディタを使いこなそう デバッガを使いこなそう 初心者 とりあえず実行ファイル作りたいんですけど。 とりあえず文字ベースの窓作って何か表示してみたいんですけど。 とりあえずグラフィカルな窓作って何か表示してみたいんですけど。 とりあえず一般的なウインドウを作ってみたいんですけど。 DLLの基礎 とりあえずDLL作ったりしたいんですけど。 AB実力テスト オブジェクト指向で遊ぼう オブジェクト...
  • リファレンス
    ... 演算子については基本的な演算子には何があって、どう使うの?を参照のこと。 Win32APIは MSDNライブラリ が詳しい。
  • 演算子
    演算子(えんざんし、えんざんこ、オペレータ)とは演算を行うための印のこと。 例えば+演算子は左右の非演算子(オペランド)の値を合計するし、=演算子は左辺に代入する。 でもオペレータオーバーロードすればそんなことはない。あなたの思うように演算子に意味を与えることができる。
  • 関数はどう使うの?
    関数名をFとして、その引数の個数が4個ならば、 F(a,b,c,d) のように使う。例えばルート2を求めたければ、平方根を求める関数Sqrを用いて Sqr(2) とすれば良い。勿論こいつらは値として用いることが出来て、 A=Sqr(2)+Sqr(3) とすれば√2+√3がAに代入される。 ただし、値を返さない関数は値として用いることが出来ない。
  • クラスはどう作ってどう使うの?
    クラスは、次のように作る。 Class C private A As Long public Sub C() A=1 End Sub Sub ~C() End Sub Function Member1() As Long Member1=A End Functoin End Class ここでクラス名がCなら、コンストラクタ(生成時に1度だけ呼ばれる関数)の名前はC、デストラクタ(開放時に1度だけ呼ばれる関数)の名前は~Cとなる。 public と書いてあるが、これはpublicアクセスの開始を宣言するもので、クラスの中からは勿論、クラスの外からも使うことが出来る事を意味する。 コンストラクタとデストラクタはこのpublicアクセスの中で定義する必要がある。 ...

  • ?(ハテナ、クエスチョンマーク、疑問符)はわから無いときに使う記号。 C言語では a==b ? c d; のように使う。 これはa とbが等しい時cを、そうでないときにdが評価される。 if文の短縮形として用いられることがよくある。 if文との違いはifはあくまで文であるが?は演算子である。 だから式の中に入れることができ、 a = x 0 ? 1 -1; というようなことができるし、 printf("%s" s? "s=NULL" s); ということもできるので柔軟性があって素敵。
  • オブジェクト指向入門
    歴史的には、オブジェクト指向言語の源流は、Simula。それらを参考にEiffelやSmalltalkが 作られ、C++やらなんやらが作られはった。 オブジェクト指向の能書きは、シミュレーションの際に扱うデータの抽象化にあるんや。 たとえばやなあ、ウインドウを抽象的に扱う場合、座標をx,yと個々に変数を扱うより、 ウインドウちうオブジェクトのx,yちう抽象データ型があったほうが取り扱いやすいちうわけや。 プログラム中、変数を無数に無作為に定義するよりも、座標やベクトルちう構造を持って いたほうが理解しやすいやろ。 例えば、 dim x1 as integer dim y1 as integer ... という変数が、無数にあるよりも、 type axis x1 as integer y1 as integer end type という構造体...
  • ステップ1 「変数の扱いと演算子」
    公式の説明でok 「変数」とは、データを記憶するためのメモリの一部分やと考えておくんなはれ。変数にはいくつかの種類があり、整数を記憶できるもん、小数部分の数値も記憶できるもん、文字列を記憶できるもんやらなんやらが存在しまっせ。 変数を利用する前にはじぇったい、「変数の定義」をせなあかんなりまへん。例えば、 Dim a As Long この一行は、「"a" ちう名前のLong型変数を利用します」ちう意味を持ち、この次の行から変数aを利用するっちうことができるようになるんですわ。Long型とは、整数を扱うための変数型のことや。こないな風に、変数の定義を行う場合は、Dim命令語を利用するもんやいうことを覚えておきまひょ。 早速、Dim命令語で変数宣言を行い、値を代入してみまひょ。 Dim a As Long a=20 Messag...
  • 条件分岐やループはどうやるの?
    条件分岐は、If文を使う。 If A 1 Then B=1 Else B=2 End If のようにして、上の場合だとAが1より大きければBに1を、さもなくばBに2を代入する。 Else節は省略できる。 If A 1 Then B=1 End If この場合、Aが1以下なら何も起こらない。 1行で書くこともできる。 If A 1 Then B=1 Else B=2 これは勿論Else節を省略できて If A 1 Then B=1 のように使うこともできる。 If A 1 Then If C 1 Then B=1 Else B=2 のように書くと、Elseは未完了の最後尾のIf文に引っ張られて、次のように解釈される。 If A 1 Then (If C 1 Then B=1 Else B=2)...
  • オーバーロード
    オーバーロード(overload)とは、関数、メソッド、クラスの演算子の多重定義のこと。 オーバーライド(override)とは違うので注意されたし。 同じ関数名で引数の形が違うもののこと。 呼び出したときは型の近いものが呼ばれる
  • データベースとは?
    データベースとは? データベースとは、コンピュータ上にて情報を格納して手早く適切に情報を検索、編集する 仕組みを持つシステム装置をいう。 データベースというもの自体は昔から存在していて別段、驚くものではない。 例えば、図書館における図書と蔵書検索などは、コンピュータが存在しない時代では、紙の カードによって管理されている。 貸し出しされた書籍の管理も、紙媒体のカードで行っていた。 具体的には、書籍検索の場合、蔵書目録はすべてカード化されていて、索引のインデクスは 適切にソートされ、昇順に並んでいる。 利用者は、カードが保存されたデッキからカードを探すため、題名や著者名から読みたい本を 検索する。 カードには棚のナンバーが記載されていて、利用者は検索後、読みたい本のカード内容から、 一意なユニークなIDナンバーを読み取り、ID札が置かれた本棚を検索して棚...
  • デバッガを使いこなそう
    ヲッチ式 ヲッチ式では演算ができます。でも関数は使えません。 ポインタも使えません。- も[]も機能しません。 使える演算子 +-*/\ []
  • グローバル変数
    プログラム内でどこからでもアクセス可能な変数。 対義語はローカル変数。 プログの中でグローバル変数とローカル変数が同じ名前の時、グローバル変数は隠される。 #N88BASICDim x As Long'グローバル変数x= 555Sub F()Dim x As Long'ローカル変数x = 233End SubF()Print x'555 ABにはスコープ解決演算子がないので Sub F()Dim x As Long'ローカル変数 x = 233End Sub こんなことをやっても何の意味もない。
  • 変数宣言どうやるの?
    変数って何? 変数とは、データを格納する名前の付いた領域のこと。 変数を使うことで、ユーザが打ち込んだデータを計算したり、計算結果を記憶することができる。 宣言 宣言とは、今から変数を使いますよっていう意思表示のこと。 ABでは変数にも用途に応じた幾つかの種類があってはじめのうちは大変。でもすぐなれる。 変数名をvaname、型名をtypenameとすると その変数の宣言は次のようになる。 Dim vaname As typename 変数名には(英文字|アンダーバー)(英文字|数字|アンダーバー)*が使える。勿論、予約語は使えないよ。 スペースが使えたり256文字より長い変数名だとコンパイラが調子狂ったりするけど気にしたら負け。 型名についてくわしくは基本型を参照のこと。 Dim a As Long'Long型(整数)...
  • バグ、不具合
    6BA問題 デバッグ実行中にGetOpenFileName()を呼び出すとなぜか「例外処理 code 6BA」が湧き出てくる。 リリース小パイルでは問題なく動作する。 原因不明。対処法不明。 プロジェクトエディタちゃんが落ちる問題 メンバの補完機能やパラメータヒント表示する時に強制終了する。 原因不明。対処法不明。 桁あふれ問題 次のような演算をすると桁あふれを起こす。 #N88BASIC Dim b As Byte, l As Long, o As Long b=250 l=500 o=b+l Print o 238と表示される! 対処法 次のように右辺の最初に大きな型を持ってくる。 o=l+b o=0+b+l o=b As Long+l ウイルス? コンパイルするとAviraが反応する
  • Win32プログラミング講座 for AB4.24
    公式にて好評連載中の Win32プログラミング講座 を4.24に Avira厨へ→一部のサンプルプログラムでAviraが反応するぞ!コンパイルするとAviraが反応するをチェック! AVG厨へ→ABで作成されたDLLでAVGが反応します。(ClamAVも)DLLでAVGが反応するをチェック!! ステップ0 「インストールとHello world!」 ステップ1 「変数の扱いと演算子」 ステップ2 「If文、For文、その他のプログラム制御命令」 ステップ3 「プロシージャ呼び出し、プロシージャ作成」 ステップ4 「RADツールに初挑戦」 ステップ5 「ボタン コントロールを使う」 ステップ6 「メニュー コントロールを使う①」 ステップ7 「メニュー コントロールを使う②」 ステップ8 「構造体とファイルオープンダイアログ」 ステップ9 「ビットマッ...
  • DCT(離散コサイン変換)
    離散コサイン変換(DCT)とは、波はSIN関数の合成で表現できるというフーリエ級数の 考え方に従った変換で、物理学的な意味は時間変動する波から周波数成分へと変換するための方法。 同じ手法として比較的良く知られているのは離散フーリエ変換(DFT)や高速フーリエ変換(FFT) であるが、離散コサイン変換はコンパクトで実数のみで計算ができることから実装しやすく、 JPEGやMPEGなどの動画、MP3などの音声圧縮などに多く用いられている。 MMXなどで計算することも可能で、コーデックのDCTがMMX/SSEに対応している場合は、 PentiumMMXなどのCPUでもMPEG1動画を容易に再生することができた。 離散コサイン変換(DCT)は時間変動する波形を周波数成分に変換し、逆離散コサイン変換 (InverseDCT)は、周波数成分の分布から時間波形を再構成する。 ...
  • mp3プレーヤーを作ろう
    用意するもの VBMP3 ダウンロード ↑このページ中程にある、MP3再生用ライブラリVBMP3.dll改 をダウソする。 次に MP3Player_01.zip を落として解凍。この中にVBMP3.dllを入れる。 次に基本的な動作をするまでを作ってみよう MP3Player_02.zip VBMP3の中から必要な関数だけを抜き取ったのがABMP3.sbpだ。 まず、GUIな部分だが、ファイルはリストビューを使った。リストビューを使うためのクラスがListView.sbp。 目玉はVBMP3の機能であるスペアナだ。これを表示するにはGDIを使う。oekaki.sbpで実装。 これで簡単な再生、停止まではできるようになった。 http //www.vector.co.jp/soft/win95/prog/se246017.htm...
  • Gotoによる最適化;分岐予測およびキャッシュヒット率の向上
    昨今CPUではますます分岐予測やキャッシュヒット率の向上が、大きな要素を占めている。 分岐予測 キャッシュメモリ Gotoはうまく使うことで、ループや分岐のの単純化出来る場合がある。 処理の大半はループ(とそれに絡む分岐)なので、Gotoは積極的につかうべきである。 キャッシュコンシステンシイ プロセッサのキャッシュメモリに入るコードか、そうでないコードでのレイテンシの問題のこと。 もし、ループ構文の中でロングジャンプが発生していた場合、キャッシュメモリの範囲を 超えたアドレスに頻繁にジャンプする事になる。 この振る舞いは、命令キャッシュの範囲を超えているので、命令キャッシュのコンシステンシイ に問題が生じキャッシュレイテンシに差が生じる。 一例としてはCore2マイクロアーキテクチャでは、一次命令キャッシュ内に収まるような小さな ジャ...
  • ゲーム機
    ゲーム機とは、ゲーム専用のコンピュータである。 ゲームとは本来、遊戯を意味していたが、ファミコンの登場により ゲームはテレビゲーム(VideoGame)を意味するようになった。 ゲーム機の構造は乱暴な話AT互換機と大差ない。 CPUがあってメモリがあって、 入力装置があって出力装置があって、 そんなものである。
  • クラスを作ってみよう
    N88BASICしか知らない人にとってABを初めて触ったときは手も足も出ないというのが本音でしょう。 ABは構造化というものがサポートされているからです。 構造化はN88BASICのプログよりわかりやすいという人もいますが、実際は逆です。 構造化(関数に分割すること)は上から順に読むことができず、かのGotoよりもたちが悪いです。 またClassはその上を行く難解で複雑でカオスで信者とかアンチとかが入り交じっている世界です。 ブログなどでオブジェクト指向とはなんて語ると、どこからともなく変な人が現れて荒らされてしまいます。 さてここではオブジェクト指向よりもクラスの作り方、使い方を説明します。 なおABのヘルプには必要なことが書いてなかったり、どうでもいいことに冗長な説明があったりして使いにくいのですが、 クラスに関してはそこそこまとまっているので、是非、是非、...
  • スレッド
    掲示板におけるスレッド スレッドとは。掲示板の構成要素のこと。トピックとも言われる。 スレッドは掲示板に特定のテーマを持つ小さな掲示板のようなものである。 扱う話題が多岐に渡る場合や人数の多い大きな掲示板では、話題が散漫になりがちで、議論が進行しなくなることがなくもない。 コンピュータにおけるスレッド スレッドとは、軽量プロセスと呼ばれる実行の主体。 スレッドとプロセスとマルチタスク WindowsなどのOSは、一つのCPUであっても同時に複数のソフトウエアが動作するように設計されている。 単一のCPUでも複数のソフトウエアを同時に利用可能なOSをマルチタスクOSと呼ぶ。 現在、一般的となったパーソナルコンピュータ用OSはマルチタスクOSである。 プログラムが実行される時、必ず一つのプロセスとしてコンピュータ上で実行される。OSからは 一つ...
  • FAQ
    FAQ(Frequently Asked Questions)よくある質問と答え 全般的なこと Q どこからダウンロードできるの? |A 公式サイトが死んでいる場合は vector からでも。 Q 利用にお金はかかりますか? |A いいえ。ABは無料です。 Q 商用利用してもいいの? |A 誰も止めはしない。 Q 関数や命令、文法の仕様は無いの? |A すべて作者の頭の中に入っていますよ。 Q ActiveBasicはActiveBasicで作ってるの? |A CかC++で作っているらしい。 Q ActiveBasicのプログラミングコンテスト無いの? |A RADツールに関すること Q RADツールで[x]の無いウインドウをテストしたのですが…閉じ方が分かりません。 |A A...
  • トップページ
    abwikiへようこそ!! abwikiは作者が大風呂敷を広げたものの結局回収できなくなり放置、 そして公式ページは繋がらないというヘタレ言語 ActiveBasicの情報集約が目的です。 当wikiでは安定版と思われるVersion 4.24.00を使用しよう! とおもひます。。。 テスト←wiki練習用。好きに使ってくださいね!雑談、悩み告白、暴れたい人もどうぞ。 ※注意 当wikiの記述は信頼性を保証するものではありません。 ActiveBasicはバージョンごとの互換性に問題があります。 コーディングスタイルは人それぞれです。ABのような始まってもいないものでは議論するだけムダです。だからといって IOCCC のようなスタイルは控えた方が無難です。 個人情報の書き込みはおやめください。 目次 基本←基本的な使い方 応用←実践的用法 リファレンス←関数、命令の...
  • エロゲー
    ABでエロゲーを作ろうず!!! エロゲーの定義 エロゲーとは、ゲームにエロが含まれるもの。 エロとはアダルト要素、つまり男性が性的興奮を覚える要素のこと。 エロゲーを作るには、基本的なゲーム制作ノウハウが必要だ。 ゲームの骨格を作る まずはゲームの外枠を埋めていく。いわば概要。 どんなゲームにするか。どこがエロいのか。そんなところ。 一般的にはアドヴェンチャー、画面上が萌え画で下がテキスト。 このタイプは簡単な作りだが、テキストや絵作りが難しくフラグ管理が煩雑だ。
  • とりあえず一般的なウインドウを作ってみたいんですけど。
    ABでウインドウを表示する方法にも幾つかあって、定番のRADを使う方法が一般的だと思う。 RADを使うと、裏で、ウインドウを作ったり、メニューやいろんなコントロールを付けてくれる。 これを今回は手書きでやってみよう。 まずはプログラムの提示。 ウインドウクラスの作成 Const classname = "AB-WINDOWCLASS" Main() ExitProcess(0) Sub Main() Dim wc As WNDCLASSEX Dim hwnd As HWND Dim msg As MSG ウインドウクラスの設定 With wc .cbSize = SizeOf(WNDCLASSEX) .style=CS_HREDRAW or CS_VREDRAW .lpfnWndProc = Ad...
  • 関数はどう作るの?
    値を返さない関数を作りたいときには、その関数名をFとしたとき Sub F (a As Long,b As Double) something・・・ ・ ・ ・ End Sub のように書く。ここでaだのbだのは引数の定義で、引数は0個でも良い。具体的には Sub F () something・・・ ・ ・ ・ End Sub のように書く。 関数の途中で関数を終了したいときにはExit Subを使う。 値を返す関数は、関数名をF、その戻り値の型をBとしたときに Function F (a As Long,b As Double) As B something・・・ ・ ・ ・ End Function のように書く。勿論引数の個数は0個でも良い...
  • OS
    OSとはオペレーテングシステムのこと。 機械(ハードウェア)とアプリケーション(たとえばワードとか)の仲介役。 OSはそれによって、どこまで受け持つかが異なる。 ウインドウズはシェルやブラウザまで一緒くたにしていたこともあった。 が、今では分離が進んでいるらしい。
  • 複文
    一行に複数の命令、関数を並べること。 左から右に実行される。 (コロン)で区切る。 A=5 B=10 C=A+B と A=5 B=10 C=A+B は同等。 昔のN88BASICではメモリの節約や実行速度に影響したりとそこそこ利用価値があったが、ABでは使うメリットがあまりない。 よって、滅多なことでは使うべきではないとされる。
  • ステップ3 「プロシージャ呼び出し、プロシージャ作成」
    公式の解説でOK 「プロシージャ」は、時より、「関数」とか「サブルーチン」やらなんやらと呼ばれはります。ここでは、「プロシージャ」ちう呼び名に統一しまんねんけど、その正体は複数のコマンドを組み合わせてあるんや、1つのコマンドのようなもんや。言葉ではちびっと説明し辛いさかい、サンプルプログラムを通して、プロシージャ機能の役割についての解説をしまっせ。 プロシージャの定義には、Function定義、Sub定義の2通りの方法があるんやが、それぞれ、戻り値があるかないかの違いだけで、その他の機能はまるっきし同一や。 Function プロシージャ名 (変数1 As 型, 変数2 As 型 ,...) As 戻り値の型 関数内のコード... プロシージャ名=戻り値 End Function Sub プロシージャ名 (変数1 As 型, 変数2 As 型 ,....
  • ABによる生成物集積所
    ActiveBasicで作成したプログラムをアップロードする場所です。 上にあるメニューから[編集]→[このページにファイルをアップロード]でアップロードできます。 説明も忘れずに付けましょう。 当然ここにあるものが全てではありません 簡単なメディアプレイヤー |AB4プロジェクト形式。 上手く動作しない部分もありますが基本的なことは出来ます。 EasyMediaPlayer.zip 手抜きゲーム(タイピング練習ソフト) |AB4.24でコンパイル確認。問題が少ないけど、結構楽しめると思います。 TypeOfAB.zip タイムスタンプ変換君(ユーティリティソフト) |AB4.24でコンパイル確認。ファイルのタイムスタンプ(作成日時、アクセス日時、更新日時)を任意に変更。ただし1600年1月1日以降 timemachin...
  • デッドロック
    マルチスレッドでもっとも危険な行為がデッドロック。 スレッドAとスレッドBがあってAがBの終了を待っている時にBがAの終了を待つ。 こうすると永遠に終わらないよね。 こんな関係のことをデッドロックと言う。 よくあるケース1 |メインスレッドがWaitForSingleObjectで待っている時にサブスレッドがSendMessageを呼ぶとデッドロックに陥る。 これはSendMessageは処理が完了するまで制御を戻さないから。回避するにはPostMessageを使う。
  • 機械
    NC工作機械を動かすには、ハンドルなどを使う方法とNC言語を使う方法がある。 NC言語は、単純な記号によって構成されており可読性が低い。 かの有名なアセンブラにも及ばない。 NC言語の例 G00 X0.Y0.Z10.; G01 Z0.; Y20.; X10.Y10.; X20.Y20.; Y0.; G00 Z10.; X0.Y0.; NC言語は基本的には Gコード(準備機能) Mコード(補助機能) XYZABC(アドレス) SFT(工具に関する命令) で構成される。 Gコード Gコードは機械に今からこれこれをしますよという意志を伝える。 G00 早送り 機械の最高速度で移動 G01 直線補間 Fで与えた速度で指定位置に直線で移動 G02 円弧補間 Fで与えた速度で指定位置に時計回りで移動 G03 円弧補間 Fで与えた速度で指定位置に反時計回りで移...
  • 初めてのプログラム
    プロジェクトエディタを起動して 新規作成→Basicプログラムと進む。 エディタ画面に次のコードを貼りつけてリリースコンパイルのボタンを押す。 Dim myname[1208] As Byte wsprintf(myname, "平井公彦") MessageBox(0,myname, "名前", MB_OK) 名前を付けて保存するが出てくるので、適当なところに好きな名前で保存。 するとその名前のexeができる。 このexeをダブクリすると こんなのが出てくる。おめでとう! プログラムの経験が無い人は何がどうなっているのかわからないだろうが、今すぐに理解出きなくても良い。 これをいろいろいじってみることでどんな結果になるか試してみよう。 そして新しい単語が出てきたら、ヘルプに眼を通すことと、いろいろやってみること...
  • ステップ22 「ステータスバーを使う②」
    今回はステータスバーを複数のパーツに振り分け、日付、時刻、ウィンドウサイズを表示してみます。 どうやって振り分けるの? CreateStatusWindow関数を使ってステータスバーを生成したら、ステータスバーのハンドルに向けて、SB_SETPARTS メッセージを送ります。SB_SETPARTS メッセージのパラメータは以下の通り… wParamにはパーツ数を指定します。 lParamには、各パーツの長さ(ピクセルサイズ)が格納されたLong配列へのポインタを指定します。 また、各パーツへ文字列を設定するときには、SB_SETTEXT メッセージを使うわけですが、wParam部分にパーツ番号を指定する点をおさえておくと良いでしょう。 作ってみよう! ステップ21で作成したプログラムがある場合は上書き方式でプログラムを加工してみて下さい(変更点は...
  • Win32APIの招待
    Win32APIとはなんですか? 一言で言えば、関数です Windows側の提供する、様々な機能はWin32APIに結晶されております。 例えばウインドウやシェル操作。 例えばファイルやレギストリ、プロセスレッドといったシステムに関わるもの。 こう言った類のものを扱うのがWin32APIです。 Win32APIはDLLという形で提供されています。 多くの言語には、Win32APIを使いやすくした独自のライブラリがあったりしますが、ABには無いような気がします。 #N88BASIC で出てくる黒窓、各種命令も内部でWin32APIを使っていますがライブラリと呼ぶにはレベルが低いかと思います。 実はよくあるAPIはすでに宣言されていますが、完全ではないため、自分で宣言することもあろうかと思います。 Declareを使う方法と関数ポインタでやる方法とがあ...
  • ステップ14 「DLLを作る」
    Basic言語でDLLを作るだって?冗談言うなよ! それが、ActiveBasicでは自然な形で作れてしまいます。ネイティブ コードにコンパイルされるため、DLLプログラムとして要求されるだけの実行速度、プログラム サイズが期待できます。 作り方はとてもシンプル 通常のEXEプログラムと違う点は以下の2つだけ。 ① プロジェクト作成時に「DLL」を選択する ② エクスポートする関数には "Export" 指定をする ①は画面の説明に従うだけなので解説の必要はありませんね。②に関してですが、今までは関数を定義するというと、 Sub func1(parm...) ... End Sub Function func2(oarm...) As Long ... End Sub という感じに定義するのに対し、エ...
  • 文字列処理
    文字列処理は重要です。ポインタが理解出来ているかどうかの重要な見極めにもなります。 基本 "今日は○○する気分ではない" という文字列は最後に0(ナル文字)がつきます。 ナル文字とヌルとヌルポインタの違いはその意味にあり、 ナル文字(NUL)はゼロ終端系文字列(*1)に於ける文字の終了 nullは無効な値 null pointerは無効なポインタ をそれぞれ意味します。 補足 1)ゼロ終端系でない文字列にはPASCAL文字列等があり、PASCAL文字列は処理速度に優れた特性があるため、Excel内部等で用いられている。 実際に使ってみよう Sting型に慣れている人は面倒だと思うけど、ついてきて欲しい。 1 byte型配列を使おう! #N88BASICDim mes[123] As Byte'1...
  • 名前
    名前(なまえ)とは識別子の言い換え語である。 オブジェクト(特定のメモリ領域)に名前を付けるには宣言をしなければいけない。 このときに、ABではDim文やDeclare文などで明示的に宣言しなければいけない。 名前をつけるときに、昔のBASICはインタプリタであったため、文字数をすくなくしたり、 よく使う変数を先に使っておくといった裏技があったが コンパイラ言語では無意味であるばかりか、可読性の低下を招くだけである。 命名にあたっては、一定の規則をきめておこなうことが多く、 マイクロソフトではハンガリアン記法なるものに取り憑かれたことがあった。 一般的には次のような記法が有効であるとされる。 グローバル変数 g_ ポインタ変数 p_ メンバ変数 m_ スタティック変数 s_
  • ステップ16 「RPGのマップ移動機能を作る①」
    今回はスプライト処理をはじめとするテクニックを利用し、マップ、および主人公の描画をRPGライクに行います。 なお、今回からの解説は、First Seed Materialで公開されているRPG用素材を利用させていただきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy.zip(プロジェクトに必要なファイルがすべて入っています) このステップの要点は、スプライト処理です。ビットマップのマスク処理などといったほうが、親しみがあるかもしれません。具体的には、ビットマップに対して以下のような演算をさせ、画面に出力します。 = AND OR これを動かすとなると少し大変なので、まずは右上にあるような画面を作ってみることにしましょう。 ノーマル ウィンドウ ベースの新規プロジェクトを作成し...
  • 決定論、非決定論性
    決定論、非決定論ちう表現は、しばしば哲学や科学的宗教的側面で語られるが、 コンピュータプログラムにおける決定論とは、プログラムコード実行時における、 その動作や振る舞いにあいまいな点が無く、記述されたコード内容から振る舞いが予測でき、 何度実行しても同じ結果を返すコードの事を言うんや。 これに対し非決定論的なプログラムコードとは、プログラムコード実行時までその動作や 振る舞いが不明である様子を指し、具体的な例としては、入力データを要求するがデータが不定な プログラム、またはコンピュータゲームにおける人間のコントローラ操作による 未知の要素が含まれる場合が該当するちうわけや。 厳密には異なるが理解しやすい例としては、バグが内在するフィルタプログラムに対し、 前提としていっぺんも実行またはデバックされておらへんちう条件下で、未知のデータを入力する 状況では、プロ...
  • マウス
    コンピュータの入力装置のひとつ。 表には3つ程度のボタン、ホイールなどがあって裏にはボールが付いている。 Windowsでは、ウィンドウプロシージャでボタンや動きを簡単に検知できる。
  • とりあえず文字ベースの窓作って何か表示してみたいんですけど。
    文字ベースの窓は一言呪文を書けば作れる。その呪文はこんな感じ。 #console 表示するときには、例えば Hello,World! と表示したかったら、 Print "Hello,World!" と書けば表示されるようになる。 特殊な記号を表示したいときには、Exを"~"の前に書く必要がある。 書くと、\r\nと\rと\nが改行に、\tがタブに、\qがダブルクォートに、\\が\に変換される。 Print Ex"Print \qHello,World!\q" Writeでも同じ事が出来る。 入力は、Inputを使う。 Input A とすると、Aに入力された文字とかをその型に変換して入れてくれる。 Input "A=",A とすると...
  • ステップ15 「Byte配列で行う文字列操作」
    Basicで文字列といったら、$マークをくっつけた変数や、String型で定義した変数を利用するんじゃ… おっしゃる通り、以前までのBasicでは文字列といえば、String型変数でした。 しかしこのString型変数、扱いはとても簡単ですが、落とし穴もあります。難しい話になってしまいますが、文字列バッファ用のメモリを確保したり、解放したりする処理を独自に行っているため、Win32API用をはじめとするいくつかの機能はこれらメモリ操作のことを考慮してくれません。String型変数は、独自のプログラム内でのみの利用ならなんの問題もありませんが、Windowsアプリケーションの開発を行っていく上で、どうしても無理が生じる場合があります。 そこで登場するのか、Byte配列の変数。メモリ確保、解放などの処理が必要ないため、比較的単純な構造をしています。こちらもコツさえつかんでし...
  • 再帰
    関数内で、自身の関数を呼ぶ処理のこと。再帰的関数を使う事で、ある種のアルゴリズム表記を端的に 表現可能な場合もあるが、多くの場合、デバックや可読性に難が生じる場合がある。 一般に、再帰的表現はループ展開による表現が可能である。 '再帰Function sum41(a As long, b As long) as longif a b then exit functionsum41=a+sum41(a+1,b)End Function#N88BASICPrint sum41(sum41(1,sum41(-1,3)),sum41(sum41(1,sum41(1,2)),9)) 再帰的処理では、自身の関数を呼ぶので、結果として無限ループとなる。したがって、通常はif文などを 用いて停止条件などを指定する必要がある。 しかし実際には再帰的関数は、幾つかの手続き型言...
  • ラジオボタンを使う
    Win32プロジェクトを新規作成、コモンコントロールを使う、にちえっく。 メインウインドウにラジオボタンを貼る。 確認用ボタンを貼る。 ボタンのイベントハンドらを書き、状態を知る。 戻り値は、TRUE/FALSEで判定。 ラジオボタンの数だけ値を得て確認。 コードエディタ上では、個別にラジオボタンが押されたときのイベントをかくこともかのう。 Sub MainWnd_CommandButton1_Click()Dim rtn As LongDim hradio As HWNDhradio=GetDlgItem(hMainWnd,RadioButton1)rtn=SendMessage(hradio,BM_GETCHECK,0,0)msgbox hMainWnd,Str$(rtn)End Sub このほか、ラジオボタンにはグループ属性がある。 例えば、1~8までの...
  • AB以外の開発環境
    フリーのもの ActivePerl |WinでPerlを使うならこれ。 StrawberryPerl |WinでPerlを使うものその2。 Digital Mars C, C++ and D Compilers |D言語。C/C++コンパイラもある。omf形式を吐くのでMS厨とは相性悪し。 FreeBASIC |マルチプラットホームかつオープンソースなBASICコンパイラ。インタプリタではない。 基本構文はQBasic互換であるがオブジェクト指向やポインタなど独特の言語拡張の導入は ActiveBasicと似ていてANSI非互換である。非常に多くのライブラリがある。 Ver1.0から64bit環境に対応。(フリーなBASICの64bit環境はActiveBASICとFreeBASICしかない) Smal...
  • 48
    プログラムではかならずと言っていいほど変数を使う。 変数の大きさは8,16,32...ビットということで48ビット変数なんて聞いたことがない。 wavファイルの波形編集ソフトは内部で24bit精度で演算していることが一般的で2chだから48bit型変数があれば便利。 もし自分で作るときは構造体を使うといいかも。 Type MY24BIT l As Byte m As Byte h As Byte End Type Type MY48BIT Lch As MY24BIT Rch As MY24BIT End Type ちなみに…私たちが使っているであろうX86のメモリ空間は48bitなのでメモリをいくら増設しても3.5GB以上はOSから認識しない。
  • コールバック関数って何?
    コールバック関数は、事前に登録しておき、その後必要に応じて呼ばれる関数のことである。 通常、関数やプロシージャなどは、プログラム内のコードから呼び出され実行される。一例としてsin()、Math.sin() などの三角関数は、print sin(pi)などのようにプログラム内で記述が現れた際に実行される。 一般的な関数は、すべて手続きに従って呼び出され実行される。 これに対して、コールバック関数は通常の手続きの流れとは異なり、関数がプログラム内部の 主としたフロー内から呼ばれないものの事を指す。 コールバック関数は、与えられた関数名を予め登録しておき、主たる処理のフローとは個別に、 何らかの処理が必要になった場合に、システムによって呼び出される。 この仕組みは割り込みなどの仕組みに応用出来る。 コールバック関数は、言語上、明確に区別されるものではな...
  • @wiki全体から「基本的な演算子には何があって、どう使うの?」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索