約 4,282,346 件
https://w.atwiki.jp/ra_activebasic/pages/11.html
コメントプラグイン @wikiのwikiモードでは #comment() と入力することでコメントフォームを簡単に作成することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_60_ja.html たとえば、#comment() と入力すると以下のように表示されます。 名前 コメント
https://w.atwiki.jp/ra_activebasic/pages/9.html
@wikiにはいくつかの便利なプラグインがあります。 アーカイブ コメント ニュース 動画(Youtube) 編集履歴 関連ブログ これ以外のプラグインについては@wikiガイドをご覧ください = http //atwiki.jp/guide/
https://w.atwiki.jp/abwiki/pages/64.html
名称 |Time$ 読み |タイムドル 定義 |Time$() As String 説明 |時間を求めます。 N88BASICのように時間の変更はできましぇん 戻り値 |時間が"HH MM SS"の文字列で返ります。 参照 |Date$
https://w.atwiki.jp/ra_activebasic/pages/5.html
まとめサイト作成支援ツールについて @wikiにはまとめサイト作成を支援するツールがあります。 また、 #matome_list と入力することで、注目の掲示板が一覧表示されます。 利用例)#matome_listと入力すると下記のように表示されます #matome_list
https://w.atwiki.jp/abwiki/pages/367.html
/***********************************************************e.c -- 自然対数の底***********************************************************/Function ee() As DoubleDim n As LongDim e, a, preve = 0 a = 1 n = 1Doprev = e e = e + a a = a / n n=n+1Loop while (e prev)ee = eEnd Function#N88BASICPrint ee()
https://w.atwiki.jp/abwiki/pages/40.html
(4.24と比べて)4.23の方が安定度高いんじゃないかなと思うけどどう思う? 選択肢 投票 はい (47) いいえ (58) 再試行 (49) 好きなAKB48メンバー 選択肢 投票 倉持明日香 (17) 小嶋陽菜 (12) 高橋みなみ (5) 中田ちさと (10) 板野友美 (15) 仁藤萌乃 (32) 藤江れいな (10) 宮澤佐江 (5) 柏木由紀 (11) 北原里英 (5) 佐藤すみれ (10) 近野莉菜 (5) 島崎遥香 (5) 山内鈴蘭 (5) DD (10) その他 (12) よく使う言語 選択肢 投票 BCPL (5) COBOL (10) N88-BASIC (10) N88-日本語BASIC (5) Quick Basic (5) BASIC/98 (5) ファミリーベーシック (6) GAME BASIC for SEGASATURN (5) VBScript (6) PASCAL (10) Ada (5) Whitespace (6) D言語 (5) その他 (51) 尊敬する人 選択肢 投票 福沢諭吉さん (4) 新渡戸稲造さん (1) 樋口一葉さん (2) 夏目漱石さん (3) 野口英世さん (3) 荘口彰久さん (4) 橋本明子さん (1) 特宗清さん (4) その他の人 JAVA -- 上田裕也 (2010-02-23 22 58 16) g++のversion 3 -- k (2010-03-04 16 37 16) HSP! HSP! -- ガンブラー被害 (2010-03-06 00 13 05) みけCAT -- Perl (2010-03-14 08 23 44) ↑逆だ -- みけCAT (2010-03-14 08 24 10) WSH -- AB (2010-03-26 02 13 14) N88 N ASIC ってなんだw -- ばばば (2010-06-01 11 00 11) ↑修正しました -- 名無しさん (2010-06-11 07 51 51) Delphi=Pascalに含まれる -- ガンブラー被害 (2010-06-25 19 34 57) Cとなでしこ -- なでしこ好き (2011-01-23 17 52 06) なんで仁藤が一番なん?まりやんぬいれろよ -- キャラメルクラッチ (2011-02-06 12 40 15) HSP -- 名無しさん (2012-03-01 11 45 26) 名前 コメント
https://w.atwiki.jp/abwiki/pages/138.html
スレッドの基本 スレッドの生成はCreateThread関数で行う。 スレッドは引数を1つだけもつ関数にする。 名前は何でもいい。 スレッドは戻り値を持っていて、GetExitCodeThreadで調べることができる。 スレッドの終を待つにはWaitFor〇〇関数を使うと良いかも。 #N88BASICDim hT As HANDLEDim id As DWordhT = CreateThread(ByVal 0, 0, AddressOf(t), 5, 0, Varptr(id))WaitForSingleObject(hT, INFINITE)CloseHandle(hT)Print "スレッドは正しく終了しました"Function t(a As DWordPtr) As LongPrint aEnd Function このようにサブスレッドを作るのは簡単なんだけど、スレッド間の同期や、終了にかかあるタイミングがおかしいと、不具合のもとになる。 1CPUマシン上では、マルチスッドレは速くならない。速くなるケースは、マルチコアCPUで、かつスレッドの実際の処理がスレッドの生成や同期にかかるコストより大きくないといけない。 ウインドウプロシージャのような、場合、長大な処理をウインドウプロシージャでやると、フリーズするので、マルチスレッドにすることで、処理がすぐにカエルので、フリーズ対策になる。 つまり、Windowsのイベント処理やメッセージ処理をスレッド毎に分ける事で、1CPUでもプログラム上のメリットがあるという事。 Windows環境でスレッドを扱う場合、Win32API,C Runtime,MFCの三つの選択がある。 このうちab4では前者二つについて利用可能だろう。Win32API=CreateThread()、C Runtime=_beginthread()または_beginthreadex()である。 ※_beginthred()は呼出規約が非対応なため使えない スレッドを使う場合、スレッド内部で競合が発生すると関数を使う事が出来ない。 典型的な例はPrint文で、複数のスレッドがPrint命令を同時に実行しようとするときちんと動作しない。 これはI/Oに関する競合から起こる為だが、場合によっては計算を主とする関数でも発生する可能性はある。 正しい結果が得られないという事になる。 複数のスレッドを実行しても問題ないように設計されている関数やライブラリを、スレッドセーフである、と言う。 abに含まれる関数やライブラリはスレッドセーフを保証している訳ではないので、もしスレッド内でabの関数を 同時実行しようとすると問題が生じる可能性がある。その場合は適切に競合を回避する排他制御を 実装する(クリティカルセクション)か、スレッドセーフであるCランタイムライブラリを用いる必要があるかもしれない。 Cランタイムを利用する場合は、Win32APIのCreateThreadではなく、_beginthreadexを用いる必要がある。(AB4以前の場合) CreateThreadではCランタイムに対応していない為、例外が発生する可能性がある。 なお、開発中のAB5のThreadクラスはbeginthreadを使っている様子なので、CランタイムDLLを用いてスレッドセーフ な関数を利用可能であろう。(AB5はcdecl呼び出し規約を使える!) _beginthreadexの使用例 #console'スレッドのてすとDeclare Function _beginthreadex CDECL Lib "msvcrt" _ (ByRef lpThreadAttributes As SECURITY_ATTRIBUTES, _ dwStackSize As DWord, _ lpStartAddress As DWord, _ lpParameter As VoidPtr, _ dwCreationFlags As DWord, _ lpThreadId As DWordPtr) As HANDLEDeclare Sub _endthreadex CDECL Lib "msvcrt" (exitcode As DWord)Declare Function getchar CDECL Lib "msvcrt" () As LongFunction sureddo(arg As *DWord)Print "sureddo"_endthreadex(55555)End FunctionDim handoru As DWord, co As DWordhandoru = _beginthreadex(ByVal 0, 0, AddressOf(sureddo), 0, 0, 0)'CreateThreadと引数は同じ。WaitForSingleObject(handoru, 3333)GetExitCodeThread(handoru, co)CloseHandle(handoru)Print "スレッドの終了コードは";co;"であります"Print "キーイン待ち"getchar() クリティカルセクション クリテカルセクションは、複数のスレッドがひとつのデータを扱うときに向いた同期の方法。 クリティカルセクションは一人しか入れない部屋のようなもので、 誰かがそこに入るとあとから来たものはそいつが出るまで待機しないといけない。 要は無理やりFIFOな環境を作るわけ。 このコードはファイルにSinとCosの値を0°から90°まで書くだけなんだけど マルチスッドレでやっているから(しかも文字列バッファも共有!)どうなるか全く予想できない。 5行目の#define DOUKIをコメントすることで同期を使わない。 Declare Function WaitForMultipleObjects Lib"kernel32"(c As Word, pobj As *HANDLE, waitall As Long, ms As DWord) As DWordDeclare Function sprintf CDECL Lib"msvcrt"(buf As *Byte, fmt As *Byte, ...) As DWord#N88BASIC#define DOUKIDim 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))WaitForMultipleObjects(2, hT, TRUE, INFINITE)CloseHandle(hT[0])CloseHandle(hT[1])CloseHandle(hF)DeleteCriticalSection(cs)Print "スレッドは正しく終了しました"'スレッド関数その1Function sint(a As DWordPtr) As LongDim n As DWord#ifdef DOUKIEnterCriticalSection(cs)#endifFor n=0 To 90sprintf(mes, Ex"sin%2d = %6.4f\r\n", n, Sin(ToRad(n)))WriteFile(hF, mes, lstrlen(mes), VarPtr(w), ByVal 0)Next#ifdef DOUKILeaveCriticalSection(cs)#endifExitThread(TRUE)End Function'スレッド関数その2Function cost(a As DWordPtr) As LongDim n As DWord#ifdef DOUKIEnterCriticalSection(cs)#endifFor n=0 To 90sprintf(mes, Ex"cos%2d = %6.4f\r\n", n, Cos(ToRad(n)))WriteFile(hF, mes, lstrlen(mes), VarPtr(w), ByVal 0)Next#ifdef DOUKILeaveCriticalSection(cs)#endifExitThread(TRUE)End Function'ラジアン変換Function ToRad(d As Double) As DoubleToRad = d * 3.1416 /180.000End Function セマフォ セマフォは同時に動くスレッドの上限を決めることができる。 わかりやすく言えばダウンローダーの同時接続数の制限ができるってこと。 最初にCreateSemaphore関数で初期カウントと最大カウントを決定。 ReleaseSemaphore関数でカウンタを増やす。 WaitForなんとか関数でカウンタが減る。 カウンタが0以上ならシグナル状態で0なら非シグナル状態になる。 Declare Function WaitForMultipleObjects Lib"kernel32"(c As Word, pobj As *HANDLE, waitall As Long, ms As DWord) As DWordDeclare Function CreateSemaphore Lib"kernel32" Alias "CreateSemaphoreA" (sa As VoidPtr, iv As Long, mv As Long, na As *Byte) As HANDLEDeclare Function ReleaseSemaphore Lib"kernel32" (hs As HANDLE, dec As Long, p As *DWord) As HANDLE#N88BASICConst MAXTHREAD = ELM(10)Dim hT[MAXTHREAD] As HANDLEDim hS As HANDLEDim id As DWordDim i As LongDim count As QWordDim cs As CRITICAL_SECTIONInitializeCriticalSection(cs)hS = CreateSemaphore(0, 3,3,"平井公彦")For i=0 To MAXTHREADhT[i] = CreateThread(ByVal 0, 0, AddressOf(test), i, 0, Varptr(id))NextWaitForMultipleObjects(MAXTHREAD+1, hT, TRUE, INFINITE)For i=0 To MAXTHREADCloseHandle(hT[i])NextDeleteCriticalSection(cs)Print "スレッドは正しく終了しました"'スレッド関数Function test(id As *DWord) As DWordDim ipv6 As DWordWaitForSingleObject(hS ,INFINITE)EnterCriticalSection(cs)ipv6=idcount++Print "スレッド[";ipv6;"]開始",countLeaveCriticalSection(cs)Sleep(2580)EnterCriticalSection(cs)count--Print "スレッド[";ipv6;"]終了",countLeaveCriticalSection(cs)ReleaseSemaphore(hS,1, NULL) End Function イベント
https://w.atwiki.jp/nicorap_lyric/pages/738.html
投稿作品 TACTIVE/Break Fast Club feat.文鳥,野崎りこん,おちやめ,ちょろ,アーバン或るPecori
https://w.atwiki.jp/lookworld/pages/31.html
① インストールファイル(SpreadNET2Web_20050630.EXE)をダブルクリックしてから、インストールを行う。 ② Visual Studio .NET 2003にてVisual C#プロジェクトの「ASP.NET Webアプリケーション」を開く。 ③ 「ソリューションエクスプローラ - プロジェクト名 - 参照設定」にて右クリック→「参照の追加」を選択。 ④ 「.Net」タプを選択して、リストに表示された"FarPoint CalcEngine","FarPoint Excel Assembly","FarPoint Spread for Web Forms"三つのDLLを追加する。 ● Spreadシートのツールバー使用 Spreadにカーソルを合わせて、右クリック→「Spread デザイナ」を選択して、「スプレッド」の「コマンドバー」の「Visible」に“true”または“false”を設定することより、スプレッドのツールバーを表示・非表示にする。 コード記入例: FpSpread1.CommandBar.Visible = true; //ツールバーを表示する FpSpread1.CommandBar.Visible = false; //ツールバーを非表示する ● セルタイプの設定 Spreadにカーソルを合わせて、「Spread デザイナ」を選択して、「セル」の「CellType」を設定すると、チェックボックス、コンボボックスに変更ができる。 コード記入例: FarPoint.Web.Spread.CheckBoxCellType cktype = new FarPoint.Web.Spread.CheckBoxCellType(); FpSpread1.Sheets[0].Cells[0, 0].CellType = cktype; //第一行第一列にチェックボックス型を設定 FpSpread1.Sheets[0].Columns[0].CellType = cktype; //第一列にチェックボックス型を設定 ● Spreadシートへのデータ表示 スプレッド名.Sheets[0](複数のシートがある場合、”0”をインデックスに変更する。).SetValue(行番号,列番号,設定値); 或いは スプレッド名.ActiveSheetView.SetValue(行番号,列番号,設定値); コード記入例: FpSpread1.Sheets[0].SetValue(0, 0, "123456"); //第一行第一列に123456を設定する FpSpread1.ActiveSheetView.SetValue(0, 0, "123456"); //第一行第一列に123456を設定する
https://w.atwiki.jp/abwiki/pages/177.html
正接(タンジェント)の級数展開など種々の展開式の係数となる重要な数。 #N88BASIC'最大公約数(the greatest common divisor)を求める関数Function gcd(x As Double, y As Double) As DoubleDim t As DoubleWhile y 0t = fmod(x, y)x = yy = tWendgcd = xEnd Function'浮動小数点剰余を求めるFunction fmod(x As Double, y As Double) As DoubleDim i As DWordIf y = 0 Thenfmod = 0Exit FunctionEnd Ifi = Int(x / y)fmod = x - i * yEnd Function'計算機イプシロン(1 + eps =1 を満たさない最小の正の値)Const SGL_EPSILON = 2.2204460492503e-16Const DBL_EPSILON = 2.2204460492503e-16Const N = 40Dim i As IntegerDim n As IntegerDim q As DoubleDim b1 As DoubleDim b2 As DoubleDim d As DoubleDim t[N + 1] As Doubleq = 1t[1] = 1For n = 2 To NFor i = 1 To n - 1t[i - 1] = i * t[i]Next it[n - 1] = 0For i = n To 2 Step -1t[i] = t[i] + t[i - 2]Next iIf (n mod 2) = 0 Thenq = q * 4b1 = n * t[0]b2 = q * (q - 1)If (b1 1 / DBL_EPSILON) And (b2 1 / DBL_EPSILON) Thend = gcd(b1, b2)b1 = b1 / db2 = b2 / dPrint "| B("; n; " | ="; b1; "/"; b2ElsePrint "| B("; n; " | ="; b1 / b2End IfEnd IfNext n