カテゴリー「コンピュータ・プログラム」の記事

2012-07-28

LCMapStringのメモ

Windows APIのLCMapString関数は、全角を半角にしたり、逆に半角を全角にしたりするときなどに用いる(他にもあるが割愛)。

LCMapString 関数

このページでは「戻り値には終端の NULL を含む」とあるが、どうも厳密には違うようだ。

ccSrc(マップ元文字列の文字数)に-1を指定すると、lpSrcStr(マップ元文字列のアドレス)がNULLで終わる文字列を指定したとみなされ、戻り値も「変換された文字数+NULL分の1文字」となる。

しかし、ccSrcに文字数を指定すると、戻り値には「変換された文字数」だけが返される。さらにlpDestStr(マップ先バッファのアドレス)にはNULLの付加されていない文字列が格納される。

| | コメント (0) | トラックバック (0)

2010-09-25

プログラムに関する自分用メモ

windowsx.hに収録されているEdit_GetSelマクロでは16ビット分までしか取得できない(戻り値を使うため)。
素直にEM_GETSELメッセージのパラメーターを使うように。

| | コメント (0) | トラックバック (0)

2008-03-27

乱数発生の注意点についてのメモ

C言語で乱数を発生させる時、よく以下のようなコーディングをする。

j = 1 + rand() % 6;

これで1~6の整数を求めるのだが、これだと問題があるらしい。
以下のような記述が推奨されるとのこと。

j = 1 + (int)(6.0 * rand() / (RAND_MAX + 1.0));

なお、int でキャストする前の数式は必ず浮動小数点演算扱いすること。

| | コメント (0) | トラックバック (0)

2007-09-15

文字コードとプログラム

プログラマーをしていると、時折文字コードに悩まされることがある。
有名なところでは、C言語でシフトJISコードの下位バイトが0x5cの文字(「表」や「十」など)を取り扱う際の問題があるが、他にもバージョンの違いによる表示文字の変更など、出会ったときには悪態を付かずにはいられないような物も多い。ましてやWindowsやMacintoshなどが混在したシステムでは、機種依存文字にも気を遣わなければならない。

機種依存文字については、このページがなかなか面白い。
AOTAKA.jp = 日本の文字コードについて (1)通信で嫌われる文字

C言語の0x5c問題(通称「表示問題」)については、手前味噌だがこのページを参照して欲しい。
注意すべき全角文字

| | コメント (0) | トラックバック (0)

2007-09-14

C言語と文字コード

C言語でASCIIコード以外の文字を使う際に役立ちそうなページを見つけたのでメモ。

文字コードに関する覚え書きと実験

C言語だけでなく、Perlでも使えそうだ。

| | コメント (0) | トラックバック (0)

2007-03-10

ChangeISBN ver.0.03a

ココログの本リストの不調対策の為に作ったプログラム、ChangeISBNにバグを見つけたので修正。

ChangeISBN

現在、ココログの本リストは2007年以降に発売された書籍のISBNに対応していない。このプログラムは書籍に記載されている13桁のISBNを10桁のISBNに変換し、入力を補助することができる(ただしWindows用)。

| | コメント (0) | トラックバック (0)

2007-02-22

ChangeISBN ver.0.03

重大なバグを見つけてしまったのと、使い勝手の悪さの解消の為に作り直しました。

ChangeISBN

正しいISBNを入力しても「入力データエラー」を返すというバグが……orz
なので、以前のバージョンは破棄してください。

| | コメント (0) | トラックバック (0)

2007-02-03

ChangeISBN

ソースを見直していたら、とても恥ずかしいバグを見つけてしまったので修正。

「ChangeISBN002b.lzh」をダウンロード

やっぱなまってるなぁorz

(2007/2/22追記)
最新版はこちら

| | コメント (0) | トラックバック (2)

2007-01-31

とりあえず改良してみた

前のものよりは使い勝手がよくなってる……といいなぁ。

「ChangeISBN002.lzh」をダウンロード


(2007/2/1追記)
早速バグを発見してしまったので修正。

「ChangeISBN002a.lzh」をダウンロード

今度こそ大丈夫……なハズ。


(2007/2/3追記)
とても恥ずかしいバグ発見orz
なので公開を中断します。
ちゃんとしたのを作り直したら公開します。


(2007/2/3追記その2)
最新版はこちら

| | コメント (0) | トラックバック (1)

2007-01-25

とりあえず作ってみた

先日の記事で「現行規格のISBNじゃデータ取得できねぇ!」と書いたが、しょうがないので自分で変換プログラムを作ってみた。

「ChangeISBN.lzh」をダウンロード

Windows XP用。それ以外のOSでは動作保証しない。あと、Internet Explorer 6以降も必須(多分)。

なお、結構いい加減に作ったので、バグとか動作不良とかあっても文句言わないよーに。どうしてもって言う人は、ソース貼付してあるんで、自分で直してくれ。


(2007/1/26追記)
記事を読み返したら、どんなプログラムか書いてないことに気付いたorz
現行規格の13桁のISBNを旧規格の10桁のISBNに変換するプログラムです。とはいえ、やっているのは末尾のチェックデジットを旧規格のやり方で算出しているだけなんですけどね。親ウィンドウを作らずに直接ダイアログボックスを表示する方法の練習を兼ねているので、あまりスマートなソースじゃないです。
あと、貼付ドキュメントに書いてませんでしたが、このプログラムはBCCでコンパイルしています。とはいえ、リソース以外は他のコンパイラでもコンパイルできるはずですし、リソースも少し手を加えれば大丈夫なはず。

うぁ、参考文献書くのも忘れてるorz
MSDN Library Japan
猫でもわかるプログラミング
ISBN - Wikipedia


(2007/2/3追記)
最新版はこちら

| | コメント (0) | トラックバック (2)