【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net (430レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
187(2): デフォルトの名無しさん [] 2017/09/30(土) 06:57:11.47 ID:0ZNFHa8Z(1/3) AAS
360互換機を使っていたころ、コマンド行の解釈は専用の内部タスクがあった。
表に出ることはないタスクなので、名称は覚えていない。システムを示す、コマンドの表題の末尾に「$」が記載されていたことを覚えている。
>>186186(7): デフォルトの名無しさん [] 2017/09/27(水) 19:31:08.07 ID:dFhB3tDJ(1) AAS
外部リンク[html]:www.hi-ho.ne.jp
「新規プロジェクト」内「テンプレート」に関する情報
Addin の場合
作成された *.Bas ファイルに
「#include "..\..\Inc\Addins.bi"」行がある。これは、
C:\FbEdit\Inc\Addins.bi
を示すらしい(ディスク内にこのファイル以外の同名のファイルが存在しない)。
D:\bas\Projects\ExeType1\ExeType1.bas
なんて別ドライブにて作業している場合には、
「C:\FbEdit\Inc\*.*」を「D:\bas\Inc\*.*」にコピーする必要がある。
作成された *.Bas ファイルに関して、「#include once "windows.bi"」行の後に
「#Include Once "win/commctrl.bi"」を書き加える必要がある。
これで、内容を修正していない状態でのコンパイルは通る。
Console の場合。
そのままでコンパイルは通るが、マルチモジュールにと複数のファイルを登録したら *.O がないとしてコンパイルできなかった。
Tabstrip の場合。
「declare function DlgProc(byval hWnd as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam as LPARAM) as integer」行が
コンパイルエラーで動かない。Declare文に合わせるか Function文に合わせるか、で後者を選択した。
つまり、前述Declear文をコメント行に変更して、
「declare Function DlgProc(byval hDlg as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam as LPARAM) as bool」文を追加した。
MS用語で、コールバック関数、以前使っていた用語では、ユーザー定義ルーチン、なので、
参照側、システム(スーパーバイザー)の定義がどうなっているのかをみないと、正確な内容はわからない。
現在チルドレン(GW?QB?用語)で参照ルーチンを作成できないか、あるいは、DLLファイル化するか、で迷っているところ。
多分、「ユーザー側(プログラム)で、連続した領域を要求したにもかかわらず、システムが確保できなくて、無理に実行して、ハングした」と思われる障害で苦しんでます。
2chスレ:tech
に書いた通り、領域の確保ができない場合に、分割する必要がある。
「自分で考えるよりも、誰かがやった歴史通りにまねをできるように」と学ぶのが、義務教育の社会科の中の一分野「歴史」。
分割するのに、360の歴史に従って、コマンドラインの解釈を分割することにした。
FBのコマンドラインに準じて、Fun SwitchFileRead2()系統を作成した(前スレ参照)が、これらは全部廃棄。
360に準じて作成し、今回QBに移植したFun SwitchFileRead()系統を復活させた。
前者はコマンドラインを順次解釈しているに対して、後者は前置詞・語・後置詞、修飾語の区切りが規定されているので、汎用化しやすい。
前者は、とうしてもスイッチの解釈が各ユーザー(プログラム)専用になってしまう。
後者は汎用性があるので、無意味なスイッチでも通過してしまうという欠点を持つが、主プログラムで使わないスイッチを読み飛ばしてしまうことで対応可能。
別タスクにして、チルドレン(GW(QBの前のバージョン)用語)で芋づる起動することを前提の Shell 命令
外部リンク[html]:makoto-watanabe.main.jp
を使うことになる。タスク間の連絡を何にするか、迷ったところで、ハンチ等システムを復活させることにした。
188: デフォルトの名無しさん [] 2017/09/30(土) 07:13:23.29 ID:0ZNFHa8Z(2/3) AAS
ハンチ等システム、内部構造は、TARファイルやISHファイルに類似したもので、
Unpack(語句の後ろに未使用の領域がある)データファイル、固定長文字列を単位としたランダムファイルとほぼみなせる。
それで、RANDOMファイルをつらつら眺めるに
外部リンク[html]:makoto-watanabe.main.jp
'C:\tool\FreeBASIC\examples\files\random.bas
'C:\tool\FreeBASIC\examples\files\records.bas
セクターの定義が Type命令を使うように替わった。TYPE命令で文字列を定義すると、文字列の区切りにヌル文字(&H00)が挿入される。
QBでは、セクター番号を示すらしい2バイトが挿入された。
ということで、末尾に &h0D, &h0Aを挿入して、テキストエディターで直接編集する、パンチカード等にふさわしい手法が使えない。
かといって、Binaryでやったらば、分量が増えて分割した意味がなくなってしまう、Taka01J..Bas は50KB程度しかないファイルだから。
バイナリエディタ、Stirling.exeで見やすくするために、16バイトの倍数に分割して、先頭と末尾に記号を置いて、、等の作業を始めた。
189: デフォルトの名無しさん [] 2017/09/30(土) 07:25:12.70 ID:0ZNFHa8Z(3/3) AAS
>>186 の後に色々書いたらば、拒否されたので、用語だけ。
エディターボックスの内容が変わったことを示すルーチン
Case EN_CHANGE
'内容が変わる直前
Case EN_UPDATE
'内容が変わった直後
Select Case LoWord(wParam)
Case IDC_EDT1
GetDlgItemText(hWin, IDC_EDT1, @buff, SizeOf(buff))
Buff = "変更 :" + Buff
SetDlgItemText(hWin, IDC_STC2, @Buff)
End Select
Case EN_MAXTEXT
'挿入時にスペースを使い切った。
End Select
Case WM_SIZE
と、Case WM_SIZE の並びに挿入する。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.438s*