サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
5: 2009-01-17 (土) 12:25:04 ソース 現: 2024-01-08 (月) 12:58:42 k-tan ソース
Line 1: Line 1:
-* ぐいぐい01に関するメモ-27+TITLE:x 
 +* ぐいぐい01に関するメモ-27 [#ud59caf8]
-(by [[K]], 2009.01.13) -(by [[K]], 2009.01.13)
-メモのうち重要な部分をそのうちまとめてまともなページを作る -メモのうち重要な部分をそのうちまとめてまともなページを作る
-*** (39) GOで「ぐいぐい01」アプリを作る(5)+*** (39) GOで「ぐいぐい01」アプリを作る(5) [#t6b647e1]
-[[GUIGUI01/memo26]]の続きです。 -[[GUIGUI01/memo26]]の続きです。
---- ----
-今回の最初のプログラムは、いわゆるファイルダンプです。ファイルをオープンして、それを16進数でだだーっと書きます。ex0021.cです。 -今回の最初のプログラムは、いわゆるファイルダンプです。ファイルをオープンして、それを16進数でだだーっと書きます。ex0021.cです。
 #include <guigui01.h>  #include <guigui01.h>
 + 
 unsigned char cmdusage[] = {  unsigned char cmdusage[] = {
     0x86, 0x50,      0x86, 0x50,
Line 13: Line 14:
     0x40      0x40
 };  };
 + 
 void sethex(char *s, int i, int n)  void sethex(char *s, int i, int n)
 {  {
Line 26: Line 27:
     return;      return;
 }  }
 + 
 void G01Main()  void G01Main()
 {  {
Line 68: Line 69:
 >efg01 ex0021.g01  >efg01 ex0021.g01
 usage>ex0021.g01 [in:]input-file  usage>ex0021.g01 [in:]input-file
 + 
 >efg01 ex0021.g01 make.bat  >efg01 ex0021.g01 make.bat
  offset  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF   offset  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  0123456789ABCDEF
Line 82: Line 83:
|0x3c|文字列型引数| |0x3c|文字列型引数|
-関数sethex()はsetdecを16進数用に改造しただけのものです。 -関数sethex()はsetdecを16進数用に改造しただけのものです。
--それでG01Main()の g01_getcmdlin_fopen_s_0_4(0); で、引数番号0に書かれたファイルをリードモードでオープンさせ、スロット番号4に割り当てています。これは本来は、 g01_getcmdlin_fopen_s(0, 4, 0); と書くべきところなのです。しかしこの関数をguigui01.hに書いておくのをすっかり忘れていました。それで、 g01_getcmdlin_fopen_s_0_4() というのは、スロット番号4にリードモードでオープンするのがあまりよくあるケースなので、関数の引数で指定しなくてもいいことにしたいわば省略形です。+-それでG01Main()の g01_getcmdlin_fopen_s_0_4(0); で、引数番号0に書かれたファイルをリードモードでオープンさせ、スロット番号4に割り当てています。これは本来は、 g01_getcmdlin_fopen_s(0, 4, 0); と書くべきところなのです。しかしこの関数をguigui01.hに書いておくのをすっかり忘れていました。それで、 g01_getcmdlin_fopen_s_0_4() というのは、スロット番号4にリードモードでオープンするのがあまりによくあるケースなので、関数の引数で指定しなくてもいいことにしたいわば省略形です。
-スロット番号というのはファイルハンドルの入れ物みたいなもので、ファイルのオープンに使う場合は4番から31番のどれかを使います。しかしまあ、たいていリードは4番で、ライトは5番でやります。どうしてかというと、 g01_getcmdlin_fopen_s_0_4() などの関数を使いたいからですね(サイズが節約できます)。 -スロット番号というのはファイルハンドルの入れ物みたいなもので、ファイルのオープンに使う場合は4番から31番のどれかを使います。しかしまあ、たいていリードは4番で、ライトは5番でやります。どうしてかというと、 g01_getcmdlin_fopen_s_0_4() などの関数を使いたいからですね(サイズが節約できます)。
- j = jg01_fread1(4, 16, buf); というのは、スロット番号4のファイルから最大16バイトまで読み込んでbufにしまいます。そして読み込めたバイト数がjに入ります。これが0ならファイル終端です。 - j = jg01_fread1(4, 16, buf); というのは、スロット番号4のファイルから最大16バイトまで読み込んでbufにしまいます。そして読み込めたバイト数がjに入ります。これが0ならファイル終端です。
Line 145: Line 146:
-ASCIIのみのテキストファイルしか絶対にin:に指定しないとして、しかも常に2MB未満のサイズだと仮定して問題ないのなら、ここまで単純化できます。ex0023.cです。 -ASCIIのみのテキストファイルしか絶対にin:に指定しないとして、しかも常に2MB未満のサイズだと仮定して問題ないのなら、ここまで単純化できます。ex0023.cです。
 #include <guigui01.h>  #include <guigui01.h>
 + 
 unsigned char cmdusage[] = {  unsigned char cmdusage[] = {
     0x86, 0x50,      0x86, 0x50,
Line 151: Line 152:
     0x40      0x40
 };  };
 + 
 void G01Main()  void G01Main()
 {  {
Line 164: Line 165:
 >e ex0023  >e ex0023
 usage>ex0023 [in:]input-file  usage>ex0023 [in:]input-file
 + 
 >e ex0023 make.bat  >e ex0023 make.bat
 ..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9  ..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
 + 
 >e ex0023 Makefile  >e ex0023 Makefile
 TARGET = ex0023  TARGET = ex0023
 MODE  = g01  MODE  = g01
 OBJS  = ex0023.obj  OBJS  = ex0023.obj
 + 
 INCPATH    = ../z_tools/guigui01/  INCPATH    = ../z_tools/guigui01/
 include ../z_tools/com_mak.txt  include ../z_tools/com_mak.txt
Line 179: Line 180:
-ということで作ってみたex0024.cです。 -ということで作ってみたex0024.cです。
 #include <guigui01.h>  #include <guigui01.h>
 + 
 unsigned char cmdusage[] = {  unsigned char cmdusage[] = {
     0x86, 0x51,      0x86, 0x51,
Line 186: Line 187:
     0x40      0x40
 };  };
 + 
 void G01Main()  void G01Main()
 {  {
Line 213: Line 214:
 }  }
-これをmakeすると181バイトになります。これならちゃんと表示できます。 -これをmakeすると181バイトになります。これならちゃんと表示できます。
--このプログラムで注意しておくべきところは、bで受け取った中身を書きえているということです。旧OSASKではこのような行為はファイルの書き換えを意味していました(メモリマップトファイルだったので)。しかしjg01_fread系はファイルの内容を「メモリに読み込む」APIなので、書き換えても元のファイルの内容が変更されることはありません。変わるのはメモリの内容だけです(旧OSASKのmapmoduleはファイルにアクセスするために「メモリ空間に割り当てて」いた)。+-このプログラムで注意しておくべきところは、bで受け取った中身を書き換えているということです。旧OSASKではこのような行為はファイルの書き換えを意味していました(メモリマップトファイルだったので)。しかしjg01_fread系はファイルの内容を「メモリに読み込む」APIなので、書き換えても元のファイルの内容が変更されることはありません。変わるのはメモリの内容だけです(旧OSASKのmapmoduleはファイルにアクセスするために「メモリ空間に割り当てて」いた)。
-* こめんと欄+* こめんと欄 [#laba58b6]
- ex0022が351バイトになって我ながら感動したので、後日ASKAかnaskで全部書いてみようと思いました(註:abcdw012での話です)。半分くらいにならないかなあ? -- [[K]] &new{2009-01-13 (火) 23:51:38}; - ex0022が351バイトになって我ながら感動したので、後日ASKAかnaskで全部書いてみようと思いました(註:abcdw012での話です)。半分くらいにならないかなあ? -- [[K]] &new{2009-01-13 (火) 23:51:38};
- とりあえず200バイトを切ることは確認。 -- ''K'' &new{2009-01-14 (水) 00:53:13}; - とりあえず200バイトを切ることは確認。 -- ''K'' &new{2009-01-14 (水) 00:53:13};

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。