AB型の変わり者 三流プログラマー 業務の愚痴

[バックナンバー目次] [掲示板] [メルマガ登録・解除] [愚痴系TOPメニュー]

バックナンバー No.65 〜 No.69


[No.65 Ken3、土曜日工場でいろんな汗をかく、、、]
[No.66 **************************************]
[No.67 Ken3、久々C言語の質問にあわてる]
[No.68 Ken3、ソースのコメントについて考える
[No.69 Ken3、指摘メールに考えさせられる]


No.65 2000/05/29
Ken3、土曜日工場でいろんな汗をかく、、、
[ページTOPへ戻る]

<Ken3、土曜日工場でいろんな汗をかく、、、>

目次 1.はじめの挨拶 2.1.44FDでハマル、、、、 3.くたばれ、電気関係の頑固オヤジ、、、 4.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 とある会社に勤める三流PGのKen3です。 このメールマガジンは脚色されているので、 ご注意を、、、(実際と違う内容も含まれているので、) なんか、日刊の愚痴日記っぽくなっている、 毎日愚痴ばっかなので、 みなさん、そろそろあきてきたかなぁ? *みなさんの立場で読んで、笑ってください。  疑問・感想、、指摘、、あったら、メール下さい。 /* * 2.1.44FDでハマル、、、、 */ 9年前、C言語で作成したハカリから重量データ取り込みのシステム、 土曜日、工場のラインが止まっているので現地インストール確認に行きました。 修正した、ソース、EXEをFDに保存し、 念のため、FDが読めないといけないから、 2枚複製を取って、、、持って行きました。 ところが(題名でネタバレの人は、NEC98を知ってるベテランさん?) 持って行ったFDが2枚とも読めない、、、 あれ、、ヤバイ、、と小パニック、、、 冷静になってみてみると、 NEC9801DX?あっ、1.44のFD読めないジャン、、 ヤバイよ。 落着いて、1.44FDを720に変換しようと思い、 工場長にDOS/Vの機械貸してもらいたいのですが? と問い合わせたところ、うちにはIBMのオフコンしか無い? とのこと? おかしいなぁ、、、さっきの世間話で、 本社発注はインターネットの画面からって言ってたジャン。。。 かま かけて、メールはどのマシーンで毎日見ているのですか? とさりげなく問い合わせ、ノートパソコンの存在をつきとめる。 これでOKかなぁ、、と思ったら、 2DDのFDが無いよ、、、 昔の知恵?で、2HDの右側の穴をつぶして、2DDの変わりとする。 なんとか、1.44FDに保存されていた、ソース、EXEを NEC98に持っていくことができました。。。 枠外解説・愚痴 --- 世間話は必要? 現地調整・デバッグなどに行くと、 興味を持ってるのか?ダマって後ろにハリツク人が居る。 何か質問ですか?と言うと、 イヤ、見てるだけです。。。と 心の中では、緊張するから、後ろに居ないでといいたいが、、、 ソースをスクロールさせながら見ているのをチェックしていて、 よくそんなに速く画面の文字読めますね とボソッと一言。 あのね、、、 全て読んでるんじゃなくて、 修正場所へ移動しているだけなんだよ、、、 速読のプロでもそんなに速く読めないって、、 英語ばかりでよくわかりますね、、、 って 英語知らなくてもプログラム組めますよ(知ってたほうがいいけど) この質問も、答えにくい、、、 英語は知らないので、記号だと思ってやってます、、といつも答えてるが、、、 こんな時、いても居なくてもいい、上司が同行していると、 おじさんの相手をしてくれて、楽でいい。 *上司のありがたみが、よくわかった、、、なんてね。  (私も、後輩から先輩が素人の相手してくれて助かったって    言われてるんだろうなぁ〜) /* * 3.くたばれ、電気関係の頑固オヤジ、、、 */ コンベアラインの入替えも同時に行っていたので、 空調が止まっていて、ものすごい暑かった。。。 太っていて、汗をかく私は見ていて、見苦しかった? って、話は、置いといて、 くたばれ、電気関係の頑固オヤジ、、、と今回だけは言いたい。 システム概要を話すと、 配送センターの梱包ラインのシステムで、 出荷時バーコードで出荷ナンバーを読み取り、 その後、荷物の重量をハカリ、ナンバーと重量を保存、 ホストにFDでデータを返すシステムです。 で、3Kg以下は、バンドがけしないって信号があります。 今回修正したのは、ハカリの重量データ取り込み部分なので、 信号系の処理は、昔のままでした。 テスト稼動時、3Kg以下の信号と3Kg以上の信号が 逆になっている、、、とクレームが来る。 そんなはずないですよ、、と答えるが信じてくれない。。。 しかたなく、私がソースを変更し(逆にして)出力する。 テスト稼動OKになる。。。 修正したソースをFDに保存して、さっ帰りますか、、、 と準備中に、シーケンサプログラムのなかで、交差していた? ってわけわかんないこと急に言い出して、 やっぱり、元に戻してくれと、、、 表に出ている仕様書と実際が違ったらしい、、、 で、ソースをまた、元に戻す。。。 自分が間違っていない、、と頑固になるのもいいけどねぇ。 /* * 4.終りの挨拶 */ 今回も失敗談でしたね、、、 今度は、自慢できるような話を?得意気にしたいですね。 三流PG Ken3でした。 *一部の読者の心の中?   毎日、いろいろあって、あきないねぇ、    三流のKen3らしいよねぇ?     サクっと行った、自慢話は無いの?      ---> 体型同様、スマートじゃなくてねぇ(笑)         ソースも無意味に肥大化しちゃって、ダイエット必要?          *プログラマーの性格がソースに現れるってホントですね。

No.66 2003/00/00
***************
[ページTOPへ戻る]

<---->


No.67 2003/06/08
Ken3、久々C言語の質問にあわてる
[ページTOPへ戻る]

<Ken3、久々C言語の質問にあわてる>

サブタイトル、、 ご教授下さいより、、解説できるもんならやってみろのほうが好 目次 1.はじめの挨拶 2.ご教授下さいより、、、解説できるもんならやってみろのほうが好き 3.本題の質問にやっとこたえる 4.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 三流PGのKen3です。 このメールマガジンは脚色されているので、 ご注意を、、、(実際と違う内容も含まれているので、) 今回は、なぜかKen3に来た、 CからVBへの移植の質問について、、書きたいと思います。 *ほんとは、愚痴以外は別に分けたVBAの方に書くんだけど、  今回は、こっちに載せて、反応見てからまとめてみたくて。。。  (なんか、あっちのVBA系は落ちつけなくて、、、) *みなさんの立場で読んで、笑ってください。  疑問・感想、、指摘、、あったら、メール下さい。 /* * 2.ご教授下さいより、、、解説できるもんならやってみろのほうが好き */ まだ、前置き、続きます。 私、変わり者なので(そんなん、いまさら言わなくてもわかってるって?) ご教授下さい、よろしくお願いします の質問より 解説できるもんならやってみろ のほうがなんとなく好きなんだよなぁ、、、 /* * 3.本題の質問にやっとこたえる */ 読者から来た、質問に下記のように答えました。 *足りないところや、ごまかし、あるので、  ご指摘、アドバイスください。 どうしたんですか?まじめな質問くるなんて、、、大丈夫ですか? って、前置きは、これくらいで、 私が今、わかる範囲での回答、書きます。 In message "移植。", >こんちは。ken3。 > >チョット必要に迫られて、C言語で書いたソースを解析してんだけど。 >ワカラン所教えて。(VBに移植する為) >(全てを送るわけには、行かないんで、コードが部分的だけど (笑)) > >1) > > #include   このヘッダーが有れば、LSIコンパイラでも使える? LSIコンパイラでも使える? これは、厳しいかも? > #include    このヘッダーは、何? getch()とか、コンソール系の関数だと思う。 SEEK_CURはstdio.hだと思うけど、 定数とかが入っている、、、 > #include   同上 なに? > #pragma hdrstop    これは、何でしょ? えっ、、 > #define BLOCK_SIZE 32768  これの意味は?VBで言うCONST? だと思って、いいと。 みなさんは、違うっていいそうだけど、、、 >-------------------------------------------- >2) > > #pragma argsused > int main(int argc, char **argv)   > { >*って、ポインタだよね? だけど「**」とは? >この場合、exeにコマンドラインを渡せるって事? >実際のexeでは、1つしか渡せないみたいだけど。 >なんで、引数が2つ? In message "[三流PG No.020] C,VB,Access,Excel ここはどこ?私は誰?", >/* > * 5.C ここはどこ?私は誰? >*/ >最後に、Cです(Ms−DOSコンソール) >----- >#include > >int main(int argc, char *argv[]) >{ > > printf("argv[0] = %s\n", argv[0]); > >} >----- >まだ、講座でやってませんが、Main関数の引数の、 >argvの0番目に、位置が入っていると思います。 > argcってのに、スペースで区切られたExeに渡された引数の数が入るんですよ kutabare.exe new1.txt outdata.txt なんてやると、 argcに2か3*忘れた、、 printf("argv[0] = %s\n", argv[0]); printf("argv[1] = %s\n", argv[1]); printf("argv[2] = %s\n", argv[2]); あと、argvにパラメーターが入ります。 char **argvはかっこいい書き方で、 char *argv[]のほうがKen3流 > if(!(chk_str = findFile(argv[1]))) 上の「**argv」は、これと関係ある?なぜに[1]か? argv[0]にEXEの起動位置が入っていて、 実際の引数は2番目[1]からなんですよたぶん。 予想、、、ファイル名をEXEの引数で渡して、なんかやってんの? >-------------------------------------------- >3) > > LPSTR findFile(const char *filename) LPSTRとは? LPSTR?なんだっけ?そんなのあった? if(!(chk_str = findFile(argv[1]))) でやってるから、 リターンでLPSTR型を返している? chk_strの型宣言、見てください。 > FILE *file; > char *buff = 0  これは、ポインタ宣言と、初期化を同時実行? > size_t rc;     これは、なに? まぁ、このへんは、あまり気にしないで、、 > prot_file = fopen(filename, "rb");  これは、バイナリでオープンだよね? だと思う。 > buff = (char *)malloc(BLOCK_SIZE); これの意味は? メモリを動的に取っているんですよ。 #define BLOCK_SIZE 32768 分、バッファを取っているんじゃない? 32768?16進に直すときりいいのかなぁ? > rc = fread(buff, 1, BLOCK_SIZE, file);  引数のそれぞれの意味は、なに? バッファへファイルから、読んでいると思えばいいと、、 1 * BLOCK_SIZE 分 file から読んで、buffにセット > fseek(file, -32, SEEK_CUR);    同上。でも、「SEEK_CUR」の宣言は、ないんだけど(汗)。 SEEK_CURはstdio.hとか、ヘッダファイルに定義されていると思う。 で、現在位置(ファイルの)から、32バイト分戻ってるみたいですね。 -32Lだと思うけど、、まぁ、いっか。 >  continue; これはなに? これ、ループの頭に戻る命令です。 例)1〜10までだけど、5だけ後処理したくない   for(i=1 ; i <= 10; i++) {     前処理 if (i == 5) { continue; これで、5の時は、下の処理しないでforに戻る             たしか、VBAには無くて、いろいろなとこで話題になってる?             break; は exit doなどあるから、、、わかりやすい? }     後処理 } > s = strchr(buff, '\"'); これの意味は? VBAのinstrと同じじゃないかなぁ? ”の位置を探して、何かしているとか? >-------------------------------------------- >4) > > va = strtol(sa, 0, 16); この関数は、なに? strtol?知らないなぁ、、 予想ですが、文字列をLong型にしているとか、、、 でも、それなら、atolがあるしなぁ、、 strtolって、関数、自作されてないか(標準関数以外?)みてください。 また、Vaの型宣言や、使われているところから、判断? saの変数は?0,16って? 16進の文字列を直しているとか? > CharToOem(str, s); もしかして、Winの関数?  これも、、、わからない、、、 またまた、予想? 文字列の連結とか置き換えとか、、自作関数では? >ちゅう訳で、たのんます。 まぁ、こんな感じで、、、簡単な回答です。。。 /* * 4.終りの挨拶 */ なんか、こっちの愚痴マガに書くほうが、 落ち着くなぁ、、、 もう一つのVBA系のほうは、なんかノリが悪くって、、、 *2つ(両方)読んでる人、、、重なってすみません。。。 continueの話とか、 ネタもらったし、まじめにVBA系も書くかなぁ、、、 三流PG Ken3でした。

