7: 2009-11-21 (土) 16:58:45 hideyosi[4] [5] | 現: 2024-01-08 (月) 12:58:42 k-tan[6] [7] | ||
---|---|---|---|
Line 8: | Line 8: | ||
-今回の最初のプログラムは、いわゆるファイルダンプです。ファイルをオープンして、それを16進数でだだーっと書きます。ex0021.cです。 | -今回の最初のプログラムは、いわゆるファイルダンプです。ファイルをオープンして、それを16進数でだだーっと書きます。ex0021.cです。 | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
unsigned char cmdusage[] = { | unsigned char cmdusage[] = { | ||
0x86, 0x50, | 0x86, 0x50, | ||
Line 14: | Line 14: | ||
0x40 | 0x40 | ||
}; | }; | ||
+ | |||
void sethex(char *s, int i, int n) | void sethex(char *s, int i, int n) | ||
{ | { | ||
Line 27: | Line 27: | ||
return; | return; | ||
} | } | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 69: | 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 83: | 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 146: | 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 152: | Line 152: | ||
0x40 | 0x40 | ||
}; | }; | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { | ||
Line 165: | 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 180: | Line 180: | ||
-ということで作ってみたex0024.cです。 | -ということで作ってみたex0024.cです。 | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
unsigned char cmdusage[] = { | unsigned char cmdusage[] = { | ||
0x86, 0x51, | 0x86, 0x51, | ||
Line 187: | Line 187: | ||
0x40 | 0x40 | ||
}; | }; | ||
+ | |||
void G01Main() | void G01Main() | ||
{ | { |
(This host) = http://osask.net