abwiki @ ウィキ (ActiveBasic非公式wiki)内検索 / 「ELM」で検索した結果

検索 :
  • ELM
    名称 |ELM 読み |エルム、エレメント等 定義 |ELM(n) 説明 |nの値から1を引きます 戻り値 |n-1が返ります 参照 |
  • スプライン補間
    ... = 5Dim x[ELM(N)] = [ 0, 10, 20, 30, 40 ] As DoubleDim y[ELM(N)] = [ 610.66, 1227.4, 2338.1, 4244.9, 7381.2 ] As DoubleDim z[ELM(N)] As DoubleDim h[ELM(N)] As Double, d[ELM(N)] As Double'staticSub maketable(x As *Double, y As *Double, z As *Double)Dim i As LongDim t As Doublez[0] = 0 z[N - 1] = 0 /* 両端点での y''(x) / 6 */ For i=0 To N-2h[i ] = x[i + 1]...
  • 宣教師と人食い人
    ...ongDim mb[ELM((B+1)*(B+2)/2)] As Byte, cb[ELM((B+1)*(B+2)/2)] As ByteDim mh[ELM(2*(M+1)*(C+1))] As Byte, ch[ELM(2*(M+1)*(C+1))] As Byte, flag[M,C] As ByteDim mmm[10] As *Byte, ccc[10] As *Bytelstrcpy(mmm, "MMMMMMMMMM")lstrcpy(ccc, "CCCCCCCCCC")Sub found(n As Long) /* 解の表示 */Dim i As LongDim sss[999] As Bytesolution = solution + 1Print "解"; solutioni=0While i = ns...
  • FFT (高速Fourier変換)
    ...ongDim x1[ELM(N)] As Single, x2[ELM(N)] As Single, x3[ELM(N)] As SingleDim y1[ELM(N)] As Single, y2[ELM(N)] As Single, y3[ELM(N)] As SingleFor i = 0 To N-1x1[i] = 6 * Cos( 6 * PI * i / N) + 4 * Sin(18 * PI * i / N)x2[i] = x1[i]y1[i] = 0 y2[i] = y1[i] NextIf fft(N, x2, y2) Then Exit SubFor i = 0 To N-1x3[i] = x2[i] y3[i] = y2[i]NextIf fft(-N, x3, y3) Then Exit SubDim mes[589] As Bytesprintf(...
  • メモリ上の機械語プログラム
    ...l)Dim asm[ELM(40)]=[ h55, h8B, hEC, h51, h8B, h45, h08, h8B, h08, h89, h4D, hFC, h8B, h55, h08, h8B, h45, h0C, h8B, h08, h89, h0A, h8B, h55, h0C, h8B, h45, hFC, h89, h02, h8B, hE5, h5D, hC2, h08, h00, hCC, hCC, hCC, hCC] As Byte'プロトタイプDim swap As *Sub(p1 As *Long, p2 As *Long)#N88BASICDim a As Long, b As Longswap = SetAsm(asm, ELM(40))a=666 b=893Print...
  • Hamming (ハミング) の問題
    ... 100Dim q[ELM(N)] As LongSub hamming()Dim i As Long, j2 As Long, j3 As Long, j5 As Long, min As Long, x2 As Long, x3 As Long, x5 As Longx2 = 1x3 = 1x5 = 1For i=0 To N-1min = x2If x3 min Then min = x3If x5 min Then min = x5q[i] = minWhile x2 = min x2 = 2 * q[j2] j2 = j2 + 1 WendWhile x3 = min x3 = 3 * q[j3] j3 = j3 + 1 Wendwhile x5 = min x5 = 5 * q[j5] j5 = j5 + 1 WendNe...
  • リファレンス
    ...AddressOf ELM RGB SizeOf VarPtr サポート関数(非標準) ldexp frexp ipow pow rand srand II.命令 入出力命令 Open Close Print Write Input Field Get Put グラフィックス命令(N88) Cls Circle Line Pset Paint ウインドウ操作命令 Window DelWnd MsgBox その他命令 Beep ChDir Color Debug End Exec Kill Locate MkDir Randomize III.構文 If Goto GoSub~Return For~Next While~Wend Do~Loop Select Case Declare Sub Function Macro Dim Const Enum Let Set〇〇...
  • 異次元殺法
    ...まりDim app[ELM(ARRAY_MAX)] As *Byteと同じ。 ppp[0]="平井公彦" ppp[1]="〒106-0032, 東京都港区六本木" ppp[2]="j" ppp[3]=0 こんな感じでリテラルを突っ込んだり ppp[4]=malloc(5000) のように動的配列をつくったり、その使い方は無限大! 配列のポインタ 上の例はポインタの配列。今からやるのは配列のポインタ。 type sar sq[127] As Byte End Type ABでは宣言の時に配列を型として指定できない重大な欠陥があるので、構造体として誤魔化します。 Dim tpp As *sar こうやって tpp = calloc(SizeOf(sar) * 87) で87個の1...
  • 曜日
    ...gDim name[ELM(7)] = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Suturday",] As BytePtrPrint "Year ?"; Input yearPrint "Month?"; Input monthPrint "Day ?"; Input dayIf month 3 Thenyear--month += 12End IfdayOfWeek = (year + year \ 4 - year \ 100 + year \ 400 + (13 * month + 8...
  • 基本的な演算子には何があって、どう使うの?
    ...ージョン。 new[ELM(100)] A delete 破棄。newで生成したクラスを開放(破棄)する。使い終わったらきちんと開放しなきゃ、他のクラスの生成が難しくなる。 delete A
  • 縦形探索
    .../Dim data[ELM(10)] = [ 1, 2, 2, 3, 1, 3, 2, 4, 5, 7 ] As Long /* データ (例) */Dim visited[NMAX] As Byte /* 訪れたなら1 */Function Cnot(i As Long) As LongIf i ThenCnot = 0ElseCnot = 1End IfEnd FunctionSub readgraph() /* グラフ入力 */Dim i As Long, j As Long, k As LongFor i=1 To nFor j=1 To nadjacent[i,j] = 0NextNextFor k=0 To 9If (k mod 2) = 0 Theni = data[k]Elsej = data[k]adjacent[i,j] = 1adjacent[j,i] =...
  • mpglib.dllを使ったmp3再生
    ...mebsspace[ELM(2*(MAXFRAMESIZE+512))] As Byte /* MAXFRAMESIZE */hybrid_block[ELM(2*2*SBLIMIT*SSLIMIT)] As Singlehybrid_blc[ELM(2)] As Longheader As DWord bsnum As Longsynth_buffs[ELM(2*2* h110)] As Singlesynth_bo As LongEnd TypeType ID3V2ID3[2] As Bytemajorversion As Byterevision As Byteflag As Bytesize[3] As ByteEnd TypeDeclare Function InitMP3 CDECL Lib"mpglib.dll" Alias "_InitM...
  • マルチスレッド
    ...UKIDim hT[ELM(2)] As HANDLEDim id As DWordDim hF As HANDLEDim mes[666] As ByteDim w As DWordDim cs As CRITICAL_SECTIONInitializeCriticalSection(cs)hF = CreateFile("sincos.txt", GENERIC_WRITE, 0, ByVal 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)hT[0] = CreateThread(ByVal 0, 0, AddressOf(sint), 0, 0, Varptr(id))hT[1] = CreateThread(ByVal 0, 0, AddressOf(cost), 0, 0, Varptr(id))WaitForMu...
  • メーラーを起動する
    Dim mailmes[44444] As ByteDim add[444] As ByteDim taitle[444] As ByteDim body[4444] As Bytelstrcpy(add, "aaa@bbb.ccc")lstrcpy(taitle, "[重要]至急連絡ください")lstrcpy(body, "5万円")wsprintf(mailmes, "mailto %s?subject=%s body=%s", add, taitle, body)ShellExecute( 0, "open", mailmes, 0, 0, SW_SHOW)
  • Field
    名称 |Field 読み |ふぇーるど 定義 |Field ファイル番号, レコードサイズ 説明 |ランダムファイルの1レコード長の指定。 参照 |Get , Put
  • Select Case
    名称 |Select Case 読み |せれくとけーす 文法 |Select Case testexpression Case expression Case expression Case Else End Select 説明 |Gotoの上位版。 条件によって行き先を変える、 N88BASICのON X GoSubみたいなもの。 トリッキーな使用法もあり、「順番に判定して行き、1つでも当てはまればそこでキャッチする」という使い方がある。 例 Select Case -1 Case r 0 ... r 0ならば実行 Case t=0 ... t=0ならば実行 Case Else ... End Select
  • とりあえずDLL作ったりしたいんですけど。
    DLLを作るには、新規作成のプロジェクトを選択します。 んで、アプリケーションタイプをDLLにするだけです。 すると、↓のようなファイルが出てきます。 #include "test.idx" ------------------------------------------------------------------- メモ - このファイルには、DLLの構成要素を記述します。 (例:関数定義、グローバル変数、定数定義など) エクスポートが必要な関数には、"Export" 修飾子を指定します。 (例:Function Export FuncName() As Long) -------------------------------------------------...
  • MAKELONG
    名称 |MAKELONG 読み |メイクロング 定義 |Const MAKELONG(a,b) = (*1) As Long 説明 |2つのWordgataからLong型を生成 戻り値 |Long型が返るます。 参照 |HIBYTE,LOBYTE,LOWORD,HIWORD,MAKEWORD
  • ブロック崩し
    'ブロック崩し'操作方法'←と→キーだけ。#N88BASICConst Xmax = 21Const Ymax = 22Const KABE=99Const BALL=100Const BAN=101Dim map[Xmax,Ymax]'マップ情報Dim k'のこりブロック数Dim I$, x , y ,a'汎用Dim c, wait'速度制御Dim sx, sy'盤の位置Dim bx, by 'ボールの位置Dim bv, bh 'ボールの向きDim dflag'デバッグモードdflag=0Goto *MAIN'----------------------------' サブルーチンここから'----------------------------&#...
  • htmlhelp
    'htmlhelp.sbp'05/05/10'06/09/10 最後まで書いた' Commands to pass to HtmlHelp()Const HH_DISPLAY_TOPIC = H0000Const HH_HELP_FINDER = H0000 ' WinHelp equivalentConst HH_DISPLAY_TOC = H0001 Const HH_DISPLAY_INDEX = H0002 Const HH_DISPLAY_SEARCH = H0003 Const HH_SET_WIN_TYPE = H0004Const HH_GET_WIN_TYPE = H0005Con...
  • Shellソート
    整列アルゴリズムのひとつ。 挿入ソートの改良版で、Donald L. Shell(Communications of the ACM, 2 30-31, 1959)による整列法。高速だが、安定ではない。 挿入ソートは、ほとんど整列されたデータに関しては高速である。しかし、隣通しの交換しかしないため、あまり整列されていないデータでは低速であった。そこで、適当な間隔をあけて大雑把な整列を行うことで高速化させている。 大雑把な整列をするための間隔はいくつか考えられるが、下記の例ではh(1)=1, h(n)=3×h(n-1)+1で定義される数列を用いており、このときの実行時間はO(n^1.25)であることが知られている。 プログラミング掲示板「ソートロジック大会」なども参照のこと TypeDef keytype = IntegerSub shelsort(n As In...
  • ステップ27 「メモリ監視ツールを作る①」
    公式のものは4.24でもコンパイル可能であるが、メモリが4GBとかだと値がおかしくなるし、新しいOSにも対応していないので 次のように修正が必要。 ' ----------------------------------------------------------------------------' イベント プロシージャ' ----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' メモ - 以下の領域を、変数、構造体、定数、関数を宣言するための、' グローバル領...
  • ステップ14 「DLLを作る」
    Basic言語でDLLを作るだって?冗談言うなよ! それが、ActiveBasicでは自然な形で作れてしまいます。ネイティブ コードにコンパイルされるため、DLLプログラムとして要求されるだけの実行速度、プログラム サイズが期待できます。 作り方はとてもシンプル 通常のEXEプログラムと違う点は以下の2つだけ。 ① プロジェクト作成時に「DLL」を選択する ② エクスポートする関数には "Export" 指定をする ①は画面の説明に従うだけなので解説の必要はありませんね。②に関してですが、今までは関数を定義するというと、 Sub func1(parm...) ... End Sub Function func2(oarm...) As Long ... End Sub という感じに定義するのに対し、エ...
  • Bessel(ベッセル)関数
    ベッセルの微分方程式におけるy(x)の特異解である。 ベッセルの微分方程式は2階の線形微分方程式であるため、線形独立な2つの解が存在するが、その内n→∞で0に収束するものを第1種ベッセル関数と呼びJn(x)と表す。また逆にn→∞で発散するものを第2種ベッセル関数(もしくはノイマン関数ないしウェーバーの関数)とよびYn(x)とする。 第1種ベッセル関数は級数展開によっても定義されるが、変数xが大きいと桁落ちが生じる。そこで下記プログラムでは漸化式(1)を用いて求める  Jn+1(x) = (2*n/x)Jn(x) - Jn-1(x) ・・・ (1) 十分大きな整数Nに対してJN(x)=ε、JN+1(x)=0とする初期条件よりJN-1(x)、JN-2(x)・・・を漸化式で求めることで目的の解を得る。出発点NはJ0(x)からJx(x)まではほぼ々大きさで、...
  • Mandelbrot (マンデルブロート) 集合
    /***********************************************************mandel.c -- Mandelbrot (マンデルブロート) 集合***********************************************************/#N88BASICConst M = 1000Const XMAX = 640Const YMAX = 400Sub main()Dim i As Long, j As Long, imax As Long, jmax As LongDim maxiter As Long, count As LongDim xmin, xmax, ymin, ymax, x, y, a, b, a2, b2, dx, dyDim color[M] As LongInput "xmin = ...
  • ステップ0 「インストールとHello world!」
    公式の説明でok まず、ActiveBasicとはなんだ?といえば、Windows用のBasic言語だと理解しておいておくんなはれちゅーワケや。「Ver3.0からはコンパイラがこのように進歩して…」とゆうややこしいことは、技術解説のページを見まひょ。とくかく、このページの通りに操作すれば、(間違いが無ければ)じぇったい目的のプログラムを動かせるようになっていまんねん。 まずは、ダウンロード、インストールの説明から。 ActiveBasicダウンロードページの下のほうに、「ab***.exe」(*には数字が入ってまっせ〜)とゆうファイルへのリンクがあるので、それをクリックして適当なフォルダにダウンロードしておくんなはれちゅーワケや。Vectorからもダウンロード出来まんねん。 そのあとアーカイブを解凍し、解凍先のフォルダを選択し、OKボタンを押しまんねん。 ...
  • ABのヘルプを充実させよう!
    ABのヘルプに全文検索をつける ABのヘルプはchm形式ですが、chm形式の醍醐味である全文検索がありません… どうして無いの?という話ですが、Compile full-text search infomationにチェックを入れて ABのヘルプをリコンパイルしてみると必ずヘルプコンパイラが落ちます。 これはヘルプコンパイラのバグでもあるんですが、ABのヘルプにも問題があって、 落ちる場所であるPages\Command\Window.htmとPages\API\Window\Window\CreateWindowEx.htmのソースを見ると次のように書かれている箇所があります。 コントロールのテキスト中のアンパサント「 」文字を、 htmlでは&を&としなければいけませんのでこれを修正します。 はい。これでCompile full-...
  • DLLの基礎
    DLLは、Windowsの根幹である。 DLLは、Windowsをより使いやすくするための手段です。 exe(実行)ファイルは機械語でプログラムが書かれています。 これは単体で動作するものですが、 例えば a.exeとb.exeの中で全く同じ動作をするプログラムがあった場合、 2つも同じものがあるのは容量、読み込み時間の無駄になります。 2つとかならいいのですが100個のアプリケーションが同じコードを持っていたら大変なムダです。 そこでDLLの登場です。 DLLはプログラムの部品を入れることができ、それは複数のアプリで共有されます。 なお,DLLをつくる時は、main関数ではなくDllMain 関数がエントリポイントとなります。 これは梨花で変更可能ですがデフォルトに従った方が良いでしょう。 とうぜんですがDllMain関数内で例外を起...
  • EXCEL
    VBAの動作環境。
  • Base64 エンコード
    文字列を入力しBASE64にエンコードしてみるテスト。 #N88BASICFunction Base64Enc(src As *Byte, dst As *Byte) As LongDim Base64Tbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" As *ByteDim i As Long, j As Long, n As Long, t As LongDim p As *Bytep = calloc((lstrlen(src)\3+1)*3+1)lstrcpy(p, src)While p[i]t = (p[i] 16) or (p[i+1] 8) or (p[i+2] 0)i=i+3For n=3 To 0 Step -1dst[j] = Base64T...
  • memset
    C言語の標準ライブラリに存在する関数の一つ。 void *memset(void *buf, int c, size_t n); bufをnバイトだけcの値で埋め尽くす。 FillMemory(Win32API)と同等。
  • DelWnd
    DestroyWindow関数の言い換え
  • ステップ28 「メモリ監視ツールを作る②(設定をレジストリに保存)」
    前回と同じ修正が必要。 またこのサンプルを実行するとレギストリに永遠に値が残るのでこれは重大な問題だと癒える。 前回に引き続き、メモリ監視ツールに、オプション項目を付け足してみます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ SystemWatcher2.zip(プロジェクトに必要なファイルがすべて入っています) オプション項目って何をするの? 更新間隔の設定 最前面表示のオン/オフ 今回は、上記の2点と、それら設定項目のレジストリへの保存を試みます。 レジストリ操作 ① RegOpenKeyEx関数でレジストリキーをオープン ② RegQueryValueEx関数で値を読み込む / RegSetValueEx関数で値をセットする ③ RegCloseKey関数でレジストリキーを閉じる ...
  • ステップ8 「構造体とファイルオープンダイアログ」
    今回は、RADツールとは離れ、構造体についての説明をします。扱うプログラムも、プロジェクトではなく、単体ファイル(*.abp)になるので、そのつもりで読んでいって下さい。 構造体 いくつかの変数を集めたものを、構造体と呼びます。1つのものに対して、複数のデータが存在するときに利用されます。構造体の定義方法、利用方法は下のようになります。 構造体の定義 Type 構造体名 メンバ変数1 As データ型1 メンバ変数2 As データ型2 メンバ変数3 As データ型3 ... End Type 構造体を利用するとき Dim a As 構造体名 a.メンバ変数1 = ... a.メンバ変数2 = ... 構造体の定義はType ~ End Type文を利用します。構造体の中に構造体を定義することも可能です。 Dim...
  • ステップ11 「テキスト エディタを作る」
    Sub MainWnd_IDM_OPEN_MenuClick()の Dim buffer As StringをDim buffer As *Byteに、 buffer=ZeroString(dwFileSize)をbuffer=malloc(dwFileSize)に それぞれ変更。 今回は、必要最小限の機能がついたテキスト エディタを製作します。 必要最小限の機能ってどんなものがあるの? 開く、保存 だけです(キッパリ)。しかし、これではさすがに寂しすぎるので、コピー&ペーストなどの編集メニューまでをこのページで解説することにします。 さっそく作ろう! ノーマル ウィンドウ ベースのプロジェクト(プロジェクト名を "TextEditor" とします)を作成し、メニューの作成(IDは "MainMenu")...
  • ライフゲーム
    昔なつかしいライフゲーム。 ルールは簡単。 セルが生きていて周り8つのセルを数えて2か3なら生き残る、 セルが死んでいて周りが3つなら誕生。 これだけ。 ライフゲーム #N88BASIC Const XMAX = 30 Const YMAX = 30 Const XMIN = 1 Const YMIN = 1 Const INIT_CELL_PER = 20 初期ライフの割合 Const TIMER = 250 Const CELLSIZE = 16 Enum MAPPING MAINMAP SUBMAP End Enum Dim cell[XMAX,YMAX,1] As Byte MAIN() Sub MAIN() Randomize INIT() While (1) DRAW() Sleep(TIMER) NEW...
  • ステップ16 「RPGのマップ移動機能を作る①」
    今回はスプライト処理をはじめとするテクニックを利用し、マップ、および主人公の描画をRPGライクに行います。 なお、今回からの解説は、First Seed Materialで公開されているRPG用素材を利用させていただきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy.zip(プロジェクトに必要なファイルがすべて入っています) このステップの要点は、スプライト処理です。ビットマップのマスク処理などといったほうが、親しみがあるかもしれません。具体的には、ビットマップに対して以下のような演算をさせ、画面に出力します。 = AND OR これを動かすとなると少し大変なので、まずは右上にあるような画面を作ってみることにしましょう。 ノーマル ウィンドウ ベースの新規プロジェクトを作成し...
  • ステップ17 「RPGのマップ移動機能を作る②」
    前回やった、草原マップ、主人公キャラの描画に引き続き、今回はキー操作に反応し、キャラが自由に歩き回れるようにするプログラムを作成していきます。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy2.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、First Seed Materialで公開されているRPG用素材を利用させていただきます。 前回作成したプログラムがある方は、MainWnd.sub のプログラムを変更するだけで実現できます。このページのプログラムリストは、前回からの変更点を太字で示してあるので、それを参考に改良してみて下さい。 新規にプログラムを作成する方は、まずはプロジェクトを作成しておきましょう。新規作成→プロジェクトで、"Fantasy" などという名前のプロ...
  • ステップ18 「RPGのマップ移動機能を作る③」
    前回の解説で主人公キャラが自由に動け回れるようになったので、今回は任意のマップを描けるようにしてみます。 マップ図にマップチップを割り当てるという、非常にシンプルな細工をするわけですが、マップチップの種類が非常に多いため、数字攻めになってしまうかもしれませんが、根気良くがんばりましょう。 今回作成するプログラムのサンプルファイルを置いておきますので、参考にしたい方はどうぞ☆ Fantasy3.zip(プロジェクトに必要なファイルがすべて入っています) 今回も、ステップ17「RPGのマップ移動機能を作る②」で掲載したプログラムの変更点を太字で表しているので、参考にして下さい。 また、以下のようなマップの配置図(25*20)をCSV形式で用意しておく必要があります。プロジェクトが保存されているディレクトリに "map.csv" というファイル...
  • 2次方程式
    2次方程式の解の公式をそのまま使うと、|b| ≒ √(b^2 - 4ac)のとき桁落ちが生じる。 そこで、桁落ちの生じないほうの解だけ公式で求め、もう一方は解と係数の関係(解をα、βとするとαβ = c / a)で求める。 quadeq.cの移植 AB4.24.00で動作確認 #strict#promptDim a As Double, b As Double, c As Double, d As Double, x As DoublePrint "Input a, b, c"Input a, b, cIf a 0 Then' aで割ってx^2 + b*x + c = 0の形にするb /= ac /= aIf c 0 Thenb /= 2 ' x^2 + 2b'x...
  • リストビュー(3)
    リストビューにアイコンを付ける~他タイプのリストビューについて † ↑ [edit] リストビューにアイコンをつける † 特定フォルダ内のファイルリストをリストビューに表示しアイコンをつけてみます ↑ [edit] 準備 † iml.sbp ↑を前回までのプロジェクトに追加 ↑ [edit] イメージリスト † イメージリストというのはコモンコントロールの一種で同サイズのイメージをインデックスで管理できるようにしたものです コモンコントロールでアイコンを使う場合はほぼ例外なくイメージリストを要求されますが 画像を用意するのが面倒くさいので今回はシステムが持っているイメージリストを使います iml.sbpをインクルードしてあればGetSystemImageList関数で取得できます GetSystemImageList(IconTyp...
  • スタティックテキストの文字を変える
    メインウインドウにはったスタティックテキスト(ラベル)の文字を変える。 ボタンが押されたときに文字列を変えるなどの応用が可 Sub MainWnd_CommandButton1_Click()Dim hlabel1 As HWNDhlabel1=GetDlgItem(hMainWnd,Static1)SetWindowText(hlabel1,"hello")End Sub 以下のプロシージャを使っても同等。 Sub LabelText(hlbl As HWND,str As String)SetWindowText(hlbl,str)End Sub SetDlgItemTextを使ってもいいかもね。 Sub MainWnd_CommandButton1_Click()SetDlgItemText(hMainWnd,Static1,"h...
  • 立方根
    /***********************************************************cuberoot.c -- 立方根***********************************************************/Function cuberoot(x As Double) As DoubleDim s, prevDim positive As LongIf x = 0 Then Exit Functionif x 0 Then positive = 1 Else positive = 0 x = -xIf x 1 Then s = x Else s = 1Do prev = s s = (x / (s * s) + 2 * s) / 3Loop while (s prev)If (positive) Then c...
  • プログレスバーの中に文字が表示できるやつ
    Class HIRAI_PROGRESSPrivatehWnd As HWNDhDC As HDChMDC As HDChBmp As HBITMAPrcc As RECThPen As HPENhBrs As HBRUSHmax As Longmin As Longcur As Longspo As LongPublicSub ~HIRAI_PROGRESS()DeleteObject(hBrs)DeleteObject(hPen)DeleteObject(hBmp)DeleteDC(hMDC)ReleaseDC(hWnd, hDC)End SubSub Set(hWnd2 As HWND)hWnd = hWnd2GetClientRect(hWnd, rcc)hDC = GetDC(hWnd)hMDC = CreateCompatibleDC(hDC)hBmp = CreateComp...
  • 条件分岐やループはどうやるの?
    条件分岐は、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)...
  • ダイアログボックスをリソースから読み出してみよう
    次のプログラムはBasicCompiler.exeに含まれるActiveBasic Compiler Debuggerをメインウインドウにしてみる例。 このようにリーソースすることで、AB側のコードを大幅に減らすことができる。 Declare Function DialogBox Lib "user32" Alias "DialogBoxParamA" ( _ hInstance As HINSTANCE ,_ lpTemplateName As *Byte ,_ hWndParent As HWND ,_ lpDialogFunc As *DWord ,_ dwInitParam As *DWord ,_ ) As *Long Declare Function EndDialog Lib "User32&qu...
  • GDIでお絵かき
    プロジェクトエディターにてウインドウを作成。 プロジェクト名 = hiraiGDI '-----------------------------------------------------------------------------' イベント プロシージャ'-----------------------------------------------------------------------------' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。' ウィンドウ ハンドル hMainWnd' TODO この位置にグローバルな変数、構造体、定数、関数を定義します。Const ToRad(x) = (x * 3.14/180)Class HIRAIGDIPriv...
  • 画像処理2
    Const KOUDO = h1Const MEIDO = h2'a,b,cの最大値を戻すFunction max(a,b,c)If a b Then max = a Else max = bIf max c Then max = cEnd Function'a,b,cの最小値を戻すFunction min(a,b,c)If a b Then min = a Else min = bIf min c Then min = cEnd Function'RGBをモノクロにしてRGB値で返す(c=1,明度、c=2,光度 c=3のとき、平均)Function RGB24ToMonochro(rgb As DWord, c As Long) As DWordDim R As Byte, G As Byte, B As ByteR = rgb And ...
  • 文字コードの変換
    UTF82SJIS http //blog.goo.ne.jp/xmldtp/e/7eaeeb3dabfe975dbc57f73aefb1c059からコピペ #N88BASIC Function utf8ToSjis(utf8 As *Byte) As *Byte Dim utf16 As *Word Dim wlen As Long Dim sjis As *Byte utf8ToSjis = NULL If utf8 = NULL Then Exit Function End If ============================== UTF8=>UTF16変換 ============================== まずは、wlenの長さをとる wlen = MultiByteToWideChar(CP_UTF8, 0, utf...
  • If
    名称 |If~Then~Else 読み |いふ~ぜん~えろす 文法 |If condition Then [command1] [Else command2](一行形式) または If condition Then command1 Else command2 End If (ブロック形式) 説明 |条件分岐を行う。 conditionが真ならcommand1を、偽ならcommand2に進む。
  • @wiki全体から「ELM」で調べる

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