■バイナリファイル

「■バイナリファイル」の編集履歴(バックアップ)一覧はこちら

■バイナリファイル」(2009/05/31 (日) 17:26:38) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*情報 作者名:五十六 引用元:なし *概要 ファイルストリームをもっと気軽に扱えるように。 具体的にはストリーム開く、閉じるの自動化。あとモードの自動変更、ファイルストリーム削除を無理やり実装など。 母艦の閉じた時は~を使ってるから複数あると誤作動するかも・・・ 参考 ファイルの分割ツールを作ってみよう!(第75回):クジラ飛行机「文系サラリーマンのための仕事に役立つプログラミング入門」 http://pc.nikkeibp.co.jp/article/column/20080522/1003240/?P=2 *解説 [読書メンバ] ・ファイル ・現在位置 ・次位置 ・バッファサイズ ・ファイルサイズ [命令メンバ] ※↓4つのA(開始バイト位置)は0起点 ・ストリーム読む(AからCNTを) ・ストリーム書く(AからBを|AにBを) ・ストリーム挿入書く(AからBを|AにBを) ・ストリーム削除(AからCNTを) ・ストリーム同位置読む(CNTを) ・ストリーム同位置書く(Aを) ・ストリーム同位置挿入書く(Aを) ・ストリーム続き読む(CNTを) ・ストリーム続き書く(Aを) ・ストリーム続き挿入書く(Aを) ・ストリーム右端読む(CNTを) ・ストリーム右端書く(Aを) ・ストリーム右端削除(CNTを) ・ストリーム初期化 ・ストリームファイル削除 ・ストリームファイル完全削除 ↑説明省略 ノリで ●バイナリアドレス変換   「00000040x0A」とか「0000004A」とかを10進数に直す。  バイナリエディタ風。 *本体 #----------------------------------------------------------------------- #----------------------------------------------------------------------- #----------------------------------------------------------------------- 母艦の閉じた時は~   バイナリ終了時実行処理。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- ■バイナリファイル  ・現在位置{=0}  ・次位置{=0}  ・バッファサイズ{=524288}/*512KB*/  ・{非公開}元ファイル名  ・{非公開}一時ファイル名  ・{非公開}保持バイト数  ・{非公開}経過バイト数  ・{非公開}FILE  ・ファイル存在  ・モード  ・ハンドル  ・ファイルサイズ  ・ファイル ←ファイル設定 →ファイル取得  ・ファイル設定(Vに|Vを)~    自身→FILE=V。    自身→現在位置=0。//リセットされます    自身→次位置=0。    もし、Vの存在=はいならば      自身→ファイル存在=はい。      自身→モード=「読」。自身→ハンドル=Vを「読」でファイルストリーム開く。      自身→ファイルサイズ=(自身→ハンドル)のファイルストリームサイズ。      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。    違えば      自身→ハンドル=空。自身→ファイル存在=いいえ。      自身→ファイルサイズ=空。自身→モード=空。  ・ファイル取得(Vを)~それ=V。  ・ストリーム初期化~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    自身→モード=「作」。自身→ハンドル=(自身→FILE)を「作」でファイルストリーム開く。    自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。    自身→ファイルサイズ=0。自身→ファイル存在=はい。自身→現在位置=0。自身→次位置=0。      ・ストリーム読む(AからCNTを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。    もし、(自身→モード=「書」)または(自身→モード=「作」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          もし、自身→ハンドル=空ならば      自身→モード=「読」。自身→ハンドル=(自身→FILE)を「読」でファイルストリーム開く。        自身→モード=「読」。    自身→現在位置=A。自身→次位置=A+CNT。    (自身→ハンドル)で(自身→現在位置)にファイルストリーム位置設定。    (自身→ハンドル)でCNTをファイルストリーム読む。    それで戻る。  ・ストリーム書く(AからBを|AにBを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、自身→ストリーム初期化。        もし、(自身→モード=「読」)または(自身→モード=「作」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          もし、自身→ハンドル=空ならば      自身→モード=「書」。自身→ハンドル=(自身→FILE)を「書」でファイルストリーム開く。        自身→モード=「書」。    自身→現在位置=A。自身→次位置=A+(Bのバイト数)。    (自身→ハンドル)で(自身→現在位置)にファイルストリーム位置設定。    (自身→ハンドル)でBをファイルストリーム書く。    自身→ファイルサイズ=(自身→ハンドル)のファイルストリームサイズ。    「1」で戻る。      ・ストリーム削除(AからCNTを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。        もし、(自身→モード=「読」)または(自身→モード=「書」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          自身→元ファイル名=自身→FILE。    自身→一時ファイル名=((自身→元ファイル名)からパス抽出)で((自身→元ファイル名)からファイル名抽出)のユニークファイル名生成。        (自身→元ファイル名)から(自身→一時ファイル名)へファイル名変更。    自身→保持バイト数=A。        H1=(自身→一時ファイル名)を「読」でファイルストリーム開く。    H2=(自身→元ファイル名)を「書」でファイルストリーム開く。        H1で0にファイルストリーム位置設定。    H2で0にファイルストリーム位置設定。        CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。        Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。          自身→保持バイト数=(自身→ファイルサイズ)-CNT-A。    H1で(A+CNT)にファイルストリーム位置設定。        CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。        Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。          H1をファイルストリーム閉じる。    H2をファイルストリーム閉じる。        (自身→一時ファイル名)をファイル完全削除。        自身→ファイル=自身→元ファイル名。    自身→現在位置=A。    自身→次位置=A。     ・ストリーム挿入書く(AからBを|AにBを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、自身→ストリーム初期化。    もし、(自身→モード=「読」)または(自身→モード=「書」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          自身→元ファイル名=自身→FILE。    自身→一時ファイル名=((自身→元ファイル名)からパス抽出)で((自身→元ファイル名)からファイル名抽出)のユニークファイル名生成。        (自身→元ファイル名)から(自身→一時ファイル名)へファイル名変更。    自身→保持バイト数=A。        H1=(自身→一時ファイル名)を「読」でファイルストリーム開く。    H2=(自身→元ファイル名)を「書」でファイルストリーム開く。        H1で0にファイルストリーム位置設定。    H2で0にファイルストリーム位置設定。        CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。        Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。        //挿入    H2でBをファイルストリーム書く。        自身→保持バイト数=(自身→ファイルサイズ)-A。    CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。       Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。        H1をファイルストリーム閉じる。    H2をファイルストリーム閉じる。        (自身→一時ファイル名)をファイル完全削除。        自身→ファイル=自身→元ファイル名。    自身→現在位置=A。    自身→次位置=A+(Bのバイト数)。      ・ストリーム同位置読む(CNTを)~    自身→ストリーム読む((自身→現在位置)から(CNT)を)。  ・ストリーム同位置書く(Aを)~    自身→ストリーム書く((自身→現在位置)から(A)を)。  ・ストリーム同位置挿入書く(Aを)~    自身→ストリーム挿入書く((自身→現在位置)から(A)を)。  ・ストリーム続き読む(CNTを)~    自身→ストリーム読む((自身→次位置)から(CNT)を)。  ・ストリーム続き書く(Aを)~    自身→ストリーム書く((自身→次位置)から(A)を)。  ・ストリーム続き挿入書く(Aを)~    自身→ストリーム挿入書く((自身→次位置)から(A)を)。  ・ストリーム右端読む(CNTを)~    自身→ストリーム読む(((自身→ファイルサイズ)-CNT)からCNTを)。  ・ストリーム右端書く(Aを)~    自身→ストリーム書く((自身→ファイルサイズ)から(A)を)。  ・ストリーム右端削除(CNTを)~    自身→ストリーム削除(((自身→ファイルサイズ)-CNT)からCNTを)。      ・ストリーム閉じる~    もし、自身→ハンドル≠空ならば、(自身→ハンドル)をファイルストリーム閉じる。    自身→FILE=空。自身→ファイルサイズ=空。自身→モード=空。自身→現在位置=0。自身→次位置=0。    自身→ファイル存在=いいえ。自身→ハンドル=空。  ・ストリームファイル削除~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。    もし、自身→ハンドル≠空ならば、(自身→ハンドル)をファイルストリーム閉じる。    (自身→FILE)をファイル削除。      ・ストリームファイル完全削除~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。    もし、自身→ハンドル≠空ならば、(自身→ハンドル)をファイルストリーム閉じる。    (自身→FILE)をファイル完全削除。      ・作る~    バイナリ終了時実行処理内容に「{名前}のストリーム閉じる。」を配列追加。 バイナリ終了時実行処理内容=空。 ●バイナリ終了時実行処理   バイナリ終了時実行処理内容をナデシコする。    ●バイナリアドレス変換(Sを|Sの)   もし、Sの1から「x」を文字検索>0ならば     S=Sを「x」で区切る。S[0]から1バイト右端削除。S[1]の1から1バイト削除。S=S[0]&S[1]。   Sを16で十進数して戻る。 #----------------------------------------------------------------------- !進数英語リスト=「ABCDEFGHIJKLMNOPQRSTUVWXYZ」を文字列分解。 !進数数値リスト=「10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35」を「,」で区切る。 ●十進数(SをVで)   合計値とは数値。S=Sを文字列分解して配列逆順。   進数英語リストで反復、S=Sの対象を進数数値リスト[回数-1]に単置換。   Sで反復、合計値=合計値+(対象×(V^(回数-1)))。   合計値で戻る。    ●進数(SをV|SのV|SでV)   結果配列とは配列。   1の間     もし、S<Vならば       進数数値リストで反復、S=Sの対象を進数英語リスト[回数-1]に単置換。           結果配列にSを配列追加。抜ける。     C=S%V。進数数値リストで反復、C=Cの対象を進数英語リスト[回数-1]に単置換。     結果配列にCを配列追加。S=(S/V)の整数部分。   結果配列を配列逆順して空で配列結合して戻る。    ●進数変換(SをAからBに)   S=SをAで十進数。Sの(B)進数で戻る。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- #----------------------------------------------------------------------- *//サンプルプログラム テストとはバイナリファイル。 テストのファイル=ファイル選択。 テストのファイルサイズを言う。 テストの74から10/*バイト*/をストリーム読む。 それをバイナリダンプして言う。 テストの(「00000040x0A」をバイナリアドレス変換)から10をストリーム読む。 それをバイナリダンプして言う。 テストの(「0000004A」をバイナリアドレス変換)から10をストリーム読む。 それをバイナリダンプして言う。 テストの10をストリーム同位置読む。 それをバイナリダンプして言う。 ●ストリームファイルコピー(BAFAでSからVへ|BAFAでSからVに)   もし、S=空ならば、「0」で戻る。   もし、V=空ならば、「0」で戻る。   AAストリをバイナリファイルとして作成。AAストリ→ファイル=S。   BBストリをバイナリファイルとして作成。BBストリ→ファイル=V。   AAストリ→バッファサイズ=BAFA。   BBストリ→ストリーム初期化。      CNT2=INT((AAストリ→ファイルサイズ)÷(AAストリ→バッファサイズ))。   もし、((AAストリ→ファイルサイズ)%(AAストリ→バッファサイズ))<>0ならば、CNT2=CNT2+1。      Jを0からCNT2まで繰り返す     SZ=(AAストリ→バッファサイズ)。     NEXT=(J+1)*(AAストリ→バッファサイズ)。     もし、NEXT>(AAストリ→ファイルサイズ)ならば、SZ=(AAストリ→ファイルサイズ)-J*(AAストリ→バッファサイズ)     S=AAストリ→ストリーム続き読む(SZを)。     BBストリ→ストリーム続き書く(Sを)。      AAストリ→ストリーム閉じる。BBストリ→ストリーム閉じる。   「1」で戻る。 ---- - グループのメンバ関数内でメンバ変数を扱う場合、「自身→」は不要です。 -- SWinX (2009-01-05 12:12:37) - な、なんだってー!Ω -- 管理人 (2009-01-07 00:18:15) #comment() ----
*情報 作者名:五十六 引用元:なし *概要 ファイルストリームをもっと気軽に扱えるように。 具体的にはストリーム開く、閉じるの自動化。あとモードの自動変更、ファイルストリーム削除を無理やり実装など。 母艦の閉じた時は~を使ってるから複数あると誤作動するかも・・・ 参考 ファイルの分割ツールを作ってみよう!(第75回):クジラ飛行机「文系サラリーマンのための仕事に役立つプログラミング入門」 http://pc.nikkeibp.co.jp/article/column/20080522/1003240/?P=2 *解説 [読書メンバ] ・ファイル ・現在位置 ・次位置 ・バッファサイズ ・ファイルサイズ [命令メンバ] ※↓4つのA(開始バイト位置)は0起点 ・ストリーム読む(AからCNTを) ・ストリーム書く(AからBを|AにBを) ・ストリーム挿入書く(AからBを|AにBを) ・ストリーム削除(AからCNTを) ・ストリーム同位置読む(CNTを) ・ストリーム同位置書く(Aを) ・ストリーム同位置挿入書く(Aを) ・ストリーム続き読む(CNTを) ・ストリーム続き書く(Aを) ・ストリーム続き挿入書く(Aを) ・ストリーム右端読む(CNTを) ・ストリーム右端書く(Aを) ・ストリーム右端削除(CNTを) ・ストリーム初期化 ・ストリームファイル削除 ・ストリームファイル完全削除 ↑説明省略 ノリで ●バイナリアドレス変換   「00000040x0A」とか「0000004A」とかを10進数に直す。  バイナリエディタ風。 *本体 #----------------------------------------------------------------------- #----------------------------------------------------------------------- #----------------------------------------------------------------------- 母艦の閉じた時は~   バイナリ終了時実行処理。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- ■バイナリファイル  ・現在位置{=0}  ・次位置{=0}  ・バッファサイズ{=524288}/*512KB*/  ・{非公開}元ファイル名  ・{非公開}一時ファイル名  ・{非公開}保持バイト数  ・{非公開}経過バイト数  ・{非公開}FILE  ・ファイル存在  ・モード  ・ハンドル  ・ファイルサイズ  ・ファイル ←ファイル設定 →ファイル取得  ・ファイル設定(Vに|Vを)~    自身→FILE=V。    自身→現在位置=0。//リセットされます    自身→次位置=0。    もし、Vの存在=はいならば      自身→ファイル存在=はい。      自身→モード=「読」。自身→ハンドル=Vを「読」でファイルストリーム開く。      自身→ファイルサイズ=(自身→ハンドル)のファイルストリームサイズ。      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。    違えば      自身→ハンドル=空。自身→ファイル存在=いいえ。      自身→ファイルサイズ=空。自身→モード=空。  ・ファイル取得(Vを)~それ=V。  ・ストリーム初期化~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    自身→モード=「作」。自身→ハンドル=(自身→FILE)を「作」でファイルストリーム開く。    自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。    自身→ファイルサイズ=0。自身→ファイル存在=はい。自身→現在位置=0。自身→次位置=0。      ・ストリーム読む(AからCNTを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。    もし、(自身→モード=「書」)または(自身→モード=「作」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          もし、自身→ハンドル=空ならば      自身→モード=「読」。自身→ハンドル=(自身→FILE)を「読」でファイルストリーム開く。        自身→モード=「読」。    自身→現在位置=A。自身→次位置=A+CNT。    (自身→ハンドル)で(自身→現在位置)にファイルストリーム位置設定。    (自身→ハンドル)でCNTをファイルストリーム読む。    それで戻る。  ・ストリーム書く(AからBを|AにBを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、自身→ストリーム初期化。        もし、(自身→モード=「読」)または(自身→モード=「作」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          もし、自身→ハンドル=空ならば      自身→モード=「書」。自身→ハンドル=(自身→FILE)を「書」でファイルストリーム開く。        自身→モード=「書」。    自身→現在位置=A。自身→次位置=A+(Bのバイト数)。    (自身→ハンドル)で(自身→現在位置)にファイルストリーム位置設定。    (自身→ハンドル)でBをファイルストリーム書く。    自身→ファイルサイズ=(自身→ハンドル)のファイルストリームサイズ。    「1」で戻る。      ・ストリーム削除(AからCNTを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。        もし、(自身→モード=「読」)または(自身→モード=「書」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          自身→元ファイル名=自身→FILE。    自身→一時ファイル名=((自身→元ファイル名)からパス抽出)で((自身→元ファイル名)からファイル名抽出)のユニークファイル名生成。        (自身→元ファイル名)から(自身→一時ファイル名)へファイル名変更。    自身→保持バイト数=A。        H1=(自身→一時ファイル名)を「読」でファイルストリーム開く。    H2=(自身→元ファイル名)を「書」でファイルストリーム開く。        H1で0にファイルストリーム位置設定。    H2で0にファイルストリーム位置設定。        CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。        Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。          自身→保持バイト数=(自身→ファイルサイズ)-CNT-A。    H1で(A+CNT)にファイルストリーム位置設定。        CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。        Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。          H1をファイルストリーム閉じる。    H2をファイルストリーム閉じる。        (自身→一時ファイル名)をファイル完全削除。        自身→ファイル=自身→元ファイル名。    自身→現在位置=A。    自身→次位置=A。     ・ストリーム挿入書く(AからBを|AにBを)~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、自身→ストリーム初期化。    もし、(自身→モード=「読」)または(自身→モード=「書」)ならば      自身→モード=空。(自身→ハンドル)をファイルストリーム閉じる。自身→ハンドル=空。          自身→元ファイル名=自身→FILE。    自身→一時ファイル名=((自身→元ファイル名)からパス抽出)で((自身→元ファイル名)からファイル名抽出)のユニークファイル名生成。        (自身→元ファイル名)から(自身→一時ファイル名)へファイル名変更。    自身→保持バイト数=A。        H1=(自身→一時ファイル名)を「読」でファイルストリーム開く。    H2=(自身→元ファイル名)を「書」でファイルストリーム開く。        H1で0にファイルストリーム位置設定。    H2で0にファイルストリーム位置設定。        CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。        Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。        //挿入    H2でBをファイルストリーム書く。        自身→保持バイト数=(自身→ファイルサイズ)-A。    CNT2 =INT((自身→保持バイト数)÷(自身→バッファサイズ))。    もし、((自身→保持バイト数)%(自身→バッファサイズ))<>0ならば、CNT2=CNT2+1。       Jを0からCNT2まで繰り返す      SZ=(自身→バッファサイズ)。      NEXT=(J+1)*(自身→バッファサイズ)      もし、NEXT>(自身→保持バイト数)ならば、SZ=(自身→保持バイト数)-J*(自身→バッファサイズ)      S=H1でSZをファイルストリーム読む。      H2でSをファイルストリーム書く。        H1をファイルストリーム閉じる。    H2をファイルストリーム閉じる。        (自身→一時ファイル名)をファイル完全削除。        自身→ファイル=自身→元ファイル名。    自身→現在位置=A。    自身→次位置=A+(Bのバイト数)。      ・ストリーム同位置読む(CNTを)~    自身→ストリーム読む((自身→現在位置)から(CNT)を)。  ・ストリーム同位置書く(Aを)~    自身→ストリーム書く((自身→現在位置)から(A)を)。  ・ストリーム同位置挿入書く(Aを)~    自身→ストリーム挿入書く((自身→現在位置)から(A)を)。  ・ストリーム続き読む(CNTを)~    自身→ストリーム読む((自身→次位置)から(CNT)を)。  ・ストリーム続き書く(Aを)~    自身→ストリーム書く((自身→次位置)から(A)を)。  ・ストリーム続き挿入書く(Aを)~    自身→ストリーム挿入書く((自身→次位置)から(A)を)。  ・ストリーム右端読む(CNTを)~    自身→ストリーム読む(((自身→ファイルサイズ)-CNT)からCNTを)。  ・ストリーム右端書く(Aを)~    自身→ストリーム書く((自身→ファイルサイズ)から(A)を)。  ・ストリーム右端削除(CNTを)~    自身→ストリーム削除(((自身→ファイルサイズ)-CNT)からCNTを)。      ・ストリーム閉じる~    もし、自身→ハンドル≠空ならば、(自身→ハンドル)をファイルストリーム閉じる。    自身→FILE=空。自身→ファイルサイズ=空。自身→モード=空。自身→現在位置=0。自身→次位置=0。    自身→ファイル存在=いいえ。自身→ハンドル=空。  ・ストリームファイル削除~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。    もし、自身→ハンドル≠空ならば、(自身→ハンドル)をファイルストリーム閉じる。    (自身→FILE)をファイル削除。      ・ストリームファイル完全削除~    もし、自身→FILE=空ならば、「ファイルが指定されていません」で戻る。    もし、(自身→ファイル存在)=いいえならば、「ファイルがありません」で戻る。    もし、自身→ハンドル≠空ならば、(自身→ハンドル)をファイルストリーム閉じる。    (自身→FILE)をファイル完全削除。      ・作る~    バイナリ終了時実行処理内容に「{名前}のストリーム閉じる。」を配列追加。 バイナリ終了時実行処理内容=空。 ●バイナリ終了時実行処理   バイナリ終了時実行処理内容をナデシコする。    ●バイナリアドレス変換(Sを|Sの)   もし、Sの1から「x」を文字検索>0ならば     S=Sを「x」で区切る。S[0]から1バイト右端削除。S[1]の1から1バイト削除。S=S[0]&S[1]。   Sを16で十進数して戻る。 #----------------------------------------------------------------------- !進数英語リスト=「ABCDEFGHIJKLMNOPQRSTUVWXYZ」を文字列分解。 !進数数値リスト=「10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35」を「,」で区切る。 ●十進数(SをVで)   合計値とは数値。S=Sを文字列分解して配列逆順。   進数英語リストで反復、S=Sの対象を進数数値リスト[回数-1]に単置換。   Sで反復、合計値=合計値+(対象×(V^(回数-1)))。   合計値で戻る。    ●進数(SをV|SのV|SでV)   結果配列とは配列。   1の間     もし、S<Vならば       進数数値リストで反復、S=Sの対象を進数英語リスト[回数-1]に単置換。           結果配列にSを配列追加。抜ける。     C=S%V。進数数値リストで反復、C=Cの対象を進数英語リスト[回数-1]に単置換。     結果配列にCを配列追加。S=(S/V)の整数部分。   結果配列を配列逆順して空で配列結合して戻る。    ●進数変換(SをAからBに)   S=SをAで十進数。Sの(B)進数で戻る。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- #----------------------------------------------------------------------- *//サンプルプログラム テストとはバイナリファイル。 テストのファイル=ファイル選択。 テストのファイルサイズを言う。 テストの74から10/*バイト*/をストリーム読む。 それをバイナリダンプして言う。 テストの(「00000040x0A」をバイナリアドレス変換)から10をストリーム読む。 それをバイナリダンプして言う。 テストの(「0000004A」をバイナリアドレス変換)から10をストリーム読む。 それをバイナリダンプして言う。 テストの10をストリーム同位置読む。 それをバイナリダンプして言う。 ●ストリームファイルコピー(BAFAでSからVへ|BAFAでSからVに)   もし、S=空ならば、「0」で戻る。   もし、V=空ならば、「0」で戻る。   AAストリをバイナリファイルとして作成。AAストリ→ファイル=S。   BBストリをバイナリファイルとして作成。BBストリ→ファイル=V。   AAストリ→バッファサイズ=BAFA。   BBストリ→ストリーム初期化。      CNT2=INT((AAストリ→ファイルサイズ)÷(AAストリ→バッファサイズ))。   もし、((AAストリ→ファイルサイズ)%(AAストリ→バッファサイズ))<>0ならば、CNT2=CNT2+1。      Jを0からCNT2まで繰り返す     SZ=(AAストリ→バッファサイズ)。     NEXT=(J+1)*(AAストリ→バッファサイズ)。     もし、NEXT>(AAストリ→ファイルサイズ)ならば、SZ=(AAストリ→ファイルサイズ)-J*(AAストリ→バッファサイズ)     S=AAストリ→ストリーム続き読む(SZを)。     BBストリ→ストリーム続き書く(Sを)。      AAストリ→ストリーム閉じる。BBストリ→ストリーム閉じる。   「1」で戻る。 ---- - グループのメンバ関数内でメンバ変数を扱う場合、「自身→」は不要です。 -- SWinX (2009-01-05 12:12:37) - な、なんだってー!Ω -- 管理人 (2009-01-07 00:18:15) #comment() ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。