No.68 2000/06/09
Ken3、ソースのコメントについて考える
[ページTOPへ戻る]

<Ken3、ソースのコメントについて考える>

目次 1.はじめの挨拶 2.と、その前に、ご教授下さいファンに一言? 3.ソースのコメントについて 4.おわりの挨拶 枠外:読者からの補足メールいただきました(感謝です) ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 三流PGのKen3です。 このメールマガジンは脚色されているので、 ご注意を、、、(実際と違う内容も含まれているので、) バーチャルカンパニーです。(←それにしては、リアル?) 今回は、 前回、CからVBへの移植?の質問を受けた時、 なんとなくソースファイルのコメントについて書きたくなったので、 書きます。 *みなさんの立場で読んで、笑ってください。  疑問・感想、、指摘、、あったら、メール下さい。 /* * 2.と、その前に、ご教授下さいファンに一言? */ ソースのコメントのこと書く前に、前置き、続きます。 >私、変わり者なので(そんなん、いまさら言わなくてもわかってるって?) >ご教授下さい、よろしくお願いします >の質問より >解説できるもんならやってみろ >のほうがなんとなく好きなんだよなぁ、、、 と 前回書いたら、 教えてもらうのでご教授下さいがいいのでは?(妥当では?) と ご教授ファンの人からや、 初対面の作者に馴れ馴れしく質問書く人なんか居る? と 一般常識さんから メールをいただきました。 確かに、馴れ馴れしく 、 軽いノリの質問 を 初対面の人に書けない気持ちは、わかりますが、 ご教授下さい、、、まで言わなくてもいいでしょ?が私の素直な気持ちです。 インターネットのマナー?に質問時は、ご教授下さいって載ってるのなぁ? >解説できるもんならやってみろ は、Ken3流の言いすぎですが、 私は軽いノリの質問のほうが好きです。 まぁ、三流君Ken3の感じ方なので、あまり気にしないでください。 でも、ご教授下さい、、、は、好きじゃないなぁ(オイオイしつこいって、、) /* * 3.ソースのコメントについて */ 人が作成したプログラムや自分が過去作成したシステムを 移植する時や解析時、 仕様書がしっかりも大切ですが、 ソースファイルにキレイナコメントが載っていると 後々わかりやすいと思います。 (*ニセのうそつきコメントにだまされた、、って逆作用もあったけど、、) 下記、Cで昔作成したソースの一部です。(土曜日ハマッタ工場の修正) /* テンポラリファイル作成 */ #include #include #include #include void sk_fsave(fname) char *fname; { FILE *ifp; /* 入力ファイルポインタ */ FILE *ofp; /* 出力ファイルポインタ */ int i, n, c; int ret, sw; long r_cnt; char in_buf[40]; /* 入力バッファ */ char out_buf[40]; /* 出力バッファ */ static char cr_lf[2] = { 0x0d, 0x0a }; memset(&in_buf[0], 0x00, 40); ifp = fopen(fname, "r+b"); /* ファイルオープン */ ofp = fopen("temp", "w+b"); r_cnt = 0L; ret = fread(&in_buf[0], 32, 1, ifp); /* データ1件読み込み */ while(ret == 1) { /* データがなくなるまで */ if(in_buf[19] == '0') { /* 転送チェック */ memset(&out_buf[0], ' ', 32); memcpy(&out_buf[0], &in_buf[0], 11); n = fwrite(&out_buf[0], 30, 1, ofp);/* テンポラリへ出力 */ n = fwrite(&cr_lf[0], 2, 1, ofp); /*ファイルポインタを戻す */ sw = fseek(ifp, r_cnt * 32L, SEEK_SET); in_buf[19] = '0'; n = fwrite(&in_buf[0], 30, 1, ifp); /* フラグの書き込み */ n = fwrite(&cr_lf[0], 2, 1, ifp); sw = fseek(ifp, r_cnt * 32L + 32L, SEEK_SET); } memset(&in_buf[0], 0x00, 32); ret = fread(&in_buf[0], 32, 1, ifp); /* データ1件読み込み */ r_cnt = r_cnt + 1L; } fclose(ifp); /* ファイルクローズ */ fclose(ofp); } みなさんからも、参考意見いただきたいのですが、 私が感じたことを書きます。 (*例がC言語ですが、VBAなどでも同様だと思います) ア.関数の情報として必要な項目は? 頭に記載すべき?情報は? void sk_fsave(fname) char *fname; { としか、書いてない。 a.処理概要が必要?(フラグの立っていないデータを抽出するなど?) b.入力引数の説明(char *fname;まぁ、みればなんとなくわかるけど) c.リターン値(このサンプルでは、無いけど) イ.あたりまえのコメントはいらない?   私がそうなのですが、   簡単にコメント付けられる部分にだけ、コメントつけてます。 FILE *ifp; /* 入力ファイルポインタ */ FILE *ofp; /* 出力ファイルポインタ */ ifp = fopen(fname, "r+b"); /* ファイルオープン */ ofp = fopen("temp", "w+b");   など、、、   このへんは、みればそのままなので、コメントはいらない?   まぁ、さびしいので、あってもいい?って考えもありますが、、、   極論だと、   i++; i = i + 1; // iを1増やす   なんてコメントはイラナイよね。。。 ウ.素直な日本語を書こう? ret = fread(&in_buf[0], 32, 1, ifp); /* データ1件読み込み */ while(ret == 1) { /* データがなくなるまで */   さすがにここを、retが1の間ループとは、書かなかったが、   /* データがなくなるまで */   と書いてます。。。これでもいいのだが、   while( fread(&in_buf[0], 32, 1, ifp) == 1 ) {   データが読めている間と書いた方が、わかりやすかったかも? 現在の自分から未来の自分自身へ ただ、動くだけじゃなく、キレイナソース書こうね。。。 またまた、言うは容易く行い難し、、、って言葉しってる? あと、仕様書もセットでね。。(ハイハイ、、、) ソース、コメント関係の参考意見、待ってます。 etc.バグ見っけ、、(過去のナマイキなKen3さんへ) sw = fseek(ifp, r_cnt * 32L, SEEK_SET); in_buf[19] = '0'; n = fwrite(&in_buf[0], 30, 1, ifp); /* フラグの書き込み */   昔の自分へオイオイ、、、、   in_buf[19] = '0'; じゃ、フラグ立ってなくて、次来た時もtempファイルに書いちゃうじゃん   in_buf[19] = '1';   じゃないの、、、まぁ、いっか。。。   クレームないし、中間チェック機能を使っていないのでしょう。   *このファイル作成タイミングは、作業終了時に(1直2直交代時?)    チェックリスト出力ようのファイルを生成、    (出力済みのデータを出さないためにフラグを立てているんだけど。。。) /* * 4.終りの挨拶 */ ヤッパ、こっちの愚痴マガに書くほうが、落ち着く。 なんて言ってないで、、、、 三流PG Ken3でした。
枠外通信? 愚痴マガ読者のTさんより、アドバイス、補足メールいただきました '----------------------------------------- >こんにちは、愚痴マガ読者の**です。 > >いつも楽しく読ませてもらっています。 >説明入れておきます。 > >> > #include   このヘッダーが有れば、LSIコンパイラでも使 >える? >> >> LSIコンパイラでも使える? >> これは、厳しいかも? > >コード生成の方法が違うので、16/32ビットに関わらず、LSI-Cでは使えません。 > >> > #include   同上 >> >> なに? > >これは解りません。少なくとも私の持っているコンパイラにはそのような >ヘッダファイルはありません。 > >> > #pragma hdrstop    これは、何でしょ? >> >> えっ、、 > >このプラグマは、プリコンパイル済みヘッダファイルを作成/使用するときに、 >ここまでプリコンパイルする(されている)ことをコンパイラに知らせるための >ものです。 > >プリコンパイル済みヘッダファイルとは、ヘッダファイルを途中まで >コンパイルした中間コードのダンプファイルです。 >これを作成して使用することにより、何度も同じヘッダファイルを >コンパイルするのに対して、コンパイル時間を大幅に短縮することが >可能になります。 > >VBにはそのような機能は無いので、移植の際に気にする必要は無いでしょう。 > >> >-------------------------------------------- >> >3) >> > >> > LPSTR findFile(const char *filename) LPSTRとは? >> >> LPSTR?なんだっけ?そんなのあった? >> if(!(chk_str = findFile(argv[1]))) >> でやってるから、 >> リターンでLPSTR型を返している? >> chk_strの型宣言、見てください。 > >LPSTRはwindows.hで定義されている型です。char *(16ビットなら >char __far *)のtypedefです。 > >> >-------------------------------------------- >> >4) >> > >> > va = strtol(sa, 0, 16); この関数は、なに? >> >> strtol?知らないなぁ、、 >> 予想ですが、文字列をLong型にしているとか、、、 >> でも、それなら、atolがあるしなぁ、、 >> strtolって、関数、自作されてないか(標準関数以外?)みてください。 >> また、Vaの型宣言や、使われているところから、判断? >> saの変数は?0,16って? >> 16進の文字列を直しているとか? > >atolは10進数のみ変換可能です。strtolは16進数なども変換可能です。 > >> > CharToOem(str, s); もしかして、Winの関数?  >> >> これも、、、わからない、、、 >> またまた、予想? >> 文字列の連結とか置き換えとか、、自作関数では? > >WindowsAPI関数です。OEM定義の文字列に変換します。 > >それでは、メルマガ頑張って下さい。 strtol,CharToOem、、、あれ、標準関数だったのね、、 てっきり、自作関数かなぁ?なんて書いちゃって、 また、無知がバレちゃったけど、まぁ、Ken3らしくっていいかな?

No.69 2003/06/10
Ken3、指摘メールに考えさせられる
[ページTOPへ戻る]

<Ken3、指摘メールに考えさせられる>

目次 1.はじめの挨拶 2.と、その前に、また、ご教授下さいファンに一言? 3.調べないで、いいかげんなこと書かないでほしい 4.おわりの挨拶 枠外:読者からの質問メールです ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 今回は、 読者より受け取ったメールで 私が、ハッと思ったことを書きます。 *反面教師?としてください。 *みなさんの立場で読んで、笑ってください。  疑問・感想、、指摘、、あったら、メール下さい。 /* * 2.と、その前に、また、ご教授下さいファンに一言? */ と、その前に、また、ご教授下さいファンに一言? 引用OKさんより(引用しないけど) ご教授下さい でも よろしくお願いします どちらでも、 なんでもいいだろ、 素人相手に天狗になってんじゃないの? ^^^^^^^^^^^^^^^^ と、ご意見いただきました。 まぁ、たしかに、関係ないですね。 *最後が、ご教授下さい でも ヨロシクでも、  質問の内容にはゼンゼン関係ないですね。(質問は同じですね) /* * 3.調べないで、いいかげんなこと書かないでほしい */ 調べないで、いいかげんなこと書かないでほしい と びいさんより メールをいただきました。 読むと、作者の私としては、ドキッとすること書いてあります。 チョット軽い気持ちで調べないで、 あいまいな自分の記憶や経験で書いていたので、少し反省です。 *自分が知らない(strtol)のは標準関数以外?かなぁなんて、 よく言えたよね(よく書けたよねそんなこと) 下記、びいさんよりいただいたメールです。 読者の方にも何か参考になると思い、いただいたメールを載せます This is forwarding message... On Thu, 8 Jun 2000 12:40:00 +0900 mag2 ID 0000019869 wrote: いや、だから…。 「知らない」というのは全然恥ずかしいことではないのですよ。 でも「調べない」というのはどうかと…。 以前の[No.52]へのチャチャ入れでも書きましたが、 |そういう資料を読めない探せない、見つけることができない、というようではプ |ロとしては失格でしょう。 と。 また、解らないなら解らないでそう書くべきです。当てずっぽや推測を書いてし まうのでは単なるいいかげんな人です。 > > #include   このヘッダーが有れば、LSIコンパイラでも使える? > > LSIコンパイラでも使える? > これは、厳しいかも? 御意。まずLSIコンパイラというのがなんなのか解りません。LSI-C86のことでしょ うか。 また、使えるというのは? LSIコンパイラというコンパイラでコンパイルできれば Visual Basicに移植しなくてもいい、ということ? 「使える」という言葉の主語 は何でしょうか。何が使えるのかさっぱり解りません。 非常に厳しいといわざるをえないでしょう。 > > #include    このヘッダーは、何? > getch()とか、コンソール系の関数だと思う。 御意。 > > #include   同上 > なに? コレってANSI標準ではなかったと思います。 名前からするとconio.hで用いてるdefineが記述されているのかもしれませんが解 りません。何のコンパイラで使っていたヘッダでしょうか。 コンパイラのマニュアルを見たほうが早いと思います。 > > #pragma hdrstop    これは、何でしょ? > えっ、、 pragmaは処理系依存です。正確な意味はコンパイラのマニュアルを見るしかあり ません。 Visual C++ではプリコンパイルドヘッダの制御に使いますが、使っているコンパ イラってVisual C++ですか ?さっき出てきたLSIコンパイラとは何の関係が…。 謎が深まってしまいました。 > > #define BLOCK_SIZE 32768  これの意味は?VBで言うCONST? > だと思って、いいと。 御意。 > みなさんは、違うっていいそうだけど、、、 確かに他にも用途はありますが、これは定数として用いているのだと思います。 > >*って、ポインタだよね? だけど「**」とは? > >この場合、exeにコマンドラインを渡せるって事? > >実際のexeでは、1つしか渡せないみたいだけど。 > >なんで、引数が2つ? Cの決まりです。 実行ファイルの引数の数というのは、決まっていません。 どんな実行ファイルでも動かせるようにCでは ・引数の数 ・引数の配列 の二つをmain()関数の引数にしています。 それが int argc(引数の数) char **argv(引数の配列)です。 **ということはあまり気にしないで、 argv[1]で一つめの引数(文字列) argv[2]で二つめの引数(文字列) が受け取れる、と考えておけばOk。なんで**なのかということはC言語で文字列の 扱いを調べてください。 argcが3だと、argv[0]、argv[1]、argv[2]、の三つが使えます。argv[3]はNULLに なっています。argv[4]にアクセスするとコケます。 ちなみにargv[0]には実行ファイルのファイル名が入っています。 > argv[0]にEXEの起動位置が入っていて、 > 実際の引数は2番目[1]からなんですよたぶん。 起動位置というのが解りませんが、最後の「たぶん」というのが気になります。 調べていないのですか?調べないで回答していますか? > > LPSTR findFile(const char *filename) LPSTRとは? > LPSTR?なんだっけ?そんなのあった? windows.hでincludeでしているwinnt.hでtypedefしているハズです(32ビットの場 合)。 char*かwchar_t*になります。 > > char *buff = 0  これは、ポインタ宣言と、初期化を同時実行? 御意。個人的には char *buff=NULL;としたいところです。0でも問題はありません。 > > size_t rc;     これは、なに? size_tという型があります(stdio.hで定義)。fread()がsize_tを返してくるので ソレに合わせたのでしょう。 size_tは整数型ですが、intなのかlong intなのかという細かいところはコンパイ ラによって違います。ですから、今使っているコンパイラがintで問題ないからと いってintにすると、コンパイラを変えた時に痛い目にあいます。 ソレがイヤならsize_tにしておきましょう。 > > prot_file = fopen(filename, "rb");  これは、バイナリでオープンだよね? > だと思う。 だと「思う」では不安です。よく解らないなら調べたほうが安全です。 これはバイナリ読み込み専用オープンですね。 > > buff = (char *)malloc(BLOCK_SIZE); これの意味は? > > メモリを動的に取っているんですよ。 こっちでは「思う」とか書かずに断言していますから、知っている内容は調べず に回答している、知らない内容は調べないでいいかげんなことを書いていると思っ てしまいます。 > 32768?16進に直すときりいいのかなぁ? 32Kジャストでキリはいいですね。 > SEEK_CURはstdio.hとか、ヘッダファイルに定義されていると思う。 > で、現在位置(ファイルの)から、32バイト分戻ってるみたいですね。 御意。 > -32Lだと思うけど、、まぁ、いっか。 ちゃんとstdio.hをincludeしてあれば-32と書いてもOkです。コンパイラが正しく 変換します。 > > s = strchr(buff, '\"'); これの意味は? > > VBAのinstrと同じじゃないかなぁ? > ”の位置を探して、何かしているとか? buffに格納されている文字列を先頭から検索して「"」を探します。 見つからなかったらNULLを返します。 ですからあとでsを確認してエラーチェックしないといけません。 無条件にstrcpy(buff, s)とかいう感じでsを使ってしまうとコケます。 > > va = strtol(sa, 0, 16); この関数は、なに? > strtol?知らないなぁ、、 > 予想ですが、文字列をLong型にしているとか、、、 > でも、それなら、atolがあるしなぁ、、 atol()は十進数の文字列("100"とか)専用です。 strtol()は引数で何進数の文字列かを指定できます。この場合は十六進数として 変換します。 ここも個人的には va=strtol(sa, NULL, 16);と書きたいところ。 きっとsaには「89AB」とか入っているのでしょう。 > strtolって、関数、自作されてないか(標準関数以外?)みてください。 標準関数です。 > > CharToOem(str, s); もしかして、Winの関数?  > > これも、、、わからない、、、 WindowsAPIです。 とにかく、ちょっち調べれば解ることが書かれていなかったりいいかげんなこと が書いてあったりして残念です。 全部覚える必要は全くありませんが、覚えていないからといっていいかげんなこ とを書くのはどうかと思います。 --びい /* * 4.終りの挨拶 */ >ヤッパ、こっちの愚痴マガに書くほうが、落ち着く。 なんて安易な気持ちで書いていたのが、、、、、 それと、質問してくる人は、 ご教授下さい とか言葉関係なく、真剣なのに、、、依頼の方法が好きじゃない なんて、えらそうに書いてしまい。。。 今回も、指摘メールに考えさせられた、三流PG Ken3でした。 ------------------------------------------------------------------ このメールマガジンを解除するには、お手数ですが、 http://rap.tegami.com/mag2/m/0000019869.htm にいって、あなたのメールアドレスを入れて、解除のボタンを押してください。 ------------------------------------------------------------------

ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

質問や要望など メッセージを送る(三流君に連絡する)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)


急ぎで連絡がほしい、そんな時は:[三流君連絡先アドレス]を見て連絡してください。

リンクや広告など

項目別に↓に本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